Ativação do trace de uma sessão Oracle e utilização do tkprof

O trace de uma instrução SQL tem como finalidade mostrar os detalhes de como o ORACLE executou a instrução, nosso objetivo aqui não é entrar em detalhes sobre o tema, mas sim exemplificar como ativar o trace de uma sessão específica e como converter o arquivo .trc gerado utilizando o tkprof. Essa conversão é necessária pois o arquivo .trc gerado pelo trace é praticamente “ilegível”, a ferramente tkprof converte em um formato “legível”.

As instruções a serem executadas requerem privilégios de administrador.

1) Parametrização do ambiente:

ALTER SYSTEM SET TIMED_STATISTICS = TRUE;

2) Identificação do diretório destino dos arquivos de trace:

SELECT VALUE FROM V$PARAMETER WHERE UPPER(NAME) = 'USER_DUMP_DEST';

3) Ativação do trace de uma sessão específica utilizando a DBMS_MONITOR:

EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(SESSION_ID => <SID>, 
                                          SERIAL_NUM => <SERIAL#>, 
                                          WAITS => <TRUE|FALSE>, 
                                          BINDS => <TRUE|FALSE>);

4) Desativação do trace de uma sessão específica utilizando a DBMS_MONITOR:

EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(SESSION_ID => <SID>, 
                                           SERIAL_NUM => <SERIAL#>);

5) Identificação do arquivo de trace gerado:

SELECT S.USERNAME,
       S.AUDSID,
       S.SID,
       S.SERIAL#,
       PA.VALUE || chr(92) || LOWER(SYS_CONTEXT('USERENV', 'INSTANCE_NAME')) ||
       '_ORA_' || P.SPID || '.TRC' AS TRACE_FILE
  FROM V$SESSION S, V$PROCESS P, V$PARAMETER PA
 WHERE S.PADDR = P.ADDR
   AND UPPER(PA.NAME) = 'USER_DUMP_DEST'
   AND S.SID = < SID >
   AND S.SERIAL# = < SERIAL# >;

6) Conversão do arquivo de trace em txt utilizando o tkprof (executar em um prompt de comando):

TKPROF <NOME_ARQUIVO.TRC> <NOME_ARQUIVO_DESTINO.TXT> EXPLAIN=<USER/PASSWORD@TNS> WAITS=YES SYS=YES SORT=EXEELA,FCHELA,EXECPU

Para mais detalhes consulte a documentação oficial pois como comentamos no início o tema é bastante extenso.

REFERÊNCIAS

[1] http://www.oracle.com/

Por ALBERI MARQUES VIEIRA

Postado em: 05 de junho de 2015

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário