[20180813]刷新共享池与父子游标.txt
[20180813]刷新共享池与父子游标.txt
--//测试刷新共享池与父子游标含有那些信息保存在共享池.
--//自己最近遇到的问题,感觉自己以前理解有点乱,测试看看.
1.环境
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------- ---------- ----------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.测试:
--//session 1:
select * from dept where deptno=10;
--//确定sql_id=4xamnunv51w9j,可以查询v$sql视图确定.
--//session 2:
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游标句柄地址 000000007D9134A0 000000007D7110E0 select * from dept where deptno=10 1 0 000000007D6F2250 000000007BFF1138 4488 12144 3067 19699 19699 911274289 4xamnunv51w9j 0
父游标句柄地址 000000007D7110E0 000000007D7110E0 select * from dept where deptno=10 1 0 000000007D9E7608 00 4720 0 0 4720 4720 911274289 4xamnunv51w9j 65535
--//全部父子光标,父堆0.子堆0,6都在.KGLHDLMD=1.当前session 1,执行完该条语句,11g下游标不会释放.
SYS@book> alter system flush shared_pool;
System altered.
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游标句柄地址 000000007D9134A0 000000007D7110E0 select * from dept where deptno=10 1 0 00 00 0 0 3067 3067 3067 911274289 4xamnunv51w9j 0
父游标句柄地址 000000007D7110E0 000000007D7110E0 select * from dept where deptno=10 1 0 000000007D9E7608 00 4720 0 0 4720 4720 911274289 4xamnunv51w9j 65535
--//父子游标,父游标堆0,子游标都没有清除.并且KGLHDLMD=1
--//子游标堆0,子游标堆6清除.
--//当前执行的语句,游标不会关闭,刷新共享池,并不能父子游标,父游标堆0,子游标.
--//是否可以这么理解KGLHDLMD=1的情况下,不会清除全部信息.
--//session 1:
SCOTT@book> select sysdate from dual;
SYSDATE
-------------------
2018-08-14 09:00:11
--//session 2:
SYS@book> alter system flush shared_pool;
System altered.
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
no rows selected
--//可以发现光标已经全部清除.因为session 1当前执行的是 select sysdate from dual;.
--//sql_id=4xamnunv51w9j的游标已经关闭.这样刷新共享池,可以完全清除.
--//忘记在刷新前看看游标的情况,补充测试3.
3.测试:
--//session 1:
select * from dept where deptno=10;
select sysdate from dual;
--//注意当前语句不是select * from dept where deptno=10;.
--//session 2:
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游标句柄地址 000000007D8A5B98 000000007DB3C798 select * from dept where deptno=10 0 0 000000007D72DD88 000000007C9A8358 4520 12144 3067 19731 19731 911274289 4xamnunv51w9j 0
父游标句柄地址 000000007DB3C798 000000007DB3C798 select * from dept where deptno=10 0 0 000000007DAFF9F0 00 4720 0 0 4720 4720 911274289 4xamnunv51w9j 65535
--//全部父子光标,父堆0.子堆0,6都在.KGLHDLMD=0.
SYS@book> alter system flush shared_pool;
System altered.
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
no rows selected
4.测试:
--//测试会话缓存光标的情况.
--//session 1:
SCOTT@book> show parameter session_cached_cursors
NAME TYPE VALUE
---------------------- ------- -----
session_cached_cursors integer 50
select * from dept where deptno=10;
select sysdate from dual;
select * from dept where deptno=10;
select sysdate from dual;
select * from dept where deptno=10;
select sysdate from dual;
select * from dept where deptno=10;
select sysdate from dual;
--//执行3次以上,注意最后一条语句是select sysdate from dual;
--//session 2:
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游标句柄地址 000000007D4BB278 000000007D4BB608 select * from dept where deptno=10 1 0 000000007D4BB1C0 000000007BA63988 4528 12144 3067 19739 19739 911274289 4xamnunv51w9j 0
父游标句柄地址 000000007D4BB608 000000007D4BB608 select * from dept where deptno=10 1 0 000000007D4BF948 00 4720 0 0 4720 4720 911274289 4xamnunv51w9j 65535
--//执行3次以后,KGLHDLMD=1.
--//你可以在每次执行select sysdate from dual;查看sql_id=4xamnunv51w9j光标情况.
--//仅仅第3次后KGLHDLMD=1.
SYS@book> alter system flush shared_pool;
System altered.
SYS@book> @ &r/sharepool/shp4 4xamnunv51w9j 0
TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游标句柄地址 000000007D4BB278 000000007D4BB608 select * from dept where deptno=10 1 0 00 00 0 0 3067 3067 3067 911274289 4xamnunv51w9j 0
父游标句柄地址 000000007D4BB608 000000007D4BB608 select * from dept where deptno=10 1 0 000000007D4BF948 00 4720 0 0 4720 4720 911274289 4xamnunv51w9j 65535
--//父子游标,父游标堆0,子游标都没有清除.并且KGLHDLMD=1
--//子游标堆0,子游标堆6清除.
--//当前执行的语句不是该条,但是当会话缓存游标以后,刷新共享池,并不能清除父子游标,父游标堆0,子游标.
--//也就是刷新共享池无法完全清除会话缓存的光标.
--//附上shp4.sql脚本:
$ cat sharepool/shp4.sql
column N0_6_16 format 99999999
SELECT DECODE (kglhdadr,
kglhdpar, '父游标句柄地址',
'子游标句柄地址')
text,
kglhdadr,
kglhdpar,
substr(kglnaobj,1,40) c40,
KGLHDLMD,
KGLHDPMD,
-- kglhdivc,
kglobhd0,
kglobhd6,
kglobhs0,kglobhs6,kglobt16,
kglobhs0+kglobhs6+kglobt16 N0_6_16,
kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16 N20,
kglnahsh,
kglobt03 ,
kglobt09
FROM x$kglob
WHERE kglobt03 = '&1' or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2;
[20180813]刷新共享池与父子游标.txt的更多相关文章
- [20180819]关于父子游标问题(11g).txt
[20180819]关于父子游标问题(11g).txt --//sql语句存在父子游标,子游标堆6在父游标堆0里面.--//如果存在许多子游标的情况下,父游标堆0是否大小是发生变化呢.测试看看.--/ ...
- 将指定SQL的执行计划从共享池删除的方法
如果Oracle的优化器产生了某种错误的执行计划,或者我们希望Oracle对于某个SQL重新进行分析,那么就需要这个SQL的执行计划在共享池中过期,而简单的方法在10.2.0.4以后才出现. 对于 ...
- [20180926]共享池中的NETWORK BUFFER.txt
[20180926]共享池中的NETWORK BUFFER.txt --//最近几天一直在探究SQL*Net more data from client 相关等待事件,发现SDU相关,自己也网上探究一 ...
- ORACLE从共享池删除指定SQL的执行计划
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...
- Oracle 从共享池删除指定SQL的执行计划
ORACLE从共享池删除指定SQL的执行计划 2016-12-29 11:14 by 潇湘隐者, 2836 阅读, 0 评论, 收藏, 编辑 Oracle 11g在DBMS_SHARED_POOL包中 ...
- 使用DBMS_SHARED_POOL包将对象固定到共享池
使用DBMS_SHARED_POOL包将对象固定到共享池2011年06月24日 09:45:00 Leshami 阅读数:5808 版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处. htt ...
- Oracle sql共享池$sqlarea分析SQL资源使用情况
遇到需要排查一个系统使用sql的情况,可以通过查询Oracle的$sql.$ssssion.$sqlarea进行统计排查 排查时可以先看一下$sql和$session的基本信息 select * fr ...
- [20190306]共享服务模式与SDU.txt
[20190306]共享服务模式与SDU.txt --//一些文档提到共享服务模式,服务端SDU=65535,测试验证看看.--//链接:https://blogs.sap.com/2013/02/0 ...
- oracle 共享池( shared pool )
Oracle共享池 Oracle共享池(Share Pool)属于SGA,由库高速缓存(library cache)和数据字典高速缓存(data dictionary cache)组成. 库高速缓存 ...
随机推荐
- 自定义Appium
改造appium-android-driver 这个driver是UIAutomator1的driver,负责UIAutomator1的服务启动.停止.命令接收和执行. 工程结构 appium-and ...
- [转]Docker(三):Dockerfile 命令详解
本文转自:https://blog.csdn.net/ityouknow/article/details/79600406 上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dock ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- 应用TortoiseGit为github账号添加SSH keys,解决pull总是提示输入密码的问题
每次同步或者上传代码到githun上的代码库时,需要每次都输入用户名和密码,这时我们设置一下SSH key就可以省去这些麻烦了.若果使用TortoiseGit作为github本地管理工具,Tortoi ...
- Android Studio 日志工具
在项目中提供5个方法打印日志 Log.v() 最常见的日志信息 Log.d() 调试信息 Log.i() 用于打印用户操作行为 Log.w()警告潜在风险 Log.e()报错信息 TAG 填入类名就好 ...
- echarts画图时tooltip.formatter参数params不会更新(转载)
echarts画图时tooltip.formatter参数params不会更新 解决方案: setOption时默认是合并, 如果要全部重新加载 要写成 setOption({},true),这样就可 ...
- python_文件操作
说明:如有转载,请标明出处!! 一.文件操作 1.文件常用操作方法 open() f=open('文件名','r',encoding='utf-8') #三个参数,第一个文件详细路径,需要写明文件格式 ...
- ubuntu中subline无法使用搜狗输入法
今天使用subline编写python程序,发现在ubuntu下无法调用搜狗输入法输入中文,结果一番搜索发现github上的sublime-text-imfix项目能修复此问题,项目地址是:https ...
- Hibernate入门(二)——hibernateAPI详解
Hibernate API 详解 1.Configuration 功能:配置加载类,用于加载主配置,orm元数据加载 .创建: Configuration conf = new Configurati ...
- 有状态(Stateful)与无状态(Stateless)
1.有状态(Stateful): 有数据存储功能.有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,类里面有成员变量,而且成员变量是可变的,是非线程安全的.在不同方法调用间 ...