如何清除某条SQL的执行计划
如果遇到绑定窥探导致执行计划慢的情况,想要清除某条SQL的执行计划,让它硬解析,找了很久都没有找到直接操作share pool的方法(除非alter system flush shared_pool),只能通过对表ddl使SQL硬解析。现在终于找到了,使用sys.dbms_shared_pool.purge
在11g下可以直接使用,但在10g上需要 alter session set events '5614566 trace name context forever'
--特定游标对象
SELECT ADDRESS, HASH_VALUE, EXECUTIONS, PARSE_CALLS
FROM V$SQL
WHERE SQL_ID = '7q9wc51p34my2';
00000007A4E9E040 1781682114 289583 289583
ALTER SESSION SET EVENTS '5614566 trace name context forever';
BEGIN
dbms_shared_pool.purge('00000007A4E9E040,1781682114','C');
END;
/
ALTER SESSION SET EVENTS '5614566 trace name context off';
--更新表的统计信息,使相关的游标对象失效
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'username',
TABNAME => 'tabname',
ESTIMATE_PERCENT => 100,
METHOD_OPT => 'for all columns size skewonly',
CASCADE => TRUE,
NO_INVALIDATE => FALSE); --使相关游标失效
END;
/
对于sqlserver
2008 R2以上版本可以直接使用dbcc命令清除指定计划: DBCC FREEPROCCACHE(plan_handle);
2005相对也比较麻烦,使用系统存储过程sp_create_plan_guide和sp_control_plan_guide处理
最新文章
- React Native 开发之 (05) flexbox布局
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛
- pyqt5 笔记(四)cx_Freeze 实现代码打包exe
- Android开发之创建App Widget和更新Widget内容
- poj 1254 Hansel and Grethel
- freemarker报错之十二
- OGG微服务架构入门
- es6+的javascript拓展内容
- vue(基础二)_组件,过滤器,具名插槽
- springmvc学习路线1-基本配置
- centos6.6安装hadoop-2.5.0(二、伪分布式部署)
- spring boot 热更新配置
- 三角化---深度滤波器---单目稠密重建(高翔slam---十三讲)
- [Hbase]Hbase知识大全
- [JavaScript] js实现保存文件到本地
- Windows Server 2008远程桌面端口更改方法
- 《Spring2之站立会议8》
- 【GO基础】神奇的iota特殊常量
- 探秘C#中的yield关键字
- java Webservice(一)HttpClient使用(一)
热门文章
- Hbase之修改表结构
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表‘XXX’中的标识列插入显式值。
- Django1.9开发博客(14)- 集成Xadmin
- css-九宫格自适应的实现
- 20150207读书笔记<;深入理解计算机系统2-1>;
- Sql Server 删除所有表
- Spring 事务管理 01 ——
- Educational Codeforces Round 14 D. Swaps in Permutation
- 读javascript高级程序设计09-BOM
- yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)