teste-sintetico.trc
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.
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
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.
| Componente | Duración (s) | % del total | gráfico | Ocurrencias | Media (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 | |
| Total | 0,007010 | 100,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.
| Clase | Duración (s) | % del total | gráfico | Ocurrencias | Componentes 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 total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,005000 | 100,0 | aaaaaaaaaaaaa | select * from t where id=1 |
db file sequential read espera0,001 s · 18,5% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,001000 | 76,9 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000300 | 23,1 | bbbbbbbbbbbbb | select obj# from obj$ where x=1 |
CPU: FETCH dbcalls cpu0,000 s · 2,8% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000155 | 79,5 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000040 | 20,5 | bbbbbbbbbbbbb | select 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 total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000116 | 72,0 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000045 | 28,0 | bbbbbbbbbbbbb | select obj# from obj$ where x=1 |
CPU: PARSE dbcalls cpu0,000 s · 0,7% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000050 | 100,0 | aaaaaaaaaaaaa | select * from t where id=1 |
CPU: EXEC dbcalls cpu0,000 s · 0,2% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000010 | 66,7 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000005 | 33,3 | bbbbbbbbbbbbb | select obj# from obj$ where x=1 |
SQL*Net message to client espera0,000 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000002 | 100,0 | aaaaaaaaaaaaa | select * from t where id=1 |
CPU: CLOSE dbcalls cpu0,000 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000001 | 100,0 | aaaaaaaaaaaaa | select * from t where id=1 |
Por clase de espera
Idle0,005 s · 71,3% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,005000 | 100,0 | aaaaaaaaaaaaa | select * from t where id=1 |
User I/O0,001 s · 18,5% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,001000 | 76,9 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000300 | 23,1 | bbbbbbbbbbbbb | select obj# from obj$ where x=1 |
No contabilizado0,000 s · 6,4% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000116 | 26,0 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000045 | 10,1 | bbbbbbbbbbbbb | select obj# from obj$ where x=1 |
CPU0,000 s · 3,7% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000216 | 82,8 | aaaaaaaaaaaaa | select * from t where id=1 | |
| 2 | 0,000045 | 17,2 | bbbbbbbbbbbbb | select obj# from obj$ where x=1 |
Network0,000 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 1 | 0,000002 | 100,0 | aaaaaaaaaaaaa | select * 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 total | Inclusivo (s) | Tipo | Prof. | Exec | Fetch | Filas | LIO | PIO | SQL ID | Texto |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| FETCH | 2 | 0,000 | 0,002 | 2 | 13 | 0 | 2 | 0 |
| PARSE | 1 | 0,000 | 0,000 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,000 | 0,000 | 0 | 0 | 0 | 0 | 0 |
| CLOSE | 1 | 0,000 | 0,000 | 0 | 0 | 0 | 0 | 0 |
Llamadas de nivel 0 más largas
| Llamada | Duración (s) | CPU (s) | Inicio (+s) | Línea | LIO | PIO | Filas | Sentencia |
|---|---|---|---|---|---|---|---|---|
| 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ón | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 1 | 100,0 | 0,005000 | 100,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
db file sequential read2 ocurrencias · 0,001 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 1 | 50,0 | 0,000300 | 23,1 | |
| 1 ms ≤ e < 10 ms | 1 | 50,0 | 0,001000 | 76,9 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
SQL*Net message to client1 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 1 | 100,0 | 0,000002 | 100,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
FETCH (duración e de la llamada)2 ocurrencias · 0,002 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 1 | 50,0 | 0,000380 | 19,2 | |
| 1 ms ≤ e < 10 ms | 1 | 50,0 | 0,001600 | 80,8 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
PARSE (duración e de la llamada)1 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 1 | 100,0 | 0,000100 | 100,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
EXEC (duración e de la llamada)2 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 2 | 100,0 | 0,000030 | 100,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
CLOSE (duración e de la llamada)1 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 1 | 100,0 | 0,000002 | 100,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
Lecturas
lecturas (rangos de disco)2 ocurrencias · 0,001 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 5 ms | 2 | 100,0 | 0,001300 | 100,0 | |
| 5 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 15 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 15 ms ≤ e < 20 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 20 ms ≤ e < 25 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 25 ms ≤ e < 50 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 50 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
lecturas (rangos de SSD)2 ocurrencias · 0,001 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 15 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 15 µs ≤ e < 25 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 25 µs ≤ e < 50 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 50 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 500 µs | 1 | 50,0 | 0,000300 | 23,1 | |
| 500 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 1 | 50,0 | 0,001000 | 76,9 | |
| 10 ms ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,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.
| Evento | Bloques distintos | 1.ª lectura | 1.ª lectura (s) | Relecturas | Relecturas (s) |
|---|---|---|---|---|---|
| db file sequential read | 1 | 1 | 0,000 | 1 | 0,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# | Nombre | Espera (s) | Ocurrencias | Eventos principales |
|---|---|---|---|---|
| 50 | T | 0,001 | 2 | db file sequential read |
Detalle de las sentencias
#1 · SELECT
sql_id aaaaaaaaaaaaahv 111Texto
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
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,005000 | 74,4 | 1 | |
| espera | 0,001000 | 14,9 | 1 | |
| recursivo | 0,000390 | 5,8 | ||
| cpu | 0,000155 | 2,3 | 1 | |
| no contabilizado | 0,000116 | 1,7 | 4 | |
| cpu | 0,000050 | 0,7 | 1 | |
| cpu | 0,000010 | 0,1 | 1 | |
| espera | 0,000002 | 0,0 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000050 | 0,000100 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000010 | 0,000020 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000200 | 0,001600 | 1 | 10 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000001 | 0,000002 | 0 | 0 | 0 | 0 | 0 |
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 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 Id 2 · INDEX UNIQUE SCAN T_PK 2,0% del tiempo · 20,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,001470 | 98,0 | 8 | 80,0 | 1 | 0 | 0,001500 | 10 | 2 | 50 | ||
| 2 | 2 | 1 | 1 | 0,000030 | 2,0 | 2 | 20,0 | 0 | 0 | 0,000030 | 2 | 1 | 51 |
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 |
|---|---|---|
| 2 | 0,000 | select obj# from obj$ where x=1 |
#2 · SELECT
sql_id bbbbbbbbbbbbbhv 222Texto
select obj# from obj$ where x=1
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,000300 | 76,9 | 1 | |
| no contabilizado | 0,000045 | 11,5 | 2 | |
| cpu | 0,000040 | 10,3 | 1 | |
| cpu | 0,000005 | 1,3 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| EXEC | 1 | 0,000005 | 0,000010 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000040 | 0,000380 | 1 | 3 | 0 | 1 | 0 |
WaitScope 1.4.0 · análisis realizado en el servidor · informe exportado el 26/10/2026 18:51:54