Oracle - SPM固定执行计划
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
最新文章
- 一篇关于匿名函数(function(){})()不错的文章
- Visual Assist X 工具栏不显示 toolbar
- 6.7 Binder机制
- nginx lua处理图片
- (Delphi) Windows 32 API程序设计目录
- Javascript获取最近若干个月
- Nuget
- PHP自学之路-----javascript基础入门
- 利刃 MVVMLight 4:绑定和绑定的各种使用场景
- HTTP 0.9 / 1.0 / 1.1
- Leancloud+Valine打造Hexo个人博客极简评论系统
- 危险代码:如何使用Unsafe操作内存中的Java类和对象
- Let&#39;sencrypt.sh 抛出异常: Response: <;urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)>;
- python自动化系列
- django 应用中获取访问者ip地址
- laravel框架部署后有用命令
- new关键字创建对象带不带{}的区别
- tomcat7部署多个web应用不同编码,端口
- Python学习笔记(九)—— 函数
- Linux用户及用户组管理命令
热门文章
- 压缩感知重构算法之OLS算法python实现
- [TimLinux] WireShark 安装篇——CentOS7
- CF 1136A 1136B 1136C 1136D 1136E(Round546ABCDE)题解
- 强化学习环境OpenAi搭建,从虚拟机到Gym、Mujoco和mujoco-py的完整安装
- JS基础-原型链和继承
- 5分钟搞清楚Synchronized和Lock的概念与区别
- 《Java基础知识》动态代理(InvocationHandler)详解
- Linux服务器部署.Net Core笔记:三、CentOS 7上安装.NetCore运行环境
- TP5中find_in_set的用法
- 如何入侵SF服务器/充当GM刷元宝