Suba el trace de Oracle. Vea a dónde fue cada segundo.
WaitScope lee traces de Oracle del evento 10046 y arma el perfil del tiempo de respuesta de la sesión: CPU, cada espera y cada sentencia SQL, sumando exactamente el tiempo total. Sin instalar nada en la base de datos.
El trace se borra en cuanto termina el análisis. Queda solo el informe.
Fragmento del trace (.trc)
FETCH #1:c=200,e=1600,p=1,cr=10,cu=0,mis=0,r=1,dep=0
WAIT #1: nam='db file sequential read' ela= 1000 file#=1 block#=100
WAIT #1: nam='SQL*Net message from client' ela= 5000 driver id=1
STAT #1 id=1 cnt=1 op='TABLE ACCESS BY INDEX ROWID T (cr=10 pr=1 time=1500 us)'
Perfil del tiempo de respuesta
| Componente | Participación | % del total |
|---|---|---|
| SQL*Net message from client | 71,3% | |
| db file sequential read | 18,5% | |
| tiempo no contabilizado entre llamadas | 4,1% | |
| CPU: FETCH dbcalls | 2,8% | |
| otros 5 componentes | 3,3% | |
| Tiempo total | 100,0% |
La sesión pasó la mayor parte del tiempo esperando a la aplicación Ajustar el SQL no reduce este tiempo: revise la aplicación, la red y la cantidad de idas y vueltas.
Del trace al perfil en tres pasos
Funciona con el trace que el propio Oracle escribe. Sin agente, sin conector y sin acceso a su base de datos.
-
Active el trace en la sesión lenta
Con DBMS_MONITOR, con las esperas y sin los valores de bind. ALTER SESSION con el evento 10046 también sirve.
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE( session_id => 123, serial_num => 4567, waits => TRUE, binds => FALSE); -- ejecute la operación lenta EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE( session_id => 123, serial_num => 4567); -
Suba el archivo
Desde el navegador o la app de Android: el .trc, comprimido en zip, gz, bz2 o tar, o la carpeta entera. Los archivos de una misma operación pueden convertirse en un solo análisis.
-
Lea el perfil
Cuando termina el análisis, el informe abre con el tiempo total, el perfil por componente y por clase de espera, las sentencias SQL con su plan y el diagnóstico.
Un informe que cuadra todo el tiempo
Cada línea del perfil es una parte del tiempo total, y la suma da 100%. Desde ahí, el informe baja a las sentencias, los planes y los objetos que pesaron.
Perfil del tiempo de respuesta
El tiempo total dividido en CPU por tipo de llamada, cada evento de espera y el tiempo no contabilizado, también agrupado por clase de espera de Oracle.
Sentencias SQL y planes
Cada sentencia por su contribución al tiempo total, con las llamadas, el plan de las líneas STAT y las operaciones en las que el optimizador estimó mal las filas.
Diagnóstico
Patrones que suelen explicar el perfil: espera por la aplicación, lectura lenta, hard parse, bucle fila a fila en PL/SQL, commit y bloqueo.
Objetos y PL/SQL
Los objetos con más espera y consultas listas para ejecutar en la base: columnas, índices, estadísticas y el código del PL/SQL.
Deadlocks (ORA-00060)
El grafo de espera, las sesiones, el SQL y la pila PL/SQL de quien recibió el error, con el diagnóstico por tipo de lock.
Varios traces de una misma operación
Cuando la aplicación cambia el tracefile_identifier, la operación se reparte en varios archivos. WaitScope junta los fragmentos en el orden del tiempo.
El trace no se queda en el servidor
Un trace de producción trae SQL y, a veces, datos personales. WaitScope guarda solo el informe, y los valores de bind usados en los filtros ni siquiera entran en él.
- Borrado después del análisis
- El archivo enviado sale del servidor en cuanto termina el análisis, con éxito o con error. Queda solo el informe, durante el plazo de retención.
- Servidor en Brasil
- El análisis se ejecuta, y el informe se guarda, en un servidor en Brasil.
- Solo usted ve sus análisis
- Cada cuenta ve únicamente lo que envió. Ni el administrador de la consola ve el contenido.
- Literales ocultos
- El texto entre comillas y los números de 6 dígitos o más aparecen como *** en el SQL que usted ve y descarga. Viene activado y se puede desactivar en la cuenta.
- Verificación en dos pasos
- Toda cuenta entra con contraseña y con el código de la app de autenticación.
- Nada en su base de datos
- Sin agente, sin esquema y sin conexión con la base: WaitScope solo ve el archivo que usted decide enviar.
Preguntas frecuentes
¿Qué traces lee WaitScope?
Traces del evento 10046 con esperas (nivel 8 o 12) y traces de deadlock (ORA-00060). Los traces antiguos, con tiempos en centésimas de segundo, también sirven. Otros archivos de Oracle, como el trace 10053 y el alert log, se reconocen y se rechazan con la explicación de cómo generar el 10046.
¿Qué diferencia hay con TKPROF?
TKPROF organiza el trace por sentencia. WaitScope empieza por el tiempo total de la sesión y muestra cuánto pesó cada parte, incluido el tiempo fuera de la base, como la espera por la aplicación, y el tiempo que el trace no explica. Las sentencias y los planes vienen después, en orden de contribución.
¿Funciona con traces grandes?
Sí. Cada envío llega a 4 GiB, y el archivo puede ir comprimido. La lectura es en flujo: un trace de 119 MB, con 2,1 millones de líneas, se lee en unos 4 segundos.
¿Es una herramienta de monitoreo?
No. WaitScope analiza el trace de una operación cuando usted necesita entender su tiempo. No se conecta a la base ni recolecta nada de forma continua.
¿Cuánto tiempo queda disponible el informe?
Durante el plazo de retención, 7 días por defecto. Puede descargar el informe en HTML o JSON y borrar el análisis antes.
¿Hay app?
Hay app de Android. Envía traces grandes por partes, retoma el envío si se cae la conexión y abre los informes. Informes y pantallas en español, portugués e inglés.
¿Cuánto cuesta?
Los planes todavía no se publicaron. Durante el acceso anticipado, escriba a contato@waitscope.com para acordar el uso.
Analice su próximo trace con WaitScope
Solicite acceso y suba el trace de la operación lenta. El informe sale en cuanto termina el análisis.