DBAtlas · Veritabanı operasyon atlası

Gerçek execution plan'ı satır istatistikleriyle göster (ALLSTATS LAST)

OraclePerformans

Komut

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

DBAtlas'ta aç →

İlgili