ERP - Performance/Lentidão/Travamentos - Como efetuar a coleta de Trace em banco de dados Oracle
Dúvida
Como efetuar a coleta de Trace em banco de dados Oracle?
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.
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:
EXEC SYS.DBMS_SYSTEM.SET_EV(SID,SERIAL#,10046,8,'');
Importante
Os valores dos parâmetros SID e SERIAL# indicados acima devem ser buscados da tabela V$SESSION ou
GV$SESSION da sessão que será analisada.
5. 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;
6. O seu DBA deve encerrar o Trace usando o comando abaixo:
EXEC SYS.DBMS_SYSTEM.SET_EV(SID,SERIAL#,10046,0,'');
Importante
Os valores dos parâmetros SID e SERIAL# indicados acima devem ser os mesmos executados no tópico 4.
7. Após a conclusão do processo onde precisa ser coletado o Trace, o sistema deve ser fechado.
8. O seu DBA deverá gerar dois TKPROF do Trace no próprio servidor de banco de dados com os
comandos:
TKPROF NOME_TRACE NOVO_NOME_TRACE SYS=NO SORT=FCHELA
TKPROF NOME_TRACE NOVO_NOME_TRACE SYS=NO
9. Encaminhe para a Senior (quando solicitado) os TKPROFs gerados e o tempo de execução do processo (conforme indicação de coleta de dados do tópico 5). 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).