Oracle 使用sql plan baseline 固定執行計划


         SQL 計划基線是一個旨在使指定 SQL 語句的性能可以接受的執行計划。

        從11g 開始,oracle 提供了執行計划管理SPM功能,方便DBA通過執行計划基線修正sql 錯誤的執行計划,避免sql 執行性能退化。

--create sql_plan_baseline from sql_tuning_task
begin
dbms_sqltune.create_sql_plan_baseline(task_name =>
             '&sql_id_tuning_task', owner_name => 'SYS', plan_hash_value
             => '&plan_hash_value');
end;
/

--crete sql_plan_baseline from cursor
declare
i integer ;
begin
i:=dbms_spm.load_plans_from_cursor_cache(sql_id=>'&sql_id',plan_hash_value=>'&plan_hash_value');
dbms_output.put_line('導入完成!' );
end;
/

--crete sql_plan_baseline from awr
declare
i integer ;
begin
i:=dbms_spm.load_plans_from_awr(begin_snap => &begin_snap, end_snap => &begin_snap);
dbms_output.put_line('導入完成!' );
end;
/
--create sql_plan_baseline from sql tuning set
declare
i integer ;
begin
i := dbms_spm.load_plans_from_sqlset(
     sqlset_name => 'sts_&sql_id'
     );
dbms_output.put_line('導入完成!' );
end;
/

--automatic plan Capture by system optimizer

alter system optimizer_capture_sql_plan_baselines=true;

--drop sql_plan_baseline
set serveroutput on
declare
   v_text  pls_integer;
begin
   v_text := dbms_spm.drop_sql_plan_baseline(sql_handle => '&sql_handle',plan_name  => null);
   dbms_output.put_line(v_text);
end;
/
--alert sql_plan_baseline (fix sql paln)
set serveroutput on
declare
v_text pls_integer;
begin
v_text := dbms_spm.alter_sql_plan_baseline(sql_handle => '&sql_handle',plan_name => 'sys_sql_plan_&sql_id',
    attribute_name => 'fixed',attribute_value => 'yes');
  dbms_output.put_line('plans altered: ' ||v_text );
end;
/
--evolve sql_plan_baseline(confirm and add accepted  plan to baseline)
set serveroutput on
declare
  l_plans_altered  clob;
begin
l_plans_altered := dbms_spm.evolve_sql_plan_baseline(
sql_handle      => '&sql_handle',
plan_name       => 'sys_sql_plan_&sql_id',
verify           =>'no',
commit        =>'yes');
dbms_output.put_line('plans altered: ' || l_plans_altered);
end;
/

--query sql_plan_baseline

select t.sql_handle,t.sql_text,t.plan_name,t.enabled,t.accepted,t.fixed,t.origin from dba_sql_plan_baselines t;

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM