WaitScope lee el trace que el propio Oracle graba de una sesión y muestra a dónde fue su tiempo: cuánto fue CPU, cuánto fue cada espera y cuánto pesó cada sentencia SQL. Usted genera el trace en la base de datos, envía el archivo por la consola o por la app, y el informe sale cuando termina el análisis.
Qué lee WaitScope
- Trace del evento 10046 con esperas, en el nivel 8 o 12, o activado con
DBMS_MONITORywaits => TRUE(activar el trace con DBMS_MONITOR, niveles del 10046). - Trace de deadlock, que Oracle graba por sí solo cuando una sesión recibe el ORA-00060, suelto o dentro de un trace 10046 (trace de deadlock).
- Traces de versiones antiguas de Oracle, con el tiempo en centésimas de segundo. WaitScope reconoce la unidad por sí solo, y el informe muestra cuál usó en Unidad de tiempo.
El archivo puede ir suelto, comprimido en gz, bz2, zip o tar, o en una carpeta entera (archivos comprimidos y carpetas). Los archivos de una misma operación pueden convertirse en un solo análisis (analizar juntos).
Qué entrega el informe
- Perfil del tiempo de respuesta. El tiempo total de la sesión dividido en CPU por tipo de llamada, cada evento de espera y el tiempo que el trace no explica. La suma de las filas da exactamente el tiempo total (perfil).
- Clases de espera. Los mismos componentes agrupados por la clase de espera de Oracle, como User I/O y Commit (clases de espera).
- Sentencias SQL. Cada sentencia por su contribución al tiempo total, con sus llamadas y su propio perfil. Las sentencias que solo difieren en los literales aparecen sumadas en una fila, marcada con el número de variantes, y el detalle de la sentencia muestra las variantes que más gastaron (sentencias SQL).
- Planes. El plan de las líneas STAT, con el tiempo y las lecturas de cada operación y las estimaciones de filas que fallaron por 10 veces o más (plan de ejecución).
- Diagnóstico. Patrones que suelen explicar el perfil, en orden de gravedad: espera por la aplicación, lectura lenta, hard parse, SQL con literales en lugar de bind, bucle fila a fila en PL/SQL, commit, bloqueo y otros (Diagnóstico).
- Objetos. Las tablas y los índices con más espera, con consultas listas para que las ejecute en su base de datos (objetos).
- Deadlocks. El grafo de espera, las sesiones involucradas, la sentencia y la pila PL/SQL de la sesión que recibió el ORA-00060 (Deadlocks).
El informe trae además la distribución de latencia, las lecturas de disco, las llamadas más largas, los errores ORA y los textos de SQL que solo difieren en los literales. El informe de ejemplo muestra todo esto a partir de un trace sintético. El perfil sigue el método descrito por Cary Millsap y Jeff Holt (el método).
Lo que WaitScope no hace
- No instala nada en la base de datos. No hay agente, esquema ni conexión: WaitScope solo ve el archivo que usted envía.
- No es monitoreo. Analiza el trace de una operación cuando usted necesita entender su tiempo, y no recopila nada de forma continua.
- No lee otros archivos de Oracle. El trace del optimizador (10053), el trace de incidente, el volcado de estado y el alert log se reconocen y se rechazan, con la explicación de cómo generar el 10046.
- No muestra valores de bind. Las líneas de bind del trace se ignoran.
El trace enviado se borra en cuanto termina el análisis, listo o con error, y solo queda el informe, durante el plazo de retención (retención y privacidad). Con la configuración predeterminada de la cuenta, el SQL que usted ve muestra *** en lugar del texto entre comillas y de los números usados como valor (literales ocultos). La lista completa está en lo que WaitScope no hace.
Por dónde seguir
- Para ver el camino entero con un trace listo: primer análisis con el trace de ejemplo.
- Para generar el trace de su operación: activar el trace con DBMS_MONITOR y encontrar el archivo en el servidor.
- Para enviar: desde el navegador, desde la app de Android o por la API.
- Para leer el informe: empiece por el Resumen y el perfil.
La consola está en app.waitscope.com. Durante el acceso anticipado, el acceso se solicita por correo electrónico a contato@waitscope.com.