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

WaitScope

teste-sintetico.trc

Analizado el 26/10/2026 18:51:43 · 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
teste1
Servidor
teste-node
Sesión
10.20 · pid 4242
Módulo
modulo (x)
Unidad de tiempo
microsegundos
Archivo en el servidor
/tmp/teste_ora_1.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 el 100%. Haga clic en el nombre de un componente o de una clase para ver qué mide y cuándo preocupa. El tiempo no contabilizado dentro de las llamadas suele indicar cola de CPU o código sin instrumentación; un valor negativo se debe a 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

Esperando a la aplicación

SQL*Net message from client

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

Normal cuando
Entre llamadas, siempre aparece. Las esperas largas y aisladas son el usuario pensando o la aplicación haciendo 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, bucle de SQL). Con pocas esperas largas, la demora está en la aplicación.
Dónde mirar
Número de esperas (idas y vueltas), promedio por espera, llamadas FETCH con pocas filas cada una.

Lectura de un bloque

db file sequential read

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

Normal cuando
Acceso por índice a pocos bloques. Promedio de 0,1 a 1 ms en SSD/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
Lecturas por objeto, histograma de las lecturas y las operaciones destacadas en el plan.

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
Alto: el trace se activó o desactivó a mitad, 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
Huecos grandes en el tiempo, período del trace y, en una colección, si llegaron todos los archivos.

CPU en las llamadas FETCH

CPU: FETCH dbcalls

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

Normal cuando
Parte del trabajo de la base de datos.
Preocupa cuando
Domina el tiempo total: revise las llamadas y las sentencias que más CPU consumen.
Dónde mirar
Llamadas por tipo y LIO por ejecución.

Tiempo no contabilizado dentro de las llamadas

tiempo no contabilizado dentro de las llamadas

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

Normal cuando
Pequeño. Un valor negativo viene de la granularidad de la medición de CPU.
Preocupa cuando
Alto: cola de CPU (más procesos listos que núcleos), paginación de memoria (swap) o código sin instrumentación.
Dónde mirar
Carga de CPU del servidor en ese horario y la memoria libre.

CPU en las llamadas PARSE

CPU: PARSE dbcalls

Tiempo de CPU consumido por 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
Parte del trabajo de la base de datos.
Preocupa cuando
Domina el tiempo total: revise las llamadas y las sentencias que más CPU consumen.
Dónde mirar
Llamadas por tipo y LIO por ejecución.

CPU en las llamadas EXEC

CPU: EXEC dbcalls

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

Normal cuando
Parte del trabajo de la base de datos.
Preocupa cuando
Domina el tiempo total: revise las llamadas y las sentencias que más CPU consumen.
Dónde mirar
Llamadas por tipo y LIO por ejecución.

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
Casi siempre microsegundos, una vez por llamada.
Preocupa cuando
Promedio alto: buffer de red del servidor lleno o red saturada.
Dónde mirar
Promedio por espera.

CPU en las llamadas CLOSE

CPU: CLOSE dbcalls

Tiempo de CPU consumido por la sesión al cerrar el cursor. Casi siempre pequeño.

Normal cuando
Parte del trabajo de la base de datos.
Preocupa cuando
Domina el tiempo total: revise las llamadas y las sentencias que más CPU consumen.
Dónde mirar
Llamadas por tipo y LIO por ejecución.

Idle (inactiva)

Idle

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

Normal cuando
Entre 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
Número de llamadas y promedio por espera.

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.
Preocupa cuando
Demasiados bloques (el plan lee más de lo necesario) o tiempo medio alto por lectura (almacenamiento lento).
Dónde mirar
Lecturas por objeto, histograma de las lecturas, plan de las sentencias que más leen.

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
Los dos componentes de tiempo no contabilizado.

CPU

CPU

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

Normal cuando
Es el trabajo de la base de datos.
Preocupa cuando
Alto: demasiadas lecturas lógicas (plan), parse en exceso o PL/SQL pesado.
Dónde mirar
LIO por ejecución y las llamadas que más CPU consumen.

Network (red)

Network

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

Normal cuando
Pequeño.
Preocupa cuando
Resultados grandes, arraysize bajo o dblink lento.
Dónde mirar
Eventos SQL*Net more data y los de dblink.

SQL recursivo (sentencias hijas)

SQL recursivo (sentencias hijas)

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

Normal cuando
Sentencia PL/SQL que ejecuta otros SQL.
Preocupa cuando
Alto en un SELECT o DML simple: función PL/SQL llamada por fila, trigger pesado.
Dónde mirar
La lista de SQL recursivo de la sentencia.

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,0aaaaaaaaaaaaaselect * from t where id=1
db file sequential read espera0,001 s · 18,5% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00100076,9aaaaaaaaaaaaaselect * from t where id=1
20,00030023,1bbbbbbbbbbbbbselect obj# from obj$ where x=1
CPU: FETCH dbcalls cpu0,000 s · 2,8% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00015579,5aaaaaaaaaaaaaselect * from t where id=1
20,00004020,5bbbbbbbbbbbbbselect obj# from obj$ where x=1
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,0aaaaaaaaaaaaaselect * from t where id=1
20,00004528,0bbbbbbbbbbbbbselect obj# from obj$ where x=1
CPU: PARSE dbcalls cpu0,000 s · 0,7% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000050100,0aaaaaaaaaaaaaselect * from t where id=1
CPU: EXEC dbcalls cpu0,000 s · 0,2% del tiempo total · 2 sentencias
#Tiempo (s)% del totalgráficoSQL IDTexto
10,00001066,7aaaaaaaaaaaaaselect * from t where id=1
20,00000533,3bbbbbbbbbbbbbselect obj# from obj$ where x=1
SQL*Net message to client espera0,000 s · 0,0% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000002100,0aaaaaaaaaaaaaselect * from t where id=1
CPU: CLOSE dbcalls cpu0,000 s · 0,0% del tiempo total · 1 sentencia
#Tiempo (s)% del totalgráficoSQL IDTexto
10,000001100,0aaaaaaaaaaaaaselect * from t where id=1

Por clase de espera

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

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 aaaaaaaaaaaaa select * from t where id=1
2 0,000 0,0 0,000 SELECT 1 1 1 1 3 1 bbbbbbbbbbbbb select obj# from obj$ where x=1

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=1
PARSE 0,000100 0,000050 0,000 17 0 0 0 #1 select * from t where id=1
EXEC 0,000020 0,000010 0,000 18 0 0 0 #1 select * from t where id=1
CLOSE 0,000002 0,000001 0,007 35 0 0 0 #1 select * from t where id=1

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

Detalle de las sentencias

#1 · SELECT

sql_id aaaaaaaaaaaaahv 111
Peso en el tiempo total
0,007 s
95,9% del tiempo total
Inclusivo
0,002 s
todas las llamadas de la sentencia
Profundidad
0
invocada por la aplicación

Texto

select * from t12 where id=1
  • 1 T: operación 1 del plan
  • 2 T, tabla del índice T_PK: operación 2 del plan

Perfil de la sentencia

ComponenteDuración (s)%Ocurrencias
espera0,00500074,41
espera0,00100014,91
recursivo0,0003905,8
cpu0,0001552,31
no contabilizado0,0001161,74
cpu0,0000500,71
cpu0,0000100,11
espera0,0000020,01
cpu0,0000010,01

Llamadas

LlamadaCantidadCPU (s)Duración (s)Disco (PIO)Consistente (CR)Actual (CU)FilasMisses
PARSE10,0000500,00010000001
EXEC10,0000100,00002000000
FETCH10,0002000,001600110010
CLOSE10,0000010,00000200000

Plan de ejecución 10

De las líneas STAT del trace.

Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella

  1. 1 Id 1 · TABLE ACCESS BY INDEX ROWID T 98,0% del tiempo · 80,0% de las lecturas lógicas
    Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
  2. 2 Id 2 · INDEX UNIQUE SCAN T_PK 2,0% del tiempo · 20,0% de las lecturas lógicas
IdOperaciónExec.FilasFilas/execEstimadoTiempo propio (s)% tiempoLIO propio% LIOPRPWTiempo (s)CRCostoobj
11 110,00147098,0880,0100,00150010250
22 110,0000302,0220,0000,0000302151

Acceso a la tabla por ROWID del índice

TABLE ACCESS BY INDEX ROWID

Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.

Buena cuando
Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
Mala cuando
Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
En el plan, mire
Compare las filas del index scan justo debajo con las de esta operación: si aquí quedan muchas menos, el predicado está en la tabla y no en el índice.

Búsqueda por clave única

INDEX UNIQUE SCAN

Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.

Buena cuando
Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
Mala cuando
Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
En el plan, mire
Exec y el LIO propio sumado.

Toque una operación para ver qué hace y cuándo es buena o mala. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (sus row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cerrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.

SQL recursivo ejecutado por esta sentencia

#Duración (s)Texto
20,000select obj# from obj$ where x=1

#2 · SELECT

sql_id bbbbbbbbbbbbbhv 222
Peso en el tiempo total
0,000 s
0,0% del tiempo total
Inclusivo
0,000 s
todas las llamadas de la sentencia
Profundidad
1
SQL recursivo

Texto

select obj# from obj$ where x=1

Perfil de la sentencia

ComponenteDuración (s)%Ocurrencias
espera0,00030076,91
no contabilizado0,00004511,52
cpu0,00004010,31
cpu0,0000051,31

Llamadas

LlamadaCantidadCPU (s)Duración (s)Disco (PIO)Consistente (CR)Actual (CU)FilasMisses
EXEC10,0000050,00001000000
FETCH10,0000400,00038013010

WaitScope 1.4.0 · análisis realizado en el servidor · informe exportado el 26/10/2026 18:51:54