Rastreamento de Sessões por Módulo
Olá pessoal,
Hoje falarei sobre uma maneira simples de habilitar rastreamento de atividade em sessões (trace) de um Módulo específico.
Trata-se da utilização da package dbms_monitor com a procedure serv_mod_act_trace_enable. Onde basta informar o parâmetro service_name e o module_name (action_name é opcional).
Após executada a procedure, todas as sessões que partirem do service e module escolhido terão trace ativo. Também é possível, com a dbms_application_info.set_module, escolher manualmente o nome do módulo para a sessão.
Segue exemplo de utilização:
Abra conexão com o SQL Plus, com isso o módulo passará a ser sqlplus.exe, que pode ser conferido na coluna module da view v$session.
Ative trace para as sessões do módulo DCARVALHO (pode ser executado em outra sessão). O serviço utilizado no meu ambiente de testes foi o DBSNAP:
EXEC dbms_monitor.serv_mod_act_trace_enable(service_name => 'DBSNAP', module_name => 'DCARVALHO');
Na sessão do SQL Plus, execute:
EXEC dbms_application_info.set_module('DCARVALHO', '');
Com isso, percebe-se no diretório configurado para user_dump_dest a criação de um arquivo TRC.
Execute comandos por essa e outras sessões abertas com o módulo DCARVALHO, para popular os traces e então, desabilite o rastreamento:
EXEC dbms_monitor.serv_mod_act_trace_disable(service_name => 'DBSNAP', module_name => 'DCARVALHO');
Pronto! Sessões monitoradas e arquivos TRC criados para elas.
Agora utilize o TRCSESS para juntar todos os traces em um único arquivo:
$ trcsess output=dcarvalho.trc service=DBSNAP module=DCARVALHO
Com isso, podemos scanear o TRC com o tkprof, por exemplo, e analisar os comandos executados pelo módulo:
$ tkprof dcarvalho.trc dcarvalho.txt sys=n waits=y sort=exeqry
Bom pessoal, esse foi apenas um exemplo simples de como rastrear atividade das sessões de um módulo específico. Uma opção interessante também seria habilitar o Stats:
EXEC dbms_monitor.serv_mod_act_stat_enable(service_name => 'DBSNAP', module_name => 'DCARVALHO');
Com isso, a view v$serv_mod_act_stats passa a ser populada com valores acumulativos das métricas abaixo:
application wait time
cluster wait time
concurrency wait time
db block changes
DB CPU
DB time
execute count
gc cr block receive time
gc cr blocks received
gc current block receive time
gc current blocks received
opened cursors cumulative
parse count (total)
parse time elapsed
physical reads
physical writes
redo size
session cursor cache hits
session logical reads
sql execute elapsed time
user calls
user commits
user I/O wait time
user rollbacks
workarea executions – multipass
workarea executions – onepass
workarea executions – optimal
Esse cenário de testes foi realizado em um Oracle 11.2.0.1.
Abraço e bons testes a todos.