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                   18-01-07pic01.JPG

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.