[转帖]清除掉shared pool中某条sql语句方法
https://www.xifenfei.com/2012/02/%E6%B8%85%E9%99%A4%E6%8E%89shared-pool%E4%B8%AD%E6%9F%90%E6%9D%A1sql%E8%AF%AD%E5%8F%A5%E6%96%B9%E6%B3%95.html
作者:惜分飞版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在论坛中看到一个帖子,如何清除掉shared pool中某条sql语句,如果是在10g以前的版本,那估计会比较麻烦,为了删除一条sql语句记录,需要清空整个shared pool,在10g中提供了新的dbms_shared_pool包可以实现该功能(如果该包没有安装,可以通过?/rdbms/admin/dbmspool.sql安装),下面我通过在11g中试验证明该问题
1.数据库版本信息
| SQL> select* fromv$version;BANNER----------------------------------------------------------------------Oracle Database11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE    11.2.0.1.0      ProductionTNS for32-bitWindows: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production | 
2.模拟一条sql语句
| SQL> createtablexff as  2  select* fromdba_tables  3  whererownum<10;表已创建。SQL> selectcount(*) fromxff;  COUNT(*)----------         9SQL> col sql_text fora30SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';ADDRESS  HASH_VALUE SQL_TEXT-------- ---------- ------------------------------1EFB91B8 3642190903 selectcount(*) fromxff | 
3.打破神话一:权限操作
对表进行权限操作,可以清除该表在shared pool中关于该表记录
| SQL> grantselectonxff tochf;授权成功。SQL> col sql_text fora30SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';ADDRESS  HASH_VALUE SQL_TEXT-------- ---------- ------------------------------1EFB91B8 3642190903 selectcount(*) fromxffSQL> revokeselectonxff fromchf;撤销成功。SQL> col sql_text fora30SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';ADDRESS  HASH_VALUE SQL_TEXT-------- ---------- ------------------------------1EFB91B8 3642190903 selectcount(*) fromxff | 
证明grant和revoke操作没有清除shared pool中关于该表的sql语句
4.打破神话二:ddl操作
对表进行ddl操作,可以清除该表在shared pool中关于该表记录
| SQL> altertablexff addowner1 varchar2(100);表已更改。SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';ADDRESS  HASH_VALUE SQL_TEXT-------- ---------- ------------------------------1EFB91B8 3642190903 selectcount(*) fromxff | 
事实证明ddl操作不能达到预期效果,没有清除掉这条sql语句
5.刷新shared pool
| SQL> altersystem flush shared_pool  2  ;系统已更改。SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';未选定行 | 
把整个shared pool都刷新了,自然其中的一条sql语句也没有了,在10g前只能通过这种方法实现
6.使用dbms_shared_pool.purge
| SQL> selectcount(*) fromxff;  COUNT(*)----------         9SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';ADDRESS  HASH_VALUE SQL_TEXT-------- ---------- ------------------------------1EFB91B8 3642190903 selectcount(*) fromxffSQL> execdbms_shared_pool.purge('1EFB91B8, 3642190903','C');PL/SQL 过程已成功完成。SQL> SELECTADDRESS,HASH_VALUE,SQL_TEXT FROMV$SQLAREA  2  WHERESQL_TEXT LIKE'select % xff';未选定行 | 
试验证明在shared pool中清除了一条sql记录
7.关于dbms_shared_pool.purge参数说明
| purge(name varchar2, flag char DEFAULT 'P', heaps number DEFAULT 1);--    name--      The name of the object to keep.  There are two kinds of objects:--      PL/SQLobjects, triggers, sequences, types and Java objects,--      whichare specified by name, and --      SQL cursor objects whichare specified by a two-part number--      (indicating a location inthe shared pool).  For example:--        dbms_shared_pool.keep('scott.hispackage')--      will keep package HISPACKAGE, owned by SCOTT.  The names for--      PL/SQLobjects follows SQL rules fornaming objects (i.e., --      delimited identifiers, multi-byte names, etc. are allowed).--      A cursor can be keeped by--        dbms_shared_pool.keep('0034CDFF, 20348871', 'C')--      The complete hexadecimal address must be inthe first 8 characters.--      The value forthis identifier is the concatenation of the--      'address'and 'hash_value'columns from the v$sqlarea view.  This--      is displayed by the 'sizes'call above.--      Currently 'TABLE'and 'VIEW'objects may not be keeped.----    flag--      This is an optional parameter.  If the parameter is not specified,--        the package assumes that the first parameter is the name of a--        package/procedure/functionand will resolve the name.  Otherwise,--        the parameter is a character string indicating what kind of object--        to keep the name identifies.  The string is caseinsensitive.--        The possible values and the kinds of objects they indicate are --        given inthe following table:--          Value        Kind of Object to keep--          -----      ------------------------        P          package/procedure/function--        Q          sequence--        R          trigger--        T          type--            JS         java source--            JC         java class--        JR         java resource--        JD         java shared data--        C          cursor--      If and only ifthe first argument is a cursor address and hash-value,--        the flag parameter should be setto 'C'(or 'c').----    heaps--      heaps to purge. e.g ifheap 0 and heap 6 are to be purged. --      1<<0 | 1<<6 => hex 0x41 => decimal 65. so specify heaps=>65.--      Default is 1 i.e heap 0 whichmeans the whole object will be purged. | 
- 9I中清除特定表相关执行计划
- dbms_shared_pool.purge工作原理猜测
- oracle 中如何定位重要(消耗资源多)的SQL
- 使用dblink导致的/*+ OPAQUE_TRANSFORM */
- shared pool latch 等待事件
- library cache pin等待事件
- ORA-00001: unique constraint (PERFSTAT.STATS$SQL_SUMMARY_PK) violated
- Read by other session等待事件
- 通过hash_value获取sql语句执行计划
- sql_id和hash value的部分转换
- sql profile 使用
- 关于High Versions Count总结
[转帖]清除掉shared pool中某条sql语句方法的更多相关文章
- MySQL中的基本SQL语句
		标准SQL包含了4种基本的语句类别: DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. DML语句,数据操作语句,用来对数据记录的增删改查,还用来保证 ... 
- mysql 中常用的 sql 语句
		SQL分类: DDL-----数据定义语言(CREATE--创建,ALTER--修改. DROP--删除表,DECLARE--声明) DML-----数据定义语言(SELECT--查询,DELECT- ... 
- MySQL 中一条 sql 的执行过程
		一条 SQL 的执行过程 前言 查询 查询缓存 分析器 优化器 执行器 数据更新 日志模块 redo log (重做日志) binlog (归档日志) undo log (回滚日志) 两阶段提交 为什 ... 
- SQL Server中常用的SQL语句(转):
		SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ... 
- 在Access中批量调用SQL语句
		access的SQL视图一次只能执行一条SQL语句,那么在VBA中调用或许可以简便一些 例如: Public Sub 批量()Dim strsql As String strsql = " ... 
- c#中执行多条sql语句【ORA-00911: 无效字符】
		问题描述: 在plsql里执行多条sql语句的时候,使用“,”(逗号)分隔,测试可以执行多条,而在C#执行多条sql语句的时候[ORA-00911: 无效字符]. 有时我们需要一次性执行多条sql语句 ... 
- Spring 中jdbcTemplate 实现执行多条sql语句
		说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ... 
- 如何找出MySQL数据库中的低效SQL语句
		面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ... 
- SQL*PLUS中批量执行SQL语句
		SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ... 
- 在ADO.NET中使用参数化SQL语句访问不同数据库时的差异
		在ADO.NET中经常需要跟各种数据库打交道,在不实用存储过程的情况下,使用参数化SQL语句一定程度上可以防止SQL注入,同时对一些较难赋值的字段(如在SQL Server中Image字段,在Orac ... 
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (171)-- 算法导论13.2 4题
			四.用go语言,证明:任何一棵含n个结点的二叉搜索树可以通过 O(n)次旋转,转变为其他任何一棵含n个结点的二叉搜索树.(提示:先证明至多n-1次右旋足以将树转变为一条右侧伸展的链.) 文心一言: 这 ... 
- 记一次 .NET某收银软件 非托管泄露分析
			一:背景 1. 讲故事 在我的分析之旅中,遇到过很多程序的故障和杀毒软件扯上了关系,有杀毒软件导致的程序卡死,有杀毒软件导致的程序崩溃,这一篇又出现了一个杀毒软件导致的程序非托管内存泄露,真的是分析多 ... 
- elastic常用api
			elasticsearch运维常用API 查看集群状态 查询集群状态命令: curl -XGET "http://ip:port/_cluster/health?pretty" # ... 
- 原生JavaScript 与 jQuery 执行Ajax请求
			原生JavaScript和jQuery都可以用来执行Ajax请求,以下是它们的基本实现方式的比较: 原生JavaScript实现Ajax请求: var xhr = new XMLHttpRequest ... 
- C# 成为2023年度编程语言之王
			原文发表在公众号 腾讯云开发者:https://mp.weixin.qq.com/s/5owE5hmJVkwOLJrKMXfR6Q 导读 2023 TIOBE 年度编程语言正式揭晓,C# 在陪跑多年后 ... 
- cookie的一些知识点总结
			一.cookie的种类 sessionID 这个ID是会话性的,只要关闭了当前浏览器,这个ID会消失,需要调用getSessoin重新获取一个新的session 会话性cookie 这个cookie也 ... 
- MySQL系列:索引(B+Tree树、构建过程、回表、基本操作、执行计划、应用)
			介绍 https://dev.mysql.com/doc/refman/5.7/en/optimization-indexes.html 作用 优化查询 算法 索引的算法包括 BTree Hash R ... 
- 如何使用GaussDB(DWS)的本地临时表进行数据处理
			本文分享自华为云社区<GaussDB(DWS)临时表系列 - 本地临时表>,作者: acydy . GaussDB(DWS) 从8.2.1版本后支持三种形式的临时表:本地临时表.Volat ... 
- 云小课|MRS基础原理之CarbonData入门
			阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:CarbonDat ... 
- 最新的iOS应用上架App Store详细流程解析
			最新的iOS应用上架App Store详细流程解析 2023已经过了2/3的时间,由于现在苹果签名市场的价格不断的上升,现在很多的开发商一直在想着如何进行上架一些自己的产品,下面小编来给大家梳理一下上 ... 
