Gerçek execution plan'ı satır istatistikleriyle göster (ALLSTATS LAST)
OraclePerformansKomut
-- 1) Satir kaynagi istatistiklerini topla (yalniz bu sorgu icin):
SET SERVEROUTPUT OFF
SELECT /*+ gather_plan_statistics */ musteri_id, SUM(tutar)
FROM musteri_app.satislar
WHERE tarih >= DATE '2026-06-01'
GROUP BY musteri_id;
-- veya oturum boyunca: ALTER SESSION SET statistics_level = ALL;
-- 2) Ayni session'da son calisan cursor'in plani (E-Rows vs A-Rows):
SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(
sql_id => NULL,
cursor_child_no => NULL,
format => 'ALLSTATS LAST +PEEKED_BINDS +OUTLINE'));
-- 3) Baska session'daki / gecmisteki bir cursor:
SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('<sql_id>', NULL, 'ALLSTATS LAST +PEEKED_BINDS'));Ne yapar?
EXPLAIN PLAN tahminidir; bu yöntem gerçekten çalışmış planı her adımda Starts, E-Rows (tahmin), A-Rows (gerçek), A-Time, Buffers ve bellek kullanımıyla gösterir. Cardinality hatasının hangi adımda başladığını bulmanın en doğrudan yoludur.
Ne zaman kullanılır?
Yavaş tek bir SQL'i tune ederken, istatistik/histogram ihtiyacını kanıtlamak için, hint veya index değişikliğinin etkisini ölçerken.
Dikkat
Lisans gerektirmez. SET SERVEROUTPUT ON iken sql_id=>NULL son cursor olarak DBMS_OUTPUT çağrısını gösterir; önce OFF yap. statistics_level=ALL'u sistem genelinde açma, belirgin CPU ek yükü getirir. Hint SQL metnini değiştirdiği için yeni bir sql_id oluşur. Kullanıcının V$SQL_PLAN_STATISTICS_ALL okuma yetkisi olmalı (SELECT_CATALOG_ROLE).
İ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
- SQL Monitor raporu al (çalışan veya biten uzun SQL)
- Bir session için 10046 trace aç/kapat ve TKPROF ile özetle