Se você nunca se deparou com uma situação que o usuário está reclamando de lentidão ou de algum problema ao executar um relatório, cálculo ou um procedimento mais pesado, provavelmente você ainda vai se deparar. E é importante que esteja preparado para quando isso acontecer. Há muitas formas de analisar o que pode estar acontecendo, e uma muito eficaz é através de gerar um Trace File a partir da sessão do usuário. Principalmente quando o Alert log te deixa na mão. 

1. Trace Files

A localização dos trace files é definida pela variável DIAGNOSTIC_DEST.
O Alert Log e todos os arquivos de rastreamento dos processos em segundo plano são gravados no ADR (Automatic Diagnostic Repository).

Os nomes dos arquivos variam conforme o sistema operacional, e cada arquivo inclui o nome do processo responsável por gerá-lo, como por exemplo LGWR.

2. Identificando sessão e processo para gerar o Trace

Consulta para obter SID, SERIAL# e SPID:

 
select s.sid,
s.serial#,

s.program,

s.osuser,

p.spid,

s.machine,

s.logon_time

from v$session s,

v$process p

where s.paddr = p.addr

and s.username = '<user>';

 

Guarde os seguintes Resultados:

  • SID: 5

  • SERIAL#: 28183

  • SPID: 1122795 (identifica o arquivo .trc)

3. Ativando o trace da sessão

begin
dbms_monitor.session_trace_enable(
session_id => 5,
serial_num => 28183,
waits => true,
binds => true
);
end;
/

Estrutura genérica:

begin
dbms_monitor.session_trace_enable(

session_id => <SID>,

serial_num => <SERIAL#>,

waits => true,

binds => true

);

end;

/

4. Desativando o trace

Para finalizar o trace:

  • Desconectar a sessão
    ou

  • Substituir session_trace_enable por session_trace_disable:

 
begin
dbms_monitor.session_trace_disable(
session_id => <SID>,
serial_num => <SERIAL#>
);
end;
/

5. Processando o arquivo trace com TKPROF

Após localizar o arquivo no diretório:

$ORACLE_BASE/diag/rdbms/<db>/<inst>/trace/

Ao abrir o trace gerado, verá informações difíceis de se análisar. É 100% recomendável que após gerado, Você utilize a ferramenta TKPROF, que irá facilitar sua análise e leitura da sessão.

tkprof TREINAGBD_ora_1124920.trc trace_teste1.txt sys=no
 
vim trace_teste1.txt
 
TKPROF