1. 程式人生 > 其它 >Oracle store outline 固定sql執行計劃

Oracle store outline 固定sql執行計劃

store outline 是一些sql hint 的集合,能夠使優化器產生sql 穩定的執行計劃,主要應用於9i 以及之前的版本,隨著10g sql profile、11g sql plan baseline、sql patch 的引入已經不推薦使用,但是作為DBA,有必要知道如何使用。

--create store outline from sql cursor

--9i 以及之前

create outline on sql_text ;

--10g以及之後

begin

dbms_outln.create_outline(&sql_hash_value,&child_number);

end;

/

--query store outline

select * from dba_outlines

select * from dba_outline_hints


--drop store outline

drop outline outline_name;


--example

--獲取需要固定執行計劃的sql遊標的hash_value、child_number

select t.SQL_TEXT,t.HASH_VALUE,t.CHILD_NUMBER from v$sql t where t.SQL_TEXT like 'select * from HR.EMPLOYEES%'

--根據sql hash_value、child_number 建立store outline

begin

dbms_outln.create_outline(3358958100,0);

end;

/

--檢視生成的store outline以及包含的hint


新生成的outline 使用狀態顯示unused, 設定引數啟用outline

alter system set use_stored_outlines=default;

再次查詢,outline 狀態已經變成使用,從sql 執行計劃也能看出使用了outline