oracle清除执行计划,Oracle数据库9I中清除特定表相关执行计划案例
天萃荷净
在9i中因为某个执行计划因为Oracle Peeking绑定变量的控制导致现有的执行计划不正确,需要清除掉这条sql语句的执行计划.在10g中提供了dbms_shared_pool.purge,但是在9i中未提供好的方法。
一般来说可以通过对相关表的DDL操作,收集统计信息,授权操作可以实现清除对于表执行计划.注:这些操作不会只清空特定SQL执行计划,而是会清除该表相关的所有执行计划,所以操作需要慎重(影响肯定比flush shared_pool小)
模拟测试数据
SQL> create table t_xifenfei (id number,name varchar2(100));
Table created.
SQL> insert into t_xifenfei values(1,'www.xifenfei.com');
1 row created.
SQL> commit;
清除执行计划1:修改表结构
SQL> alter system flush shared_pool;
System altered.
SQL> select * from t_xifenfei;
ID NAME
---------- -------------------
1 www.xifenfei.com
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
OPERATION
------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS
SQL> alter table t_xifenfei add fei varchar2(10);
Table altered.
SQL> alter table t_xifenfei drop COLUMN fei;
Table altered.
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select count(*) from v$sql_plan where hash_value=1067507827;
COUNT(*)
----------
0
清除执行计划2:重新收集统计信息
--DBMS_STATS收集统计信息
SQL> alter system flush shared_pool;
System altered.
SQL> select * from t_xifenfei;
ID NAME
---------- -------------------
1 www.xifenfei.com
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
OPERATION
------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS
SQL> EXEC DBMS_STATS.gather_table_stats(user,'T_XIFENFEI');
PL/SQL procedure successfully completed.
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
no rows selected
--analyze收集统计信息(不推荐)
SQL> alter system flush shared_pool;
System altered.
SQL> select * from t_xifenfei;
ID NAME
---------- -------------------
1 www.xifenfei.com
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
OPERATION
------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS
SQL> analyze table t_xifenfei compute statistics;
Table analyzed.
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
no rows selected
清除执行计划3:创建INDEX
SQL> alter system flush shared_pool;
System altered.
SQL> select * from t_xifenfei;
ID NAME
---------- -------------------
1 www.xifenfei.com
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
OPERATION
------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS
SQL> create index i_txifenfei on t_xifenfei(id) online;
Index created.
SQL> drop index i_txifenfei ;
Index dropped.
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
no rows selected
清除执行计划3:GRANT/REVOKE操作
SQL> alter system flush shared_pool;
System altered.
SQL> select * from t_xifenfei;
ID NAME
---------- -------------------
1 www.xifenfei.com
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
OPERATION
------------------------------------------------------------
SELECT STATEMENT
TABLE ACCESS
SQL> GRANT SELECT ON T_XIFENFEI TO SYSTEM;
Grant succeeded.
SQL> select sql_text,HASH_VALUE from v$sqlAREA where sql_text like '%xifenfei';
SQL_TEXT HASH_VALUE
-------------------------------------------------- ----------
select * from t_xifenfei 1067507827
SQL> select OPERATION from v$sql_plan where hash_value=1067507827;
no rows selected
-----------------温馨提示--------------------
操作有风险,动手需谨慎
Oracle研究中心 www.oracleplus.net,
本文由大师惜分飞分享,转载请尽量保留本站网址。
--------------------------------------ORACLE-DBA----------------------------------------
最权威、专业的Oracle案例资源汇总之Oracle数据库9I中清除特定表相关执行计划案例
oracle清除执行计划,Oracle数据库9I中清除特定表相关执行计划案例相关推荐
- Oracle 恢复dmp文件到数据库表中 【数据系列 1】
Mac 恢复dmp文件数据到数据库表 软件环境:Mac电脑上安装的docker中安装的并且运行的镜像,参考自该博客docker安装oracle 我所运行安装的oracle版本为: Oracle Dat ...
- Oracle 恢复dmp文件到数据库表中(超大DMP) 【数据系列 3】
简述 本来我电脑上的docker安装的是oracle 11 结果 oracle 11 xe 支持的 tablespace 最大是11G,但是我的dmp文件是22个G的超大dmp文件.所以很明显是不行的 ...
- oracle行的唯一标识符,数据库表中的唯一标识符字段
ArcGIS 中使用的所有表和要素类必须包含一个能够唯一标识每行或每个要素的字段. 要在 ArcGIS 中用作唯一标识符,字段必须不为空.包含唯一值,并且属于以下数据类型之一:整型(仅限正值) 字符串 ...
- java代码执行了两次_Java中JComboBox的itemStateChanged事件执行两次的解释
今天做项目,用到了JComboBox,即下拉列表框.为了在被选中的项发生改变时获得被选中的项,所以使用的ItemStateChanged事件,可是问题就来了,每次触发该事件,它都执行两次,屡试不爽.一 ...
- php 操件文件指定编码,(PHP帮助)如果文件中存在特定编号,请执行此操作
这是一个与PHP有关的问题. 我到处寻找了以下解决方案,但没有找到对我有用的方法.如果有人可以帮助我,将不胜感激. 我的想法是创建一个登录页面,如果向用户提供/发送了"特定的"预定 ...
- 执行力七准则---工作中如何破解困难提高执行力
工作量增大,团队成员遇到一些问题,暴露了团队成员面临困难不会解决困难的问题. 2010年的时候,为了解决这样的问题,请2位积极能干的年轻人主持,特意给他们提供例子,并引导他们做分析和总结,做了如 ...
- python:当文件中出现特定字符串时执行robot用例
#coding:utf-8 import os import datetime import timedef execute_rpt_db_full_effe_cainiao_city():flag ...
- python循环结束执行后面代码_计算机程序中某种代码的反复执行,称为________。Python中的循环有重复一定次数的________,也有重复到某种情况结束的________。...
3. (2019高一下·浙江期末) 数制转换.将一个K进制(k<=10)数x转换成十进制数可采用如下方法:主要方法是从右向左,依次取数x的各位数字,分别计算出该数从右边数起的第i位数字与k(i- ...
- 在Visual C++中用ADO进行数据库编程(中)
在Visual C++中用ADO进行数据库编程(中) 4.执行SQL命令并取得结果记录集 为了取得结果记录集,我们定义一个指向Recordset对象的指针:_RecordsetPtr ...
最新文章
- 利用npm安装/删除/发布/更新/撤销发布包
- [Leetcode]@python 68. Text Justification
- 一天一道算法题--5.30---递归
- 2017.10.24 上升序列 思考记录
- 【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)
- 在excel工作表中c1单元格_Excel工作表中的11个逻辑函数应用技巧,中文解读,动图演示!...
- canvas 画点_css+canvas 随便画一个星空
- 将2010年的旧电脑升级为Win8.1遇到的问题及解决办法
- KND数控系统PLC开发环境
- 电视剧 | 黑镜S5E3 瑞秋洁柯小艾希莉
- 武大三行情书第一名---《螃蟹在剥我的壳》
- 企业微信防撤回插件 WeChatICU v1.0.1中文版
- 二进制数与二进制、十进制互化
- Docker入门笔记(1)
- 盘点10款超好用的数据可视化工具
- java需要用到英语_javaSE常用的英语单词
- OpenMV与PID控制
- 2022年5月5日,第28天
- python同时赋值_Python将多个变量赋值为同一个值?列表行为
- 精美html个人主页
热门文章
- 设置win10输入法的自学习功能 破个性化无法设置
- 期刊 论文 催编辑 英文邮件模板
- fastreport使用教程(fastreport报表编辑器)
- 如何让企业微信不显示「已读」
- 债权人死亡后债权人家属追债是否需要还
- 解惑:人工智能(AI)如何与中医的“道“和“术”融合?
- 桌面计算机怎么覆盖文件,Win7电脑桌面图标被覆盖的解决技巧
- 学车日记—科目二学习考试
- 等保2.0:Windows服务器-记录表
- URP 渲染顺序设置 RenderObjects