Pular para o conteúdo
WaitScope Entrar Solicitar acesso (por e-mail) Menu

Escolher o nível do evento 10046

Os níveis do evento 10046, qual deles o WaitScope precisa, como ligar e desligar com ALTER SESSION e os parâmetros que evitam trace sem tempo ou cortado.

Vale para: Traces 10046 com esperas (nível 8 ou 12), console 1.7.0

O evento 10046 é o SQL trace estendido do Oracle: o nível diz o que entra no arquivo além das chamadas ao banco. O WaitScope precisa das esperas. Use o nível 8; o 12 também serve, mas grava os valores de bind, que o WaitScope ignora.

Antes de começar

Os níveis

Níveis do evento 10046 e uso no WaitScope
NívelO que gravaNo WaitScope
1O SQL trace comum: comandos, chamadas e linhas do planoNão serve: sem esperas
4O nível 1 e os valores de bindNão serve: sem esperas
8O nível 1 e as esperasRecomendado
12O nível 1, os binds e as esperasServe; os binds são ignorados

Os níveis 1, 4, 8 e 12 estão na tabela Event Level Settings da página SQL Trace da documentação da Oracle, e o nível 8 é o que o guia de tracing do 19c usa para gravar as esperas. Sem as esperas, o perfil não separa a espera do resto: o tempo esperando disco, lock ou a aplicação vira tempo não contabilizado, dentro e entre as chamadas (lacunas entre chamadas). No Resumo, Esperas igual a 0 indica trace sem esperas.

Quando o plano vai para o arquivo

As linhas STAT, o plano com os números de cada operação, vão para o arquivo na frequência do parâmetro plan_stat. A referência do DBMS_MONITOR documenta três valores:

Valores do plan_stat e o plano no relatório
ValorQuando grava o planoNo relatório
'FIRST_EXECUTION', igual a NULL, o padrãoNa primeira execução do cursorO plano aparece no detalhe do comando.
'ALL_EXECUTIONS'A cada execução, e o arquivo cresceCada plano diferente aparece uma vez, com os números da última gravação (num comando com o selo N variantes, os da execução gravada mais demorada) e uma nota como plano gravado 3 vezes, mostrando o último (com variantes, mostrando o da gravação mais demorada).
'NEVER'NuncaO detalhe do comando sai sem plano.

No alter session set events, os níveis documentados, 1, 4, 8 e 12, não escolhem essa frequência, e o padrão já basta para o relatório mostrar o plano. Se precisar do plano a cada execução, ligue o trace pelo DBMS_MONITOR com plan_stat => 'ALL_EXECUTIONS' (que valores usar).

Ligar e desligar com ALTER SESSION

  1. Na sessão que vai rodar a operação, ligue o evento:
    alter session set events '10046 trace name context forever, level 8';
  2. Rode a operação inteira nessa mesma sessão.
  3. Desligue o evento:
    alter session set events '10046 trace name context off';

Resultado: o arquivo de trace da sessão tem as linhas PARSE, EXEC, FETCH e WAIT da operação. Para achar o caminho dele, use a consulta ao V$DIAG_INFO de achar o arquivo da própria sessão.

Não ligue o 10046 no sistema inteiro: cada sessão grava o seu arquivo, e a operação que interessa fica perdida entre os outros.

Parâmetros que mudam o arquivo

Confira os valores em vigor antes de ligar:

select name, value
from v$parameter
where name in ('timed_statistics', 'statistics_level', 'max_dump_file_size');
Parâmetros da instância que afetam o trace
ParâmetroValor bomFora dele
timed_statisticsTRUECom FALSE, os tempos saem zerados e o perfil não tem o que dividir. Com statistics_level em TYPICAL ou ALL, o padrão dele é TRUE.
max_dump_file_sizeUNLIMITED, o padrãoCom limite, o arquivo para de crescer ao chegar nele. A partir de 25 MB, o Oracle divide o trace em até 5 segmentos e apaga o mais antigo depois do primeiro: o meio da operação some.

Na sua sessão, ajuste com alter session:

alter session set timed_statistics = true;
alter session set max_dump_file_size = unlimited;

Na sessão de outra pessoa, ligada pelo DBMS_MONITOR, vale o valor da instância, que só muda com alter system e vale para todas as sessões: combine com o DBA. Os detalhes estão na referência da Oracle para MAX_DUMP_FILE_SIZE e TIMED_STATISTICS.

Trace cortado no meio

O relatório mede só o que está no arquivo. Sinais de que o trace não cobre a operação inteira:

  • o Período do Resumo começa depois ou termina antes da operação;
  • um aviso no alto do relatório que termina em (trace iniciado ou cortado no meio de uma chamada);
  • comandos com Texto não disponível: o cursor foi aberto antes do início do trace.;
  • o achado Lacunas de tempo entre chamadas no Diagnóstico.

Para evitar: ligue o trace antes de a operação começar e desligue depois do fim, sem desligar no meio; deixe o max_dump_file_size sem limite; e, se a aplicação trocar de arquivo no caminho, envie todos os arquivos juntos (analisar juntos).

Próximos passos

Atualizado em 29/10/2026. Relatar erro nesta página