点击上方蓝色字体关注我们

为了更好获取和展示SQL的历史执行计划,达梦提供了 DBMS_XPLAN 系统包。DBMS_XPLAN 包用于历史执行计划的获取展示和清理。本期干货为大家介绍如何使用 DBMS_XPLAN包获取SQL历史执行计划。


环境说明



正文

一、开启参数
SQL> select name, type, value, sys_value, file_value from v$parameter where name ='ENABLE_MONITOR_PLNHIST';NAME TYPE VALUE SYS_VALUE FILE_VALUE---------------------- ------- ----- --------- ----------ENABLE_MONITOR_PLNHIST SESSION 0 0 0
SQL> alter session set 'ENABLE_MONITOR_PLNHIST'=1;
SQL> select name, type, value, sys_value, file_value from v$parameter where name ='ENABLE_MONITOR_PLNHIST';NAME TYPE VALUE SYS_VALUE FILE_VALUE---------------------- ------- ----- --------- ----------ENABLE_MONITOR_PLNHIST SESSION 1 0 0

二、执行测试SQL查看历史执行计划
SQL> select employee_name, employee_id from dmhr.employee t where employee_name like '马%';
SQL> create index dmhr.ix_emp_name on dmhr.employee(employee_name);
SQL> select employee_name, employee_id from dmhr.employee t where employee_name like '马%';
SQL> sp_flush_hist_plan;
select t.PLAN_HASH_VALUE, T.SQL_STR from SYS.SYSPLANHIST twhere t.SQL_STR like 'select employee_name, employee_id from dmhr.employee%';

SQL> set lineshow offSQL> DBMS_XPLAN.DISPLAY_PLANHIST(1990214725);

SQL> drop index dmhr.ix_emp_name;SQL> select employee_name, employee_id from dmhr.employee t where employee_name like '马%';SQL> sp_flush_hist_plan;SQL> DBMS_XPLAN.DISPLAY_PLANHIST(1990214725);

三、查询SYSPLANHIST获取历史执行计划
select t.OPERATION,t.TABLE_NAME,t.INDEX_NAME,t.DEPTH,t.CARDINALITY, t.ACCESS_PREDICATES, t.FILTER_PREDICATES, t.TIMECREATE, t.PLN_STRfrom SYSPLANHIST twhere t.PLAN_HASH_VALUE = 1990214725;

四、测试多表关联历史执行计划
select a.DEPARTMENT_ID,a.department_name,count(*)from dmhr.department ajoin dmhr.employee bon a.department_id=b.department_idwhere a.department_name = '开发部'group by a.DEPARTMENT_ID,a.department_name;
create index ix_dept_name on dmhr.department(department_name);
sp_flush_hist_plan;
select t.PLAN_HASH_VALUE, T.SQL_STR from SYS.SYSPLANHIST twhere t.SQL_STR like '%开发部%';
DBMS_XPLAN.DISPLAY_PLANHIST(-976726205);

五、删除历史执行计划:
DBMS_XPLAN.CLEAR_PLANHIST(sysdate-10, trunc(sysdate)-1);


总结

以上为本期干货。想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集或下方相关分享。在此邀请更多学员参与“达梦技术干货投稿活动”,稿件获选后将在达梦“干货分享”专栏进行发布,欢迎来稿!
作者:青城
审核:培训部


一周热文











达梦E学
微信号:DM-Elearning
扫码关注查看更多内容
点击下方在看,分享本文
文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




