Saltar al contenido
WaitScope Entrar Solicitar acceso (por correo) Menú

Elegir el nivel del evento 10046

Los niveles del evento 10046, cuál necesita WaitScope, cómo activarlo y desactivarlo con ALTER SESSION y los parámetros que evitan un trace sin tiempos o cortado.

Se aplica a: Traces 10046 con esperas (nivel 8 o 12), consola 1.7.0

El evento 10046 es el SQL trace extendido de Oracle: el nivel indica qué entra en el archivo además de las llamadas a la base de datos. WaitScope necesita las esperas. Use el nivel 8; el 12 también sirve, pero graba los valores de bind, que WaitScope ignora.

Antes de empezar

Los niveles

Niveles del evento 10046 y su uso en WaitScope
NivelQué grabaEn WaitScope
1El SQL trace común: sentencias, llamadas y filas del planNo sirve: sin esperas
4El nivel 1 y los valores de bindNo sirve: sin esperas
8El nivel 1 y las esperasRecomendado
12El nivel 1, los binds y las esperasSirve; los binds se ignoran

Los niveles 1, 4, 8 y 12 están en la tabla Event Level Settings de la página SQL Trace de la documentación de Oracle, y el nivel 8 es el que usa la guía de tracing de 19c para grabar las esperas. Sin las esperas, el perfil no separa la espera del resto: el tiempo esperando el disco, un lock o la aplicación se convierte en tiempo no contabilizado, dentro y entre las llamadas (huecos entre llamadas). En el Resumen, Esperas igual a 0 indica un trace sin esperas.

Cuándo va el plan al archivo

Las líneas STAT, el plan con los números de cada operación, van al archivo con la frecuencia del parámetro plan_stat. La referencia de DBMS_MONITOR documenta tres valores:

Valores de plan_stat y el plan en el informe
ValorCuándo graba el planEn el informe
'FIRST_EXECUTION', igual a NULL, el valor predeterminadoEn la primera ejecución del cursorEl plan aparece en el detalle de la sentencia.
'ALL_EXECUTIONS'En cada ejecución, y el archivo creceCada plan distinto aparece una vez, con los números de la última grabación (en una sentencia con la etiqueta N variantes, los de la ejecución grabada más lenta) y una nota como plan registrado 3 veces, se muestra el último (con variantes, se muestra el registro más lento).
'NEVER'NuncaEl detalle de la sentencia sale sin plan.

En alter session set events, los niveles documentados, 1, 4, 8 y 12, no eligen esa frecuencia, y el valor predeterminado ya basta para que el informe muestre el plan. Si necesita el plan en cada ejecución, active el trace con DBMS_MONITOR y plan_stat => 'ALL_EXECUTIONS' (qué valores usar).

Activar y desactivar con ALTER SESSION

  1. En la sesión que va a ejecutar la operación, active el evento:
    alter session set events '10046 trace name context forever, level 8';
  2. Ejecute la operación entera en esa misma sesión.
  3. Desactive el evento:
    alter session set events '10046 trace name context off';

Resultado: el archivo de trace de la sesión tiene las líneas PARSE, EXEC, FETCH y WAIT de la operación. Para encontrar su ruta, use la consulta a V$DIAG_INFO de encontrar el archivo de la propia sesión.

No active el 10046 en todo el sistema: cada sesión graba su propio archivo, y la operación que interesa se pierde entre las demás.

Parámetros que cambian el archivo

Compruebe los valores vigentes antes de activar:

select name, value
from v$parameter
where name in ('timed_statistics', 'statistics_level', 'max_dump_file_size');
Parámetros de la instancia que afectan al trace
ParámetroValor buenoCon otro valor
timed_statisticsTRUECon FALSE, los tiempos salen en cero y el perfil no tiene qué dividir. Con statistics_level en TYPICAL o ALL, su valor predeterminado es TRUE.
max_dump_file_sizeUNLIMITED, el valor predeterminadoCon un límite, el archivo deja de crecer al llegar a él. A partir de 25 MB, Oracle divide el trace en hasta 5 segmentos y borra el más antiguo después del primero: el medio de la operación desaparece.

En su sesión, ajústelos con alter session:

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

En la sesión de otra persona, activada con DBMS_MONITOR, vale el valor de la instancia, que solo cambia con alter system y se aplica a todas las sesiones: acuérdelo con el DBA. Los detalles están en la referencia de Oracle para MAX_DUMP_FILE_SIZE y TIMED_STATISTICS.

Trace cortado en medio

El informe mide solo lo que está en el archivo. Señales de que el trace no cubre la operación entera:

  • el Período del Resumen empieza después o termina antes que la operación;
  • un aviso en la parte superior del informe que termina en (trace iniciado o cortado en medio de una llamada);
  • sentencias con Texto no disponible: el cursor se abrió antes del inicio del trace.;
  • el hallazgo Huecos de tiempo entre llamadas en el Diagnóstico.

Para evitarlo: active el trace antes de que empiece la operación y desactívelo después de que termine, sin desactivarlo en medio; deje max_dump_file_size sin límite; y, si la aplicación cambia de archivo en el camino, envíe todos los archivos juntos (analizar juntos).

Próximos pasos

Actualizado el 29/10/2026. Informar un error en esta página