Bekleyen (kabul edilmemiş) baseline planlarını evolve et
OraclePerformansKomut
-- 1) Kabul bekleyen planlar:
SELECT sql_handle, plan_name, origin, enabled, accepted, fixed,
TO_CHAR(created,'YYYY-MM-DD HH24:MI') AS created
FROM dba_sql_plan_baselines
WHERE accepted = 'NO'
ORDER BY created DESC;
-- 2) Evolve gorevi: aday planı kabul edilmis planla karsilastirarak calistirir
VAR tname VARCHAR2(128)
VAR ename VARCHAR2(128)
BEGIN
:tname := DBMS_SPM.CREATE_EVOLVE_TASK(
sql_handle => '<sql_handle>',
time_limit => 600,
task_name => 'EVOLVE_<sql_handle>');
:ename := DBMS_SPM.EXECUTE_EVOLVE_TASK(task_name => :tname);
END;
/
SET LONG 1000000 LONGCHUNKSIZE 1000000 LINESIZE 200 PAGESIZE 0
SELECT DBMS_SPM.REPORT_EVOLVE_TASK(
task_name => :tname, execution_name => :ename,
type => 'TEXT', level => 'TYPICAL', section => 'ALL')
FROM dual;
-- 3) Raporda oneri varsa (daha iyi oldugu kanitlanan planlari) kabul et:
SET SERVEROUTPUT ON
DECLARE
n PLS_INTEGER;
BEGIN
n := DBMS_SPM.IMPLEMENT_EVOLVE_TASK(task_name => :tname);
DBMS_OUTPUT.PUT_LINE(n || ' plan kabul edildi');
END;
/
EXEC DBMS_SPM.DROP_EVOLVE_TASK(task_name => :tname);Ne yapar?
Baseline varken optimizer'ın bulduğu yeni planlar ACCEPTED=NO olarak saklanır. Evolve görevi bu adayları gerçek çalıştırmayla kabul edilmiş planla karşılaştırır; yalnızca belirgin şekilde daha iyi olanları kabul eder.
Ne zaman kullanılır?
Baseline'lı SQL'lerde yeni index/istatistik sonrası daha iyi plan olasılığı doğduğunda; 12c+ otomatik SYS_AUTO_SPM_EVOLVE_TASK sonuçlarını beklemeden manuel karar vermek için.
Dikkat
Enterprise Edition gerekir. Evolve SQL'i gerçekten çalıştırır (DML'de yalnızca sorgu kısmı); ağır SQL'lerde time_limit ver ve yoğun saatlerde çalıştırma. ADMINISTER SQL MANAGEMENT OBJECT ve ADVISOR yetkileri gerekir. Planı SYS olarak parse edilmiş SQL'ler evolve edilemez (ORA-16963); uygulama kullanıcısıyla çalıştır.
İ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