DBAtlas · Veritabanı operasyon atlası

SQL Monitor raporu al (çalışan veya biten uzun SQL)

OraclePerformans

Komut

-- 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 OFF

Ne 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.

DBAtlas'ta aç →

İlgili