Breadcrumbs

Como configurar a limpeza e manutenção em Banco de Dados Não Particionado (Standard)?

Introdução

Como configurar a limpeza e manutenção em Banco de Dados Não Particionado (Standard)?

Passo a passo

Olá.

Os jobs/scripts de limpeza e manutenção de Banco de Dados Particionados são criados de forma automática, porém em bancos não particionados, ou seja “Standard” anteriores a versão 4.8.4.0 deve ser criado de forma manual. Tentarei deixar o mais claro possível este procedimento. Como exemplo irei utilizar o SQL Server 2008 R2 “Standard” e a versão 4.8.3.0 do NFC-e.

Limpeza:

Primeiramente deve-se encontrar o script de criação da estrutura de limpeza de banco conforme a versão do banco de dados e do NFC-e, que no nosso caso está no seguinte caminho:

\\172.31.255.10\NDDigital\NDDigital\Produtos\e-Forms_NFCe\4.8\Arquivo de Programas\4.8.3.0\Banco

O arquivo correto para o nosso exemplo é o “DDL Limpeza SQL 2008.sql”.

Antes de executar este script deve ser trocado o nome do banco de dados nas tags

Na tabela TBPARLIMDOCS irão constar os parâmetros de configuração da rotina de limpeza e deve ser inserido os valores conforme os campos:

DiaVidDoc – Estabelece o tempo de vida em dias do documento dentro do ambiente de processamento. Assim sendo, apenas os documentos que estiverem na base há mais tempo do que o estipulado nesta coluna serão excluídos.
Ex:
Se a coluna DiaVidDoc estiver preenchida com o valor 1, todos os documentos que possuam mais do que um dia de vida na base serão excluídos;

QtdRegLimLoo – Para evitar o travamento da tabela, a exclusão dos documentos é executada aos poucos dentro de um looping. O campo QtdRegLimLoo determina quantos documentos serão excluídos por execução;

TemAtrLoo – Este parâmetro define o tempo de espera entre as iterações do looping.
Ex:
Se o QtdRegLimLoo for definido com valor 1000 e o TemAtrLoo foi definido com valor ‘00:10:00.0000000’, a cada dez minutos será tentado apagar 1000 documentos. A operação irá parar quando o QtdRegLimLoo ou o TemAtrLoo for atingido;

TotDiaExc – Este parâmetro define a quantidade de dias que serão apagados em cada execução do script. Isto significa que a cada execução do script serão apagados todos os documentos que estiverem dentro deste intervalo a partir do primeiro documento.
Ex:
Se o TotDiaExc for definido com valor 15, os documentos dos 15 dias seguintes ao primeiro documento serão excluídos;

BulkLogged – Se este campo possuir valor 1 o tipo de recovery model será alterado para BulkLogged. Após o termino da execução o recovery volta para a opção FULL. Caso não deseje que o tipo de recovery seja alterado informe valor 0;

LimTLog – Especifica se o Transaction Log deve ser limpo ou não. Valor 1 para SIM e 0 para NÃO;

TipLimTLog – Este campo é referente ao tipo de limpeza do transaction log. Sendo que ele pode ser realizado pelo próprio job, neste caso no campo deve ser informado o valor PROC. Caso esse campo possua valor nulo será chamado outro job (informado no campo NomJobTLog) para realizar o trabalho de backup;

DirBkpTLog – Local onde o backup do Transaction Log será salvo;

NomJobTLog – Neste campo deve ser informado o nome do Job que executará o script de limpeza do Transaction Log;

MsgLog – Este parâmetro define se serão mostradas mensagens no log;

Em anexo segue script de exemplo de inserção da tabela de parametrização.

Por fim, deve ser criado o Job de Limpeza:

1 - No SQL Management, na paleta do Object Explorer, no item Jobs, dentro de SQL Server Agent adicionar um novo Job. Preencher os dados conforme o exemplo abaixo:

image-20221130-031739.png

2 - Na página Steps adicionar um novo item e preencher os campos conforme o modelo abaixo. O que irá iniciar todo o processo de limpeza será o procedimento “limpa_registros_expirados”, portanto deve ser executado o mesmo no “Comando” do Job:
exec limpa_registros_expirados

image-20221130-031749.png

3 - Na página Schedules adicionar um novo item e informar os valores conforme desejado:

image-20221130-031754.png

4 - A configuração do job está pronta e será executada automaticamente todos os dias às 23:00 hrs.

Manutenção:

Primeiramente deve-se encontrar o script de criação da estrutura de manutenção de banco conforme a versão do banco de dados e do NFC-e, que no nosso caso está no seguinte caminho:

\\172.31.255.10\NDDigital\NDDigital\Produtos\e-Forms_NFCe\4.8\Arquivo de Programas\4.8.3.0\Banco

O arquivo correto para o nosso exemplo é o “DDL Manutencao Sql2005e2008.sql”.

Na versão 4.8.3.0 não há a tags

Na tabela TBPARMANDB irão constar os parâmetros de configuração da rotina de manutenção e deve ser inserido os valores conforme os campos:

LimTLog – Especifica se o Transaction Log deve ser limpo ou não. Valor 1 para SIM e 0 para NÃO;

TipLimTLog – Este campo é referente ao tipo de limpeza do transaction log. Sendo que ele pode ser realizado pelo próprio job, neste caso o campo deve ser informado o valor PROC. Caso esse campo possua valor nulo será chamado outro job (informado no campo NomJobTLog) para realizar o trabalho de backup;

DirBkpTLog – Local onde o backup do Transaction Log será salvo;

NomJobTLog – Neste campo deve ser informado o nome do Job que executará o script de limpeza do Transaction Log.

Em anexo segue script de exemplo de inserção da tabela de parametrização.

Nos Jobs a serem criados deve ser executado o comando com os seguintes parâmetros:

Reorganização dos índices do connector ou cold onde

•@BASE: Especifica se a manutenção ocorrerá para todas as bases de dados ou uma base de dados específica. Para todas informar o valor “TODAS”, se for uma informar o nome dela;
•@DIF_MIN Janela de manutenção em minutos a partir do momento de execução da procedure. Definir a quantidade de minutos que a procedure deve permanecer em execução definindo assim sua janela de manutenção;
•@MED_FRAG Percentual de fragmentação que o índice deve ter para ter manutenção. Qualquer índice que tiver fragmentação igual ou superior a especificada receberá manutenção.

SUGESTÃO:
•@MED_FRAG=10 - Fragmentação abaixo disso não chega a comprometer o desempenho;
•@DIF_MIN = 180 – Tempo suficiente para reorganizar todos os índices.

Atualização das estatísticas do connector ou cold onde

•@BASE Especifica se a manutenção ocorrerá para todas as bases de dados ou uma base de dados específica. Para todas informar o valor “TODAS”, se for apenas uma informar o nome dela;
•@DIF_MIN Janela de manutenção em minutos a partir do momento de execução da procedure. Definir a quantidade de minutos que a procedure deve permanecer em execução definindo assim sua janela de manutenção;
•@DUPD_STATS Quantidade de dias a partir da data atual que define se a estatística está desatualizada;
•@VNULL Quando S todas as estatísticas são atualizadas, inclusive estatísticas que nunca foram atualizadas ou estatísticas que não necessitam atualização.

SUGESTÃO:
•@DIF_MIN = 180 - Tempo suficiente para atualizar todas as estatísticas;
•@VNULL = “s” para a primeira execução (manual) e no agendamento “n”;
•@DUPD_STATS = 6 - No caso da manutenção ocorrer semanalmente.

Lembrando que os “Jobs de Manutenção” devem ser executados no banco “master” na versão 4.8.3.0.

Scripts_Parametrizacao.zip

Outras informações

Fonte: Rainmakers Team