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:
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
3 - Na página Schedules adicionar um novo item e informar os valores conforme desejado:
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.
Outras informações
Fonte: Rainmakers Team