美文网首页
删除、绑定执行计划

删除、绑定执行计划

作者: Reiko士兵 | 来源:发表于2019-07-30 15:15 被阅读0次
    1. coe_xfr_sql_profile.sql
    2. DBA_SQL_PROFILES
    3. v$sql
    4. v$sqlarea
    一、背景

    有时候sql执行的时候并没有去走最优的执行计划,如果期间没有对表和索引进行过变更,这个时候就需要我们人工介入,将sql绑定到最优的执行计划上来。

    二、删除执行计划的sql_profile

    sql_profile主要用于绑定执行计划,并不是所有sql都有sql_profile,也并不是有sql_profile的sql就一定在使用sql_profile,判断当前待绑定sql当前是否在使用sql_profile,执行以下查询:

    找出sql当前在用的sql_profile
    SELECT name profile_name
    FROM   dba_sql_profiles
    WHERE  name LIKE '%&sql_id%';
    

    若查询返回为空,则当前sql并不在使用sql_profile,直接至三、绑定执行计划即可。若有,则执行以下命令删除绑定执行计划的sql_profile:

    删除sql_profile
    exec dbms_sqltune.drop_sql_profile('&profile_name');
    
    三、绑定执行计划

    执行脚本 coe_xfr_sql_profile.sql,按脚本提示输入sql的sql_id以及待绑定的执行计划(Plan Hash Value),脚本运行结束后会生成一个绑定执行计划的sql脚本,执行即可。

    四、关于清除sql的执行计划
    exec dbms_shared_pool.purge('adress,hash_value','C');
    

    其中的address和hash_value可以通过查询视图v$sql或者v$sqlarea获得。

    相关文章

      网友评论

          本文标题:删除、绑定执行计划

          本文链接:https://www.haomeiwen.com/subject/aphnrctx.html