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
ouSubstituir
session_trace_enableporsession_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=novim trace_teste1.txt
