Baseline planını FIXED yap, devre dışı bırak veya sil
OraclePerformansKomut
-- Planin icerigini gor:
SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(
sql_handle => '<sql_handle>',
plan_name => '<plan_name>',
format => 'TYPICAL'));
SET SERVEROUTPUT ON
DECLARE
n PLS_INTEGER;
BEGIN
-- FIXED: bu plan tercih edilir, yeni planlar otomatik evolve edilmez
n := DBMS_SPM.ALTER_SQL_PLAN_BASELINE(
sql_handle => '<sql_handle>', plan_name => '<plan_name>',
attribute_name => 'fixed', attribute_value => 'YES');
-- Kotu plani kullanima kapat (silmeden):
n := DBMS_SPM.ALTER_SQL_PLAN_BASELINE(
sql_handle => '<sql_handle>', plan_name => '<bad_plan_name>',
attribute_name => 'enabled', attribute_value => 'NO');
END;
/
-- Tek plani veya SQL'in tum baseline'ini sil:
DECLARE
n PLS_INTEGER;
BEGIN
n := DBMS_SPM.DROP_SQL_PLAN_BASELINE(sql_handle => '<sql_handle>', plan_name => '<plan_name>');
-- plan_name verilmezse SQL'in tum planlari silinir:
-- n := DBMS_SPM.DROP_SQL_PLAN_BASELINE(sql_handle => '<sql_handle>');
DBMS_OUTPUT.PUT_LINE(n || ' plan silindi');
END;
/Ne yapar?
Baseline'daki planların özniteliklerini yönetir: FIXED plan diğer kabul edilmiş planlara tercih edilir ve yeni planların otomatik evolve'unu durdurur; ENABLED=NO planı silmeden devre dışı bırakır; DROP kalıcı olarak kaldırır.
Ne zaman kullanılır?
Kritik SQL'de planı kesin olarak sabitlemek, yanlışlıkla kabul edilmiş kötü planı kapatmak, artık gerekmeyen baseline'ları temizlemek için.
Dikkat
Enterprise Edition gerekir. FIXED planlar veri büyüdükçe kötüleşebilir ve optimizer'ın daha iyi planı kullanmasını engeller; periyodik gözden geçir. Tüm planları ENABLED=NO olan SQL serbestçe optimize edilir. DROP geri alınamaz; önce DBMS_SPM.PACK_STGTAB_BASELINE ile staging tablosuna yedekle.
İ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