Trace no Oracle

Veja neste artigo uma importante ferramenta para análise de desempenho de um banco de dados.

Uma das ferramentas mais importantes para realizarmos uma análise do desempenho de um banco de dados é o Trace das instruções SQL que estão sendo executadas por um aplicativo.

Neste artigo veremos as instruções básicas para gerarmos este trace no Oracle.

SQL Trace

O SQL Trace gera informações para cada instrução SQL executada por uma determinada instância do Oracle ou gerada por algum usuário específico.

Dentre as informações geradas, podemos destacar:

As informações são armazenadas nos arquivos de trace do Oracle.

TKPROF

Este utilitário formata o resultado gerado nos arquivos de trace. São relacionadas todas as instruções que foram executadas, quais recursos foram empregados, o número vezes que foram executadas e a quantidade de linhas processadas.

De posse destas informações é possível verificar as instruções tem um impacto maior no desempenho.

Geralmente o problema de desempenho está localizado naquelas instruções mais elaboradas que utilizam recursos pesados para o banco de dados como diversos joins, unions, etc. Porém algumas vezes melhorando o desempenho de uma instrução mais simples, entretanto que executa muitas vezes em um determinado procedimento, poderia ser mais significativa na performance do aplicativo.

Gerando o Trace

Os arquivos normalmente são gerados em pastas padrões do Oracle, caso seja necessário gerar estes arquivos em outra pasta utilize o comando ALTER SYSTEM SET USER_DUMP_DEST=novapasta.

Verifique se você possui permissão de acesso para a pasta onde estas informações serão geradas, caso contrário será necessário a um administrador copiar os arquivos antes de executar o comando TKPROF.

Neste artigo comentarei somente a opção de iniciar o Trace a partir da própria sessão com o banco de dados. Para isto utilize a instrução ALTER SESSION SET SQL_TRACE = TRUE.

A geração de informações para o Trace aumenta o consumo de recursos para o sistema, portanto ative no seu aplicativo somente no momento em que for começar a análise dos procedimentos e encerre logo tenha terminado o processo. Para encerrar o Trace execute: ALTER SESSION SET SQL_TRACE = FALSE.

O comando TKPROF possui diversos parâmetros para formatar a saída do Trace, mas simplesmente informando o arquivo de trace e um arquivo de saída já são suficientes para vermos os recursos disponibilizados pelo comando:TKPROF ArquivoEntrada ArquivoSaida

Abaixo um exemplo de uma saída deste utilitário:

SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno; call count cpuelapsed disk query current rows ---- ------- ------- --------- -------- -------- ------- ------ Parse 1 0.16 0.29 3 13 0 0 Execute 10.00 0.00 0 0 0 0 Fetch 1 0.03 0.26 22 4 14 Misses in library cache during parse: 1 Parsing user id: (8) SCOTT Rows Execution Plan ------- --------------------------------------------------- 14 MERGE JOIN 4 SORT JOIN 4 TABLE ACCESS (FULL) OF 'DEPT' 14 SORT JOIN 14 TABLE ACCESS (FULL) OF 'EMP'

Existem outras formas para gerarmos Trace no Oracle que pretendo abordar em outros artigos, está é uma das mais simples, mas que já nos permite fazer uma análise de dos recursos que estão sendo usados pelas instruções SQL, além de nos mostrar o plano de consulta utilizado.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados