Pular para o conteúdo

Rastreamento de Sessões por Módulo

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.

dcarvalho

dcarvalho

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress