1. 通过dbms_xplan.display_cursor查看指定sql都有哪些执行计划

SQL> select * from table(dbms_xplan.display_cursor('&sql_id',null,'TYPICAL PEEKED_BINDS'));

2. 查询该sql的历史执行情况

SQL> col snap_id for 99999999
SQL> col date_time for a30
SQL> col plan_hash for 9999999999
SQL> col executions for 99999999
SQL> col avg_etime_s heading 'etime/exec' for 9999999.99
SQL> col avg_lio heading 'buffer/exec' for 99999999999
SQL> col avg_pio heading 'diskread/exec' for 99999999999
SQL> col avg_cputime_s heading 'cputim/exec' for 9999999.99
SQL> col avg_row heading 'rows/exec' for 9999999
SQL> select * from(
select distinct
s.snap_id,
to_char(s.begin_interval_time,'mm/dd/yy_hh24mi') || to_char(s.end_interval_time,'_hh24mi') date_time,
sql.plan_hash_value plan_hash,
sql.executions_delta executions,
(sql.elapsed_time_delta/1000000)/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_etime_s,
sql.buffer_gets_delta/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_lio,
sql.disk_reads_delta/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_pio,
(sql.cpu_time_delta/1000000)/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_cputime_s,
sql.rows_processed_total/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_row
from dba_hist_sqlstat sql, dba_hist_snapshot s
where sql.instance_number =(select instance_number from v$instance)
and sql.dbid =(select dbid from v$database)
and s.snap_id = sql.snap_id
and sql_id = trim('&sql_id') order by s.snap_id desc)
where rownum <= 100;

3. 绑定执行计划

从前两步中可以看到该sql有两条执行计划,假如plan_hash_value为’2214001748’才是对的,而此时数据库选择的是另一条执行计划,我们可以通过执行以下function去将执行计划固定为我们想要的。
SQL> var temp number;
SQL> begin
:temp := dbms_spm.load_plans_from_cursor_cache(sql_id=>'66a4184u0t6hn', plan_hash_value=>2214001748);
end;
/

--转自
Oracle - SPM固定执行计划(一)
https://www.cnblogs.com/ddzj01/p/11365541.html
Oracle - SPM固定执行计划(二)
https://www.cnblogs.com/ddzj01/p/11377049.html

最新文章

  1. 一篇关于匿名函数(function(){})()不错的文章
  2. Visual Assist X 工具栏不显示 toolbar
  3. 6.7 Binder机制
  4. nginx lua处理图片
  5. (Delphi) Windows 32 API程序设计目录
  6. Javascript获取最近若干个月
  7. Nuget
  8. PHP自学之路-----javascript基础入门
  9. 利刃 MVVMLight 4:绑定和绑定的各种使用场景
  10. HTTP 0.9 / 1.0 / 1.1
  11. Leancloud+Valine打造Hexo个人博客极简评论系统
  12. 危险代码:如何使用Unsafe操作内存中的Java类和对象
  13. Let&#39;sencrypt.sh 抛出异常: Response: &lt;urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)&gt;
  14. python自动化系列
  15. django 应用中获取访问者ip地址
  16. laravel框架部署后有用命令
  17. new关键字创建对象带不带{}的区别
  18. tomcat7部署多个web应用不同编码,端口
  19. Python学习笔记(九)—— 函数
  20. Linux用户及用户组管理命令

热门文章

  1. 压缩感知重构算法之OLS算法python实现
  2. [TimLinux] WireShark 安装篇——CentOS7
  3. CF 1136A 1136B 1136C 1136D 1136E(Round546ABCDE)题解
  4. 强化学习环境OpenAi搭建,从虚拟机到Gym、Mujoco和mujoco-py的完整安装
  5. JS基础-原型链和继承
  6. 5分钟搞清楚Synchronized和Lock的概念与区别
  7. 《Java基础知识》动态代理(InvocationHandler)详解
  8. Linux服务器部署.Net Core笔记:三、CentOS 7上安装.NetCore运行环境
  9. TP5中find_in_set的用法
  10. 如何入侵SF服务器/充当GM刷元宝