SQL Monitor raporu al (çalışan veya biten uzun SQL)
OraclePerformansKomut
-- Izlenen SQL'leri listele (5 sn'den uzun, paralel veya /*+ 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 rapor (plan satiri bazinda gercek satir, sure ve aktivite):
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;
-- Paylasilabilir HTML (tarayicida interaktif):
SPOOL /tmp/sqlmon_<sql_id>.html
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
sql_id => '<sql_id>', type => 'ACTIVE', report_level => 'ALL')
FROM dual;
SPOOL OFFNe yapar?
Real-Time SQL Monitoring, uzun süren veya paralel bir SQL'in execution plan'ının her adımında gerçek satır sayısını, harcanan süreyi, bellek/temp kullanımını ve ASH aktivitesini gösterir; SQL hâlâ çalışırken bile ilerlemeyi görürsün.
Ne zaman kullanılır?
Batch/rapor sorgusu "takıldı mı, ne kadar kaldı" sorusunda, paralel sorgu dağılımı (PX skew) analizinde, tahmin (E-Rows) ile gerçek satır farkını bulmak için.
Dikkat
Tuning Pack lisansı gerekir (Diagnostics Pack ön koşuldur). Varsayılan olarak yalnızca 5 sn CPU/I-O süren veya paralel çalışan SQL izlenir; diğerleri için /*+ MONITOR */ hint'i kullan. Çok satırlı planlar (_sqlmon_max_planlines, varsayılan 300) izlenmez. Kayıtlar bellekte sınırlı süre tutulur; 12c+ sonrası raporlar DBA_HIST_REPORTS'tan da alınabilir.
İlgili
- AWR snapshot al ve iki snapshot arası AWR raporu üret
- İki dönemi karşılaştıran AWR diff (compare period) raporu
- ASH ile anlık/son dakikaların top wait event ve top SQL analizi
- ADDM analizini çalıştır ve raporunu al
- Bir session için 10046 trace aç/kapat ve TKPROF ile özetle
- Gerçek execution plan'ı satır istatistikleriyle göster (ALLSTATS LAST)