Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

O que é

O Sispetro SisPetro tem mais de 20 anos de história e alguns clientes possuem bancos de dados com informações também a esse tempo. Com isso, o tamanho do banco de dados acaba sendo grande, seja para cópias, backups ou até mesmo para a performance de acesso. Como legalmente a empresa só é obrigada a manter 5 anos de dados, é possível retirarmos os dados antigos para poder ter um banco menor no dia-a-dia. Esse Essa extração dos dados antigos é o que chamamos de Arquivo Morto.

Primeiro, é necessário entender que não ocorrerá uma divisão do banco de dados, tendo dados antigos em um e dados atuais em outro banco. O que faremos é extrair dados a partir de uma data especificada para tenhamos um banco menor para uso Desta forma teremos o banco original, e o banco novo ao qual seguirá apenas com dados extraídos a partir da data de corte, este banco novo será menor para utilização no dia-a-dia. O banco anterior, contendo todos os dados, inclusive os dados até a data do trabalho, deve ser armazenado para consultas esporádicas de dados antigos. Veja o gráfico abaixo:

Gliffy
imageAttachmentIdatt3897884729
macroIdbdfeaaaf-6b07-44a8-98b5-96c9459694ee
baseUrlhttps://futura.atlassian.net/wiki
nameBancoLinhaTempo
diagramAttachmentIdatt3898376249
containerId3898900579
timestamp1638283369982

...

Considerando que o tempo desejado para permanência dos dados seja de 5 anos, a empresa está trabalhando com o banco “A” e no final de 2021 ela aplica o trabalho de Arquivo Morto gerando o banco “B” que conterá dados a partir de 2016 e será utilizado até o final do ano de 2022.

Em 2022, nesse banco “B” se aplica o trabalho de Arquivo Morto gerando o banco “C” que conterá dados a partir de 2017 e será utilizado até o final do ano de 2023 e assim sucessivamente.

...

  1. Subir o Banco de Dados Original

  2. Verificar se existem baixas bloqueadas anteriores ao período da data de corte que será utilizada, para isso:

    1. Fazer o seguinte select:

      Bloco de código
      Select b.CodEmpresa, cpr.NumLancamento, b.Tipo,b.DataProgDesbloqueio, b.NumBaixa, b.DtBaixa, ent.CodEnt, ent.RzSocial From Entidade as ent 
        Inner Join ContasPagarReceber as cpr on ent.CodEnt = cpr.Comprador
        Inner Join ItensBaixa as ibx on ibx.CodEmpresa = cpr.CodEmpresa and ibx.NumLancamento = cpr.NumLancamento
        Inner Join Baixa b on ibx.CodEmpresa  = b.CodEmpresa and ibx.NumBaixa = b.Numbaixa
      Where ibx.Bloqueado = 1 
        and ibx.Cancelado = 0 
        and b.DtBaixa < DATACORTE order by b.codempresa,b.tipo,b.DataProgDesbloqueio
    2. Para o parâmetro da Data_Corte, utilizar o padrão AAAAMMDD, como por exemplo '20170101' (01/01/2017)

    3. Caso esse select retorne dados, deverá antes de prosseguir efetuar o desbloqueio dessas baixas conforme: Desbloqueio Manual de Baixa

  3. Atualizar banco de dados com últimos scripts do SisPetro

  4. Criar a PASTA_BD_ORIGINAL com 2 subpastas: dat, datArqMorto

  5. Abrir o script anexo ScriptAtualizarSaldos_v2.sql e substituir onde consta AAAAMMDD com a Data de Corte a ser utilizada nesse banco de dados.

  6. Rodar o script ScriptAtualizarSaldos_v2.sql no Banco Original.
    Os
    Nota: os passos 5 e 6 serão úteis para conferir os saldos de algumas tabelas no processo de testes do Arquivo Morto nos passos 13 e 14.

  7. Gerar unload de todo o banco com a estrutura e dados, conforme: Passos para Unload e Reload de Banco de Dados do Cliente Interagindo entre as etapas
    a) Salvar o arquivo reload.sql em PASTA_BD_ORIGINAL

    b) Salvar os arquivos .dat em PASTA_BD_ORIGINAL\dat.

  8. No DbiSql (conectado no banco de dados original) executar o comando:

    1. call ArqMortoExportaDadosFora(

    :
    1. Data,

    :
    1. PastaDats,

    :
    1. GeraDados,

    :
    1. NumLoops,

    :
    1. GeraArquivo,

    :
    1. NomeArquivo,

    :

    1. ModoLog)
      Onde deverá alterar os

    paramêtros
    1. parâmetros conforme explicação abaixo:

    a)
      • Data:

    Data
      • data de corte. Ex. 20170101 (utilizar esse padrão AAAAMMDD para evitar que o banco tenha que fazer sua conversão)

    b)
      • PastaDats:

    Pasta
      • pasta onde a procedure irá gerar os arquivos .dat. Ex: PASTA_BD_ORIGINAL\datArqMorto

    c)
      • GeraDados:

    Marca
      • marca se deverá gerar automaticamente os arquivos .dat na stored-procedure. Por padrão sempre enviar como 1.

    d)
      • NumLoops:

    Define
      • define por quantas vezes a stored-procedure tentará ajustar os registros órfãos. Por padrão sempre enviar como 10.

    e)
      • GeraArquivo:

    Define
      • define se irá gerar o arquivo contendo o script com os comandos utilizados para gerar os arquivos .dat. Para um primeiro teste em ambiente de teste é aconselhável passar esse parâmetro como 1 e posteriormente poderia ser passado como 0. Obs: Em casos de problema com o Arquivo Morto, será esse arquivo que irá auxiliar o Suporte a identificar o motivo da falha no processo.

    f)
      • NomeArquivo:

    Nome
      • nome a ser utilizado para o arquivo de script dos comandos para geração de arquivos .dat. Esse parâmetro só necessita ser informado caso o parâmetro anterior seja informado como 1.

    g)
      • ModoLog:

    Define
      • define como será apresentado o andamento do processo. Ao informar o valor 0 (Padrão) as mensagens serão apresentadas no próprio DbiSql (Essa opção é incompatível com o DBISQL da versão 17 do Sybase, pois a aba de mensagens foi removida), já ao informar o valor 1 as mensagens serão enviadas para o console do banco de dados.

  9. Fazer cópia dos arquivos PASTA_BD_ORIGINAL\datArqMorto para a pasta PASTA_BD_ORIGINAL\dat (deve substituir todos repetidos).

  10. Gerar um banco vazio, conforme KB: Criação de um novo Banco de Dados Vazio

  11. Inicializar o banco na pasta PASTA_BD_NOVO

  12. No DbiSQL (conectado no banco novo) rodar PASTA_BD_ORIGINAL\reload.sql

  13. Abrir o script anexo ScriptVerificarSaldos_v2.sql e substituir onde consta AAAAMMDD) com a Data de Corte a ser utilizada nesse banco de dados.

  14. Rodar o script ScriptVerificarSaldos_v2.sql no Banco Novo. Não deve retornar nenhum dado. A verificação é feita para os períodos anteriores à data de corte.

    Essa verificação garante que os saldos estão íntegros após a extração dos dados, considerando a Data de Corte utilizada. Qualquer dado retornado deve ser encaminhado para análise do Desenvolvimento e impedir a execução do processo em produção.


    Para mais informações, ver:
    Passos para Unload de Banco de Dados
    Criação de um novo Banco de Dados vazio