Informe de ejemplo, generado por WaitScope a partir de un trace sintético. Volver a la página de WaitScope

WaitScope

exemplo-10046.trc

Analizado el 29/10/2026 10:19:55 · 1,8 KiB · 36 líneas · hasta 10 sentencias por lista

Tiempo total
0,007 s
7,0 ms
Período
02/01/2024 09:59:59
hasta 10:00:00
Llamadas a la base de datos
6
4 de nivel 0
Esperas
4
0,005 s entre llamadas
Sentencias distintas
2
1 commits · 0 rollbacks

Sesión y entorno

Base de datos
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production · 19.3.0.0.0
Instancia
ORCL1
Servidor
db-exemplo
Sesión
10.20 · pid 4242
Módulo
app-exemplo
Unidad de tiempo
microsegundos
Archivo en el servidor
/u01/app/oracle/diag/rdbms/orcl/ORCL1/trace/ORCL1_ora_4242.trc

Diagnóstico

Patrones que suelen explicar lo que muestra el trace, en orden de gravedad. Son pistas para el análisis, no conclusiones.

media La sesión pasó la mayor parte del tiempo esperando a la aplicación 71,3% del tiempo total

La base de datos estuvo inactiva esperando la siguiente petición del cliente. Ajustar el SQL no reduce ese tiempo: revise la aplicación, la red y la cantidad de idas y vueltas (llamadas por unidad de trabajo). Ver en el perfil

media Sentencia #1: la operación 1 del plan concentra el 98,0% del tiempo 24,6% del tiempo total

Operación TABLE ACCESS BY INDEX ROWID T. Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro. También pesan: operación 2, INDEX UNIQUE SCAN T_PK (20,0% de las lecturas lógicas). Las operaciones están resaltadas en el plan, en el detalle de la sentencia. Ver en el plan de la sentencia #1

Perfil del tiempo de respuesta

Cada fila es una parte del tiempo total; sumadas, dan 100%. Haga clic en el nombre de un componente o de una clase para ver qué significa ese tiempo, cuándo es normal, cuándo indica un problema y dónde revisarlo en el informe. El tiempo no contabilizado es lo que el trace no explica por CPU ni por esperas: dentro de las llamadas, suele ser cola de CPU o código sin instrumentación; el valor negativo viene de la granularidad de la medición de CPU.

ComponenteDuración (s)% del totalgráficoOcurrenciasMedia (s)Mín (s)Máx (s)
Idle 0,005000 71,3 1 0,005000 0,005000 0,005000
User I/O 0,001300 18,5 2 0,000650 0,000300 0,001000
no contabilizado 0,000286 4,1
cpu 0,000195 2,8 2 0,000097 0,000040 0,000155
no contabilizado 0,000161 2,3 6 0,000027
cpu 0,000050 0,7 1 0,000050 0,000050 0,000050
cpu 0,000015 0,2 2 0,000008 0,000005 0,000010
Network 0,000002 0,0 1 0,000002 0,000002 0,000002
cpu 0,000001 0,0 1 0,000001 0,000001 0,000001
Total0,007010100,0

Por clase de espera

Los mismos componentes agrupados por la clase de espera de Oracle (wait_class), con CPU y tiempo no contabilizado aparte. La suma también es el tiempo total.

ClaseDuración (s)% del totalgráficoOcurrenciasComponentes principales
0,005000 71,3 1 SQL*Net message from client
0,001300 18,5 2 db file sequential read
0,000447 6,4 tiempo no contabilizado entre llamadas · tiempo no contabilizado dentro de las llamadas
0,000261 3,7 6 CPU: FETCH dbcalls · CPU: PARSE dbcalls · CPU: EXEC dbcalls · CPU: CLOSE dbcalls
0,000002 0,0 1 SQL*Net message to client

Sentencias principales por componente y por clase

Cuánto gastó cada sentencia en cada componente del perfil y en cada clase de espera, según el perfil exclusivo de la sentencia (sin el SQL recursivo que dispara). Hasta 10 sentencias por lista: cámbielo en la parte superior de la página.

Por componente del perfil

SQL*Net message from client espera0,005 s · 71,3% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,005000100,07zq3k1c9m2x4pselect * from t where id=***
db file sequential read espera0,001 s · 18,5% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00100076,97zq3k1c9m2x4pselect * from t where id=***
20,00030023,10w5n8r2t6v1ybselect obj# from obj$ where x=***
CPU: FETCH dbcalls cpu0,000 s · 2,8% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00015579,57zq3k1c9m2x4pselect * from t where id=***
20,00004020,50w5n8r2t6v1ybselect obj# from obj$ where x=***
tiempo no contabilizado dentro de las llamadas no contabilizado0,000 s · 2,3% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00011672,07zq3k1c9m2x4pselect * from t where id=***
20,00004528,00w5n8r2t6v1ybselect obj# from obj$ where x=***
CPU: PARSE dbcalls cpu0,000 s · 0,7% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000050100,07zq3k1c9m2x4pselect * from t where id=***
CPU: EXEC dbcalls cpu0,000 s · 0,2% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00001066,77zq3k1c9m2x4pselect * from t where id=***
20,00000533,30w5n8r2t6v1ybselect obj# from obj$ where x=***
SQL*Net message to client espera0,000 s · 0,0% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000002100,07zq3k1c9m2x4pselect * from t where id=***
CPU: CLOSE dbcalls cpu0,000 s · 0,0% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000001100,07zq3k1c9m2x4pselect * from t where id=***

Por clase de espera

Idle0,005 s · 71,3% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,005000100,07zq3k1c9m2x4pselect * from t where id=***
User I/O0,001 s · 18,5% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00100076,97zq3k1c9m2x4pselect * from t where id=***
20,00030023,10w5n8r2t6v1ybselect obj# from obj$ where x=***
No contabilizado0,000 s · 6,4% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00011626,07zq3k1c9m2x4pselect * from t where id=***
20,00004510,10w5n8r2t6v1ybselect obj# from obj$ where x=***
CPU0,000 s · 3,7% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00021682,87zq3k1c9m2x4pselect * from t where id=***
20,00004517,20w5n8r2t6v1ybselect obj# from obj$ where x=***
Network0,000 s · 0,0% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000002100,07zq3k1c9m2x4pselect * from t where id=***

Sentencias SQL por contribución

Contribución: duración de las llamadas de nivel 0 de la sentencia sumada a las esperas entre llamadas en su cursor. Inclusivo: suma de todas las llamadas de la sentencia, en cualquier profundidad.

#Contribución (s)% del totalInclusivo (s)TipoProf.ExecFetchFilasLIOPIOSQL IDTexto
1 0,007 95,9 0,002 SELECT 0 1 1 1 10 1 7zq3k1c9m2x4p select * from t where id=***
2 0,000 0,0 0,000 SELECT 1 1 1 1 3 1 0w5n8r2t6v1yb select obj# from obj$ where x=***

Tiempo no atribuido a ninguna sentencia: 0,000 s.

Tipos de llamada

LlamadaCantidadCPU (s)Duración (s)Disco (PIO)Consistente (CR)Actual (CU)FilasMisses
FETCH20,0000,002213020
PARSE10,0000,00000001
EXEC20,0000,00000000
CLOSE10,0000,00000000

Llamadas de nivel 0 más largas

LlamadaDuración (s)CPU (s)Inicio (+s)LíneaLIOPIOFilasSentencia
FETCH 0,001600 0,000200 0,000 31 10 1 1 #1 select * from t where id=***
PARSE 0,000100 0,000050 0,000 17 0 0 0 #1 select * from t where id=***
EXEC 0,000020 0,000010 0,000 18 0 0 0 #1 select * from t where id=***
CLOSE 0,000002 0,000001 0,007 35 0 0 0 #1 select * from t where id=***

Distribución de latencia

Rangos en potencias de 10, por evento de espera y por tipo de llamada. Muestra si el tiempo viene de muchas ocurrencias rápidas o de pocas lentas.

SQL*Net message from client1 ocurrencias · 0,005 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs00,00,0000000,0
10 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 1 ms00,00,0000000,0
1 ms ≤ e < 10 ms1100,00,005000100,0
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0
db file sequential read2 ocurrencias · 0,001 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs00,00,0000000,0
10 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 1 ms150,00,00030023,1
1 ms ≤ e < 10 ms150,00,00100076,9
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0
SQL*Net message to client1 ocurrencias · 0,000 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs1100,00,000002100,0
10 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 1 ms00,00,0000000,0
1 ms ≤ e < 10 ms00,00,0000000,0
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0
FETCH (duración e de la llamada)2 ocurrencias · 0,002 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs00,00,0000000,0
10 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 1 ms150,00,00038019,2
1 ms ≤ e < 10 ms150,00,00160080,8
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0
PARSE (duración e de la llamada)1 ocurrencias · 0,000 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs00,00,0000000,0
10 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 1 ms1100,00,000100100,0
1 ms ≤ e < 10 ms00,00,0000000,0
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0
EXEC (duración e de la llamada)2 ocurrencias · 0,000 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs00,00,0000000,0
10 µs ≤ e < 100 µs2100,00,000030100,0
100 µs ≤ e < 1 ms00,00,0000000,0
1 ms ≤ e < 10 ms00,00,0000000,0
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0
CLOSE (duración e de la llamada)1 ocurrencias · 0,000 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 1 µs00,00,0000000,0
1 µs ≤ e < 10 µs1100,00,000002100,0
10 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 1 ms00,00,0000000,0
1 ms ≤ e < 10 ms00,00,0000000,0
10 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < 10 s00,00,0000000,0
10 s ≤ e < 100 s00,00,0000000,0
100 s ≤ e < 1.000 s00,00,0000000,0
1.000 s ≤ e < ∞00,00,0000000,0

Lecturas

lecturas (rangos de disco)2 ocurrencias · 0,001 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 5 ms2100,00,001300100,0
5 ms ≤ e < 10 ms00,00,0000000,0
10 ms ≤ e < 15 ms00,00,0000000,0
15 ms ≤ e < 20 ms00,00,0000000,0
20 ms ≤ e < 25 ms00,00,0000000,0
25 ms ≤ e < 50 ms00,00,0000000,0
50 ms ≤ e < 100 ms00,00,0000000,0
100 ms ≤ e < 1 s00,00,0000000,0
1 s ≤ e < ∞00,00,0000000,0
lecturas (rangos de SSD)2 ocurrencias · 0,001 s
Rango de duraciónOcurrencias% ocurr.Duración (s)% duración
0 ≤ e < 15 µs00,00,0000000,0
15 µs ≤ e < 25 µs00,00,0000000,0
25 µs ≤ e < 50 µs00,00,0000000,0
50 µs ≤ e < 100 µs00,00,0000000,0
100 µs ≤ e < 500 µs150,00,00030023,1
500 µs ≤ e < 1 ms00,00,0000000,0
1 ms ≤ e < 10 ms150,00,00100076,9
10 ms ≤ e < ∞00,00,0000000,0

Primera lectura y relectura del mismo bloque

La relectura frecuente del mismo bloque indica una caché pequeña o acceso repetido al mismo dato.

EventoBloques distintos1.ª lectura1.ª lectura (s)RelecturasRelecturas (s)
db file sequential read110,00010,001

Objetos con más tiempo de espera

Por el obj# de las esperas. El nombre viene de las líneas STAT del propio trace, cuando existen.

obj#NombreEspera (s)OcurrenciasEventos principales
50T0,0012db file sequential read

Esperando a la aplicación

SQL*Net message from client

La sesión terminó la llamada anterior y espera el próximo pedido de la aplicación. Es tiempo de la aplicación, de la red y del usuario, no de la base de datos.

Normal cuando
Aparece entre todas las llamadas. Las esperas largas y aisladas son el usuario pensando o la aplicación ocupada con otra cosa.
Preocupa cuando
Domina el tiempo total con muchas esperas cortas: la aplicación conversa demasiado con la base de datos (una fila por llamada, SQL dentro de un bucle). Con pocas esperas largas, la demora está en la aplicación, y ajustar el SQL no la resuelve.
Dónde mirar

Lectura de un bloque

db file sequential read

Lee un bloque del disco al buffer cache: acceso por índice, a la tabla por ROWID, a undo o a la cabecera de segmento.

Normal cuando
Acceso por índice a pocos bloques, con promedio de 0,1 a 1 ms en SSD o flash y de 5 a 10 ms en disco.
Preocupa cuando
Muchas lecturas: el plan lee demasiados bloques (índice poco selectivo, NESTED LOOPS con muchas filas). Promedio alto: almacenamiento lento o con contención.
Dónde mirar

Tiempo no contabilizado entre llamadas

tiempo no contabilizado entre llamadas

Tiempo entre el fin de una llamada de nivel 0 y el inicio de la siguiente sin ninguna espera registrada. Es la diferencia entre el tiempo total y la suma de las llamadas y de las esperas entre ellas.

Normal cuando
Pequeño: fracciones de milisegundo por llamada.
Preocupa cuando
Suma mucho: el trace se activó o desactivó a mitad de camino, el proceso quedó fuera de la CPU (servidor saturado), la aplicación tardó sin que apareciera la espera de cliente, o falta un archivo de la colección.
Dónde mirar

CPU en las llamadas FETCH

CPU: FETCH dbcalls

Tiempo de CPU de la sesión en la búsqueda de las filas. Alto: demasiadas lecturas lógicas (LIO), en general un plan que lee muchos más bloques de los que piden las filas devueltas.

Normal cuando
Es parte del trabajo normal de la base de datos.
Preocupa cuando
Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
Dónde mirar

Tiempo no contabilizado dentro de las llamadas

tiempo no contabilizado dentro de las llamadas

La parte de la duración de la llamada (e=) que no es CPU (c=) ni espera registrada dentro de ella.

Normal cuando
Pequeño. El valor negativo viene de la granularidad de la medición de CPU, no de un problema.
Preocupa cuando
Suma mucho: cola de CPU (más procesos listos que núcleos), paginación de memoria (swap) o código sin instrumentación de espera.
Dónde mirar

CPU en las llamadas PARSE

CPU: PARSE dbcalls

Tiempo de CPU de la sesión en el análisis del SQL (parse). Alto: hard parse por SQL sin bind, o parse repetido del mismo cursor (abrir y cerrar en cada ejecución).

Normal cuando
Es parte del trabajo normal de la base de datos.
Preocupa cuando
Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
Dónde mirar

CPU en las llamadas EXEC

CPU: EXEC dbcalls

Tiempo de CPU de la sesión en la ejecución: DML, apertura del cursor y cuerpo de bloques PL/SQL. Alto en PL/SQL: lógica pesada o SQL dentro de un bucle.

Normal cuando
Es parte del trabajo normal de la base de datos.
Preocupa cuando
Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
Dónde mirar

Enviando la respuesta

SQL*Net message to client

Tiempo para entregar un paquete de respuesta al sistema operativo. No mide la red hasta el cliente, solo la entrega al SO.

Normal cuando
Microsegundos por ocurrencia, una por llamada.
Preocupa cuando
El promedio sube a milisegundos: búfer de red del servidor lleno o red saturada.
Dónde mirar

CPU en las llamadas CLOSE

CPU: CLOSE dbcalls

Tiempo de CPU de la sesión en el cierre del cursor. Casi siempre pequeño.

Normal cuando
Es parte del trabajo normal de la base de datos.
Preocupa cuando
Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
Dónde mirar

Idle (inactiva)

Idle

La sesión espera trabajo. En un trace de sesión, casi siempre es SQL*Net message from client: tiempo de la aplicación, de la red y del usuario.

Normal cuando
Aparece entre las llamadas.
Preocupa cuando
Domina el tiempo total y el usuario se queja de la demora: la lentitud está fuera de la base de datos (aplicación, red, demasiadas idas y vueltas).
Dónde mirar

User I/O (lectura y escritura de datos)

User I/O

Lecturas y escrituras de datos hechas por la propia sesión.

Normal cuando
Siempre hay algo de I/O, con promedio bajo por lectura.
Preocupa cuando
Demasiados bloques (el plan lee más de lo necesario) o tiempo medio alto por lectura (almacenamiento lento).
Dónde mirar

No contabilizado

No contabilizado

Tiempo que el trace no explica por CPU ni por espera: dentro de las llamadas y entre ellas.

Normal cuando
Pequeño.
Preocupa cuando
Cola de CPU, paginación, huecos en el trace o un archivo que falta en la colección.
Dónde mirar

CPU

CPU

Tiempo de CPU de las llamadas a la base de datos (el c= de PARSE, EXEC y FETCH).

Normal cuando
Es el trabajo de la base de datos.
Preocupa cuando
Suma mucho: demasiadas lecturas lógicas (plan), parse en exceso o PL/SQL pesado.
Dónde mirar

Network (red)

Network

Enviar y recibir datos por SQL*Net, con la aplicación o con otra base de datos por dblink.

Normal cuando
Suma poco tiempo.
Preocupa cuando
Resultados grandes, arraysize bajo o dblink lento.
Dónde mirar

SQL recursivo (sentencias hijas)

SQL recursivo (sentencias hijas)

Tiempo de las llamadas que esta sentencia disparó: SQL dentro de funciones y procedimientos PL/SQL, triggers y consultas al diccionario.

Normal cuando
Sentencia PL/SQL que ejecuta otros SQL.
Preocupa cuando
Suma mucho en un SELECT o DML simple: función PL/SQL llamada por fila, o trigger pesado.
Dónde mirar
  • Qué sentencias hijas y cuánto cuesta cada una: detalle de la sentencia, SQL recursivo

WaitScope 1.7.0 · análisis realizado en el servidor · informe exportado el 29/10/2026 10:19:59