Los huecos entre las llamadas son tiempo que ninguna línea del trace cubre. La mayoría de las veces, la falla está en la medición: trace sin esperas, activado en medio de la operación o con un archivo faltante.
Síntomas
En el Diagnóstico aparece el hallazgo Huecos de tiempo entre llamadas (NAO_CONTABILIZADO_ENTRE). El texto dice que hay tiempo entre llamadas de nivel 0 sin espera registrada, sugiere un trace activado y desactivado en medio de la sesión o un proceso detenido fuera de la base de datos, y termina con Ver en el perfil.
El hallazgo aparece cuando el componente tiempo no contabilizado entre llamadas ocupa una parte grande del tiempo total. La gravedad es siempre media. Cuando además concentra la mayor parte del tiempo, aparece junto el hallazgo tiempo no contabilizado entre llamadas domina el tiempo de respuesta (componente dominante).
Causa
R va del inicio de la primera llamada o espera hasta el fin de la última. Entre una llamada de nivel 0 y la siguiente, el trace suele registrar la espera SQL*Net message from client. Este componente es la parte de R que no está en ninguna llamada de nivel 0 ni en una espera entre ellas. Crece cuando:
- El trace no tiene esperas. En los niveles 1 y 4 del 10046 no hay líneas WAIT, y todo el tiempo entre llamadas, incluido el de la aplicación, cae aquí.
- El trace se desactivó y se activó de nuevo. El intervalo sin trace queda dentro del tiempo total, sin ninguna línea que lo explique.
- El trace termina en medio de una llamada de la aplicación. La línea de una llamada solo va al archivo cuando la llamada termina. Si el trace se detuvo mientras un bloque PL/SQL invocado por la aplicación todavía se ejecutaba, su EXEC no está en el archivo, y el tiempo del bloque fuera de las sentencias SQL cae aquí. El aviso de llamadas recursivas sin llamada de nivel 0 correspondiente, en la parte superior del informe, muestra este caso (caso 1).
- Falta un archivo de la colección. La aplicación reparte la sesión en varios archivos (cambio de
tracefile_identifier) y solo se envió una parte de ellos, o se analizaron por separado. - El proceso se detuvo fuera de la base de datos. El proceso del servidor quedó sin CPU (servidor saturado), o la aplicación demoró sin que apareciera la espera del cliente.
Solución
- Compruebe si el trace tiene esperas: Esperas igual a 0 en el Resumen indica un trace sin esperas. Genérelo de nuevo en el nivel 8 o 12 (niveles del 10046).
- Compruebe si el Período del Resumen coincide con la operación y si el trace quedó activado todo el tiempo. Actívelo una vez, antes del inicio, y desactívelo una vez, después del fin (activar el trace con DBMS_MONITOR).
- Busque en el trace las líneas
*** TRACE CONTINUES IN FILEy*** TRACE CONTINUED FROM FILE: marcan el cambio de archivo. Si aparecen, envíe todos los archivos juntos, como una colección (analizar juntos), y revise en el informe la lista de archivos y de sesiones (Colección). - Si nada de eso lo explica, revise la carga de CPU del servidor en el período, como en tiempo no contabilizado dentro de las llamadas, y lo que la aplicación hacía entre las llamadas.
Cómo confirmar
Genere un trace nuevo de la misma operación, con esperas y activado de principio a fin, o envíe la colección completa. El componente debe quedar pequeño, el tiempo que ocultaba aparece en SQL*Net message from client o en otra espera, y el hallazgo desaparece.
En el informe
En el informe de ejemplo, este componente suma el 4,1% del tiempo total, sin hallazgo. El informe del caso 1, de un trace real, tiene este hallazgo (Diagnóstico del caso 1). Los enlaces de abajo abren las secciones del ejemplo:
- Diagnóstico: el hallazgo y el enlace Ver en el perfil.
- Perfil, fila tiempo no contabilizado entre llamadas. Haga clic en el nombre para abrir la tarjeta con Dónde mirar.
- Resumen: Período y Esperas, que muestra en el mismo cuadro el tiempo de espera entre llamadas.
- Llamadas de nivel 0 más largas: la columna Inicio (+s) muestra en qué punto del trace empezó cada llamada.
- Colección: el cuadro con los archivos y las sesiones aparece en el Resumen solo cuando el análisis junta varios traces, por eso no está en el ejemplo.