ASH ile anlık/son dakikaların top wait event ve top SQL analizi
OraclePerformansKomut
-- Son 30 dk: wait event dagilimi (her ornek ~1 sn aktif session zamani)
SELECT NVL(event, 'ON CPU') AS event, wait_class,
COUNT(*) AS samples,
ROUND(RATIO_TO_REPORT(COUNT(*)) OVER () * 100, 1) AS pct
FROM v$active_session_history
WHERE sample_time > SYSTIMESTAMP - INTERVAL '30' MINUTE
GROUP BY NVL(event, 'ON CPU'), wait_class
ORDER BY samples DESC
FETCH FIRST 10 ROWS ONLY;
-- Son 30 dk: top SQL (CPU / User I/O kirilimi ile)
SELECT sql_id, sql_opname,
COUNT(*) AS samples,
SUM(CASE WHEN session_state = 'ON CPU' THEN 1 ELSE 0 END) AS cpu,
SUM(CASE WHEN wait_class = 'User I/O' THEN 1 ELSE 0 END) AS user_io,
ROUND(RATIO_TO_REPORT(COUNT(*)) OVER () * 100, 1) AS pct
FROM v$active_session_history
WHERE sample_time > SYSTIMESTAMP - INTERVAL '30' MINUTE
AND sql_id IS NOT NULL
GROUP BY sql_id, sql_opname
ORDER BY samples DESC
FETCH FIRST 10 ROWS ONLY;
-- Daha eski donem: DBA_HIST_ACTIVE_SESS_HISTORY (10 sn'de bir ornek; COUNT(*)*10 = sn)
-- Hazir ASH raporu (son 30 dk):
SET LINESIZE 8000 PAGESIZE 0 TRIMSPOOL ON HEADING OFF FEEDBACK OFF
SELECT output
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_TEXT(
l_dbid => (SELECT dbid FROM v$database),
l_inst_num => (SELECT instance_number FROM v$instance),
l_btime => SYSDATE - 30/1440,
l_etime => SYSDATE));
-- Etkilesimli: @?/rdbms/admin/ashrpt.sqlNe yapar?
Active Session History örneklerinden son dakikalarda DB time'ın hangi wait event'lere ve hangi SQL'lere gittiğini yüzde olarak çıkarır; AWR snapshot'ını beklemeden olay anında teşhis sağlar.
Ne zaman kullanılır?
Canlı yavaşlık sırasında, kısa süreli spike'larda (AWR ortalamasında kaybolan), belirli bir session/SQL'in neyi beklediğini görmek için.
Dikkat
V$ACTIVE_SESSION_HISTORY ve DBA_HIST_ACTIVE_SESS_HISTORY sorgulamak Diagnostics Pack lisansı gerektirir. ASH örneklemdir: sample sayısı süre tahminidir, tam ölçüm değildir; çok kısa SQL'ler görünmeyebilir. Bellek içi ASH buffer'ı yoğun sistemlerde yalnızca birkaç saati tutar.
İlgili
- AWR snapshot al ve iki snapshot arası AWR raporu üret
- İki dönemi karşılaştıran AWR diff (compare period) raporu
- ADDM analizini çalıştır ve raporunu al
- SQL Monitor raporu al (çalışan veya biten uzun SQL)
- Bir session için 10046 trace aç/kapat ve TKPROF ile özetle
- Gerçek execution plan'ı satır istatistikleriyle göster (ALLSTATS LAST)