ERP - Performance/Lentidão/Travamentos - Como efetuar a coleta de Trace em banco de dados Microsoft SQLServer
Dúvida
Como efetuar a coleta de Trace em banco de dados Microsoft SQLServer?
Solução
Importante
- A coleta do Trace deve ser realizada pelo DBA da sua empresa. Já a parte da execução do processo dentro do sistema deve ser realizado pelo usuário chave da rotina que domina os processos do sistema. Esses dois profissionais devem trabalhar em conjunto nesta coleta, pois o DBA ativas as configurações para gerar o Trace e o usuário chave executa o processo no sistema;
- Lembre-se de que o ponto de coleta do Trace é o exato ponto onde está ocorrendo problemas de Performance/Lentidão/Travamentos;
- O passo a passo indicado nesse documento pode variar um pouco de acordo com a versão e linguagem do seu banco de dados. O seu DBA é responsável por efetuar o procedimento e deve conhecer a ferramenta que é utilizada para coleta do Trace da versão do seu banco de dados, adaptando eventuais passos descritos neste artigo a realidade da sua versão de banco de dados.
Atenção
- Caso a necessidade de monitoramento/coleta de Trace seja análise de deadlocks, o seu DBA deve ativar os seguintes comandos no banco dados antes de iniciar o trace:
- DBCC TRACEON (1222,-1);
- DBCC TRACEON (1204,-1);
- Esse parâmetros são automaticamente desativados em caso de reinicialização do banco de dados. Caso haja necessidade de manter esses parâmetros ativados mesmo após a reinicialização, o seu DBA deve fazer esta configuração para que os parâmetros sejam mantidos na inicialização do banco de dados;
- Para verificar o status atual dos Logs de Trace habilitados, poderá ser gerado o comando indicado abaixo:
- DBCC TRACESTATUS;
Para gerar o Trace, siga o procedimento abaixo:
1. Abra uma nova conexão com o sistema que não tenha sido executado nenhum processo;
2. Prepare o processo até o ponto em que você precisa coletar o Trace (ponto onde está ocorrendo problema de Performance/Lentidão/Travamentos). Exemplo: se a lentidão está no botão Processar de uma tela, prepare toda a tela e antes de clicar no botão Processar. Esse vai ser o exato ponto em que o seu DBA vai ativar o trace.
3. Quando você chegar no ponto que vai gerar o incidente, faça um print da tela/relatório com as informações a serem executadas. Essa informação é importante porque dará visão de como são executadas as funções do sistema (seja tela, relatório, WebService);
4. O seu DBA deve ativar o Trace no banco de dados, capturando apenas a sessão do seu usuário onde você deixou tudo preparado. O DBA deve executar o comando abaixo:
SELECT * FROM SYS.SYSPROCESSES WHERE HOSTNAME='NOME_ESTAÇÃO';
Importante
O nome da estação indicado no comando acima é o nome da Máquina/PC onde foi aberto o sistema.
5. O seu DBA deve preparar o Trace (profiler) na ferramenta SQL Server Profiler selecionando as
seguintes opções:
5.1. Na Aba Geral, selecionar o local e colocar um nome de arquivo a ser criado, colocando o tamanho a ser gerado como 200MB;
5.2. Na Aba Events Selection. selecionar os seguintes eventos a serem monitorados, conforme imagens abaixo:
Parte 1
Parte 2
5.3. Ainda dentro da Aba Events Selection o DBA deve clicar na opção Column Filters e deve definir os
números dos SPIDs da sessão a ser monitorada, conforme coletado no tópico 4.
5.4. Após configurada a coleta do Trace, seu DBA deve clicar no botão Run para começar a monitorar a
sessão;
6. Você deve cronometrar o tempo de execução do ponto do início do incidente (lentidão/travamento) até terminar a execução da parte onde o incidente ocorre.
Importante
- Em caso de análise de situação relacionada a lentidão, se existir mais de uma parte lenta dentro do mesmo processo, faça Traces separados, pois isso facilita a análise e solução do problema;
- Em caso de situações relacionadas a travamento (onde aparentemente mesmo deixando o processo rodando por muito tempo - questão de horas - ele não é concluído, pode-se coletar o Trace durante um período grande, mas não haverá um momento em que "a lentidão acabou" para poder encerrar o Trace. Então o encerramento poderá ocorrer após a execução do processo por bastante tempo;
7. Após a confirmação de ativação do Trace, você deve então executar o processo do ponto onde você deixou a sessão do sistema configurada para a coleta do Trace;
8. Após a coleta do Trace, o seu DBA deve encerrar o Trace;
9. Após a conclusão do processo onde precisa ser coletado o Trace, o sistema deve ser fechado.
10. Encaminhe para a Senior (quando solicitado) os arquivos de Trace gerados e o tempo de execução do processo (conforme indicação de coleta de dados do tópico 6). Juntamente com essa informação, você já deve encaminhar a análise que o seu DBA fez dos Traces que foram coletados.
Importante
Enquanto estiver com o Trace ativado, você não pode acessar nenhuma outra tela que não seja o processo onde o Trace está sendo coletado. Se houver esta necessidade de acessar outra tela, você deve fechar o sistema e iniciar o procedimento novamente. Isso é necessário porque tudo que for feito na sessão do sistema será capturado pelo Trace e pode gerar informações que não correspondem ao que precisa ser analisado.
Observação
Para mais informações sobre o questões relacionadas a Performance/Lentidão/Travamentos do Gestão Empresarial | ERP, consulte o artigo ERP - Performance/Lentidão/Travamentos - Onde é possível encontrar informações diversas sobre questões relacionadas a Performance/Lentidão/Travamentos (índice).