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