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%'

image

--根据sql hash_value、child_number 创建store outline

     begin

     dbms_outln.create_outline(3358958100,0);

   end;

/

--查看生成的store outline以及包含的hint

企业微信截图_16391223311460

image

   新生成的outline 使用状态显示unused, 设置参数启用outline

  alter system set use_stored_outlines=default;

再次查询,outline 状态已经变成使用,从sql 执行计划也能看出使用了outline

企业微信截图_16391236918730

企业微信截图_16391238207875

posted @ 2021-12-10 16:44  踏雪无痕2017  阅读(197)  评论(0)    收藏  举报