Cursor cache'teki iyi planı SQL Plan Baseline olarak yükle
OraclePerformansKomut
-- 1) SQL'in planlarini ve performansini karsilastir:
SELECT sql_id, child_number, plan_hash_value, executions,
ROUND(elapsed_time/1e3/NULLIF(executions,0),1) AS ms_per_exec,
sql_plan_baseline
FROM v$sql
WHERE sql_id = '<sql_id>';
-- 2) Secilen planı baseline olarak yukle:
SET SERVEROUTPUT ON
DECLARE
n PLS_INTEGER;
BEGIN
n := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(
sql_id => '<sql_id>',
plan_hash_value => <plan_hash_value>,
fixed => 'NO',
enabled => 'YES');
DBMS_OUTPUT.PUT_LINE(n || ' plan yuklendi');
END;
/
-- 3) Baseline'i dogrula:
SELECT sql_handle, plan_name, origin, enabled, accepted, fixed, reproduced,
TO_CHAR(last_executed,'YYYY-MM-DD HH24:MI') AS last_exec
FROM dba_sql_plan_baselines
WHERE signature = (SELECT exact_matching_signature FROM v$sql
WHERE sql_id = '<sql_id>' AND ROWNUM = 1);
-- Sonraki calistirmalarda v$sql.sql_plan_baseline dolu olmali.Ne yapar?
SQL Plan Management ile seçilen planı kabul edilmiş (ACCEPTED) baseline yapar; optimizer artık yalnızca baseline'daki kabul edilmiş planları kullanır, yeni bulduğu planları evolve edilene kadar beklemeye alır.
Ne zaman kullanılır?
Plan regresyonunda bilinen iyi plana dönmek için, upgrade/istatistik değişikliği öncesi kritik SQL'lerin planlarını korumak için.
Dikkat
Enterprise Edition'da ek lisans gerekmez (SE2'de SQL başına tek baseline planı ile sınırlıdır). ADMINISTER SQL MANAGEMENT OBJECT yetkisi gerekir. Baseline, SQL metninin birebir aynısına (signature) uygulanır; literal kullanan SQL'lerde işe yaramaz. Planda kullanılan index düşürülürse plan üretilemez (REPRODUCED=NO) ve optimizer serbest kalır. OPTIMIZER_USE_SQL_PLAN_BASELINES=TRUE olmalı (varsayılan).
İ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