El Diagnóstico reúne los patrones que WaitScope reconoce en el trace y que suelen explicar el perfil. Cada hallazgo tiene un código y una página en esta documentación, con la causa, la solución y cómo confirmarlo.
Qué muestra la sección
La sección aparece justo después del Resumen y solo cuando el trace tiene al menos un hallazgo. El texto de arriba resume la regla: Patrones que suelen explicar lo que muestra el trace, en orden de gravedad. Son pistas para el análisis, no conclusiones.
Cada hallazgo es un bloque con la gravedad, el título, la parte del tiempo total cuando corresponde, un texto con los números del trace y la causa más frecuente, y un enlace al lugar del informe que respalda el hallazgo.
Cómo leerla
| Parte | Qué indica |
|---|---|
| Gravedad | alta, media, baja o información. Los hallazgos vienen en ese orden y, dentro de la misma gravedad, de la mayor parte del tiempo total a la menor. El mismo hallazgo puede salir con distinta gravedad según el peso de lo que señala: una lectura lenta en un evento que casi no pesa en el tiempo total, por ejemplo, sale como baja. |
| Título | El patrón, con el componente, la sentencia o el recuento que lo disparó, como Sentencia #1: la operación 1 del plan concentra el 98,0% del tiempo. |
| % del tiempo total | El peso de lo que señala el hallazgo: el componente, la clase de espera, el tiempo de los PARSE o, en los hallazgos de una sentencia, el tiempo inclusivo de la sentencia. Los hallazgos de recuento, como errores, rollbacks, llamadas lentas y deadlock, no tienen porcentaje. |
| Texto | Los números del trace y lo que suele haber detrás de ellos. |
| Enlace | Lleva a la evidencia: Ver en el perfil, Ver perfil por clase, Ver distribución de latencia, Ver tipos de llamada, Ver textos compartibles, Ver llamadas más largas, Ver errores, Ver resumen o Ver deadlock. En los hallazgos de una sentencia, lleva a la sentencia, con Ver sentencia #n, o a la operación del plan, con Ver en el plan de la sentencia #n. |
Los hallazgos y la página de cada uno
El código no aparece en pantalla: es el nombre de la regla, que la API devuelve en el campo code. En el título, lo que está en cursiva cambia según el trace.
| Código | Título en el informe | Página |
|---|---|---|
TEMPO_NA_APLICACAO | La sesión pasó la mayor parte del tiempo esperando a la aplicación | Sesión esperando a la aplicación |
COMPONENTE_DOMINANTE | componente domina el tiempo de respuesta | Componente dominante |
CPU_DOMINANTE | La CPU domina el tiempo de respuesta | CPU dominante |
NAO_CONTABILIZADO_DENTRO | Mucho tiempo dentro de las llamadas sin CPU ni espera registrada | Tiempo no contabilizado dentro de las llamadas |
NAO_CONTABILIZADO_ENTRE | Huecos de tiempo entre llamadas | Huecos entre llamadas |
CPU_ACIMA_DO_DECORRIDO | CPU medida por encima del tiempo transcurrido | CPU por encima del tiempo transcurrido |
LEITURA_LENTA | Lectura de bloque único lenta en evento, o Lectura de bloque único por encima de lo esperado en evento | Lectura lenta |
MUITAS_LEITURAS | Muchas lecturas de bloque único (evento) | Muchas lecturas |
HARD_PARSE | Muchos hard parses | Muchos hard parses |
PARSE_POR_EXECUCAO | Sentencia #n: un PARSE en cada ejecución (n PARSE, n EXEC) | Un PARSE en cada ejecución |
LITERAIS_SEM_BIND | Sentencia #n: n variantes del mismo SQL, solo con literales diferentes, o, con el recuento estimado, Sentencia #n: alrededor de n variantes del mismo SQL, solo con literales diferentes | Literales en lugar de bind |
FETCH_PEQUENO | Muchos FETCH con pocas filas | Muchos FETCH con pocas filas |
LINHA_A_LINHA | Sentencia #n ejecutada n veces, o Sentencia #n leída fila a fila: n FETCH | Fila a fila en PL/SQL |
BLOQUEIO | Espera por bloqueo de otra sesión | Bloqueo por otra sesión |
CONCORRENCIA | Contención por estructuras internas de la base de datos | Contención interna |
COMMIT | Mucho tiempo esperando la escritura del redo en el commit | Espera en el commit |
CONFIGURACAO | Espera ligada a la configuración de la base de datos | Configuración de la base de datos |
CLUSTER | Intercambio de bloques entre instancias del RAC | Intercambio de bloques en RAC |
RESOURCE_MANAGER | Sesión limitada por el Resource Manager | Resource Manager |
PLANO_PONTO_QUENTE | Sentencia #n: la operación id del plan concentra el x% del tiempo, o el x% de las lecturas lógicas | Operación que concentra el plan |
ESTIMATIVA_ERRADA | Sentencia #n: estimación de filas errónea en la operación id del plan | Estimación de filas errónea |
CHAMADAS_LENTAS | n llamadas de nivel 0 por encima de 0,100 s | Llamadas lentas |
ERROS_ORACLE | n errores de Oracle en el trace | Errores de Oracle |
FIM_DE_DADOS | n ORA-01403 (fin de datos) | Fin de datos (ORA-01403) |
ROLLBACK | n rollbacks | Rollback |
DEADLOCK | tipo de deadlock entre las sesiones a y b, como Deadlock de fila (TX en modo X) entre las sesiones 12 y 34 | Deadlock |
TRACE_VAZIO | Trace sin intervalo de tiempo | Trace vacío |
Cuándo preocupa
- Empiece por los hallazgos de gravedad alta y por los de mayor parte del tiempo total: ningún ajuste ahorra más que el tiempo que señala el hallazgo.
- Antes de actuar, abra el enlace del hallazgo y compruebe el número en el informe. El hallazgo es una pista; el perfil y la sentencia son los que confirman.
- Los hallazgos de información, como llamadas lentas y fin de datos, registran un hecho que suele ser normal. Léalos, pero no empiece por ellos.
- Un Diagnóstico vacío no significa un trace sin problemas: las reglas cubren patrones conocidos. El perfil sigue siendo la base del análisis.
Adónde ir después
- Diagnóstico del informe de ejemplo: dos hallazgos de gravedad media, la espera por la aplicación con el 71,3% del tiempo total y la operación 1 del plan de la sentencia #1, con el 24,6%.
- El método, para saber en qué orden abordar los hallazgos.
- Perfil del tiempo de respuesta, donde se confirma la mayoría de los hallazgos.