删除、绑定执行计划

2019-07-30  本文已影响0人  Reiko士兵
  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获得。

上一篇下一篇

猜你喜欢

热点阅读