Получить отчёт SQL Monitor (выполняющийся или завершённый долгий SQL)
OracleПроизводительностьКоманда
-- 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 OFFЧто делает
Real-Time SQL Monitoring показывает для каждого шага плана выполнения долгого или параллельного SQL фактическое число строк, затраченное время, использование памяти/temp и активность ASH; можно следить за ходом, пока SQL ещё выполняется.
Когда использовать
Когда нужно понять, завис ли пакетный/отчётный запрос и сколько осталось, для анализа распределения параллельного запроса (PX skew) и для поиска расхождений между оценочным (E-Rows) и фактическим числом строк.
Внимание
Требует лицензии Tuning Pack (Diagnostics Pack — обязательное условие). По умолчанию отслеживаются только SQL, потребившие 5 s CPU/I-O, или выполняющиеся параллельно; для остальных используйте хинт /*+ MONITOR */. Очень большие планы (_sqlmon_max_planlines, по умолчанию 300) не отслеживаются. Записи хранятся в памяти ограниченное время; в 12c+ старые отчёты доступны также из DBA_HIST_REPORTS.
Связанные материалы
- Сделать снимок AWR и сформировать отчёт AWR между двумя снимками
- Отчёт AWR diff (compare period) между двумя периодами
- Топ wait events и топ SQL из ASH за последние минуты
- Выполнить анализ ADDM и получить отчёт
- Включить/выключить трассировку 10046 для сессии и обобщить её через TKPROF
- Показать фактический план выполнения со статистикой row source (ALLSTATS LAST)