Obtener un informe de SQL Monitor (SQL largo en ejecución o finalizado)
OracleRendimientoComando
-- List monitored SQL (longer than 5 s, parallel, or /*+ MONITOR */):
SELECT sql_id, status, username, sql_exec_id,
TO_CHAR(sql_exec_start,'YYYY-MM-DD HH24:MI:SS') AS exec_start,
ROUND(elapsed_time/1e6,1) AS elapsed_s,
ROUND(cpu_time/1e6,1) AS cpu_s,
buffer_gets, px_servers_allocated
FROM v$sql_monitor
ORDER BY sql_exec_start DESC
FETCH FIRST 20 ROWS ONLY;
-- TEXT report (actual rows, time and activity per plan line):
SET LONG 10000000 LONGCHUNKSIZE 10000000 LINESIZE 300 PAGESIZE 0 TRIMSPOOL ON
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
sql_id => '<sql_id>',
type => 'TEXT',
report_level => 'ALL') AS report
FROM dual;
-- Shareable HTML (interactive in a browser):
SPOOL /tmp/sqlmon_<sql_id>.html
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
sql_id => '<sql_id>', type => 'ACTIVE', report_level => 'ALL')
FROM dual;
SPOOL OFFQué hace
Real-Time SQL Monitoring muestra, para cada paso del plan de ejecución de un SQL largo o paralelo, las filas reales, el tiempo transcurrido, el uso de memoria/temp y la actividad de ASH; puede seguir el progreso mientras el SQL aún se ejecuta.
Cuándo usarlo
Cuando se pregunta si una consulta de batch/informe está atascada y cuánto le falta, para analizar la distribución de consultas paralelas (PX skew) y para encontrar diferencias entre las filas estimadas (E-Rows) y las reales.
Precaución
Requiere la licencia de Tuning Pack (Diagnostics Pack es un requisito previo). Por defecto solo se monitorean los SQL que consumen 5 s de CPU/I-O o que se ejecutan en paralelo; use el hint /*+ MONITOR */ para los demás. Los planes muy grandes (_sqlmon_max_planlines, por defecto 300) no se monitorean. Las entradas permanecen en memoria un tiempo limitado; en 12c+ los informes antiguos también están disponibles en DBA_HIST_REPORTS.
Relacionado
- Tomar un snapshot de AWR y generar un informe AWR entre dos snapshots
- Informe AWR diff (compare period) entre dos periodos
- Top wait events y top SQL desde ASH para los últimos minutos
- Ejecutar un análisis ADDM y obtener su informe
- Habilitar/deshabilitar el trace 10046 para una sesión y resumirlo con TKPROF
- Mostrar el plan de ejecución real con estadísticas de row source (ALLSTATS LAST)