Trace no Oracle 2
No artigo anterior foi apresentada uma forma de realizarmos um trace do Oracle usando a instrução “ALTER SESSION”. Esta instrução deve ser executada pela própria sessão onde iremos realizar o trace.
Neste artigo será apresentada uma forma para fazer o trace de uma sessão a partir de outra sessão do Oracle.
1. Identificação da Sessão
A primeira coisa que precisamos descobrir é qual a sessão do Oracle que pretendemos iniciar um trace.
Para vermos o que cada sessão está executando podemos consultar a view v$Session ou usar as ferramentas gráficas do Oracle para verificar as sessões ativas, como podemos ver na Figura 1 (Oracle Enterprise Manager).
SQL> select sid, serial#, username from v$session; SID SERIAL# USERNAME ---------- ---------- ------------------------------ 23 1 27 5 SYSTEM 28 4 SQLMAGAZINE 35 1 37 4 39 1 …
Figura 1. Consulta das sessões ativas no Oracle 10g ExpressNeste exemplo queremos iniciar o trace para o usuário SQLMAGAZINE, usando as rotinas
do pacote DBMS_MONITOR. Para este procedimento precisamos informar o SID que é o
identificador (ID) da sessão no Oracle, no exemplo o número 28.SQL> exec dbms_monitor.session_trace_enable(28);Procedimento PL/SQL concluído com sucesso.
Caso você não saiba onde será gerado o arquivo do trace, verifique o seguinte parâmetro do Oracle:
SQL> show parameter user_dump_dest;
NAME TYPE VALUE
----------------- ----------- -------------------------------------
user_dump_dest string C:\ORACLEXE\APP\ORACLE\ADMIN\XE\UDUMP
Na pasta indicada pelo campo VALUE será criado um arquivo com os dados do trace, a nomenclatura do arquivo é gerada pelo Oracle. Caso tenhas dificuldade de encontrar o arquivo, existe a possibilidade de incluir um identificador no nome do arquivo com a instrução abaixo:
SQL> alter session TRACEFILE_IDENTIFIER = ‘Trace_SQLMagazine’;
Como foi usada a instrução Alter Session, será necessário executar este comando pela sessão que iremos depurar.
Outra possibilidade é alterar o diretório de destino, modificando o valor deste parâmetro com a instrução:
SQL> alter system set user_dump_dest=”c:\traceSQLMag”;
Após executarmos os procedimentos que iremos analisar, podemos desativar o trace com a instrução:
SQL> exec dbms_monitor.session_trace_disable(28);
Procedimento PL/SQL concluído com sucesso.
Para analisarmos o arquivo gerado é necessário usar o utilitário tkprof conforme apresentado no artigo anterior.