[20201111]CURSOR_SPACE_FOR_TIME.txt --//参数CURSOR_SPACE_FOR_TIME从11g开始已经过时,引入它的初衷是为了缓解child cursor上的与库缓存相关的Latch争用,11G开始使 --//用MUTEX替换各种与库缓存相关的Latch。 oracle的cursor是有生命周期的,每个session cursor在使用的过程中都至少会经历一次open,parse,bind,execute,fetch和close中的一 个或者多个阶段。当一个目标sql所对应的session cursor的状态是execute时(即该sql正在执行),oracle会把该SQL语句所对于的child cursor 给pin在库缓存(11g应该使用mutex)。 在CURSOR_SPACE_FOR_TIME=FALSE的情况下,一旦执行sql语句完毕,对应的session cursor的状态已经不是execute状态,此时sql所对应 的child cursor就可以不再pin在库缓存中,意味着如果共享池内存紧张,该SQL语句解析树和执行计划可以背换出共享池。 如果设置CURSOR_SPACE_FOR_TIME=TRUE。每次session cursor在execute完成后,对应的child cursor上的library cache pin不会释放。 下次执行时就不会重复pin操作,减少latch的争用。当然副作用就是对应的child cursor不会释放,导致共享内存紧张。 简单测试看看 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 SYS@book> alter system set CURSOR_SPACE_FOR_TIME=true scope=spfile; System altered. --//重启数据库: SYS@book> startup ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ORACLE instance started. Total System Global Area 643084288 bytes Fixed Size 2255872 bytes Variable Size 205521920 bytes Database Buffers 427819008 bytes Redo Buffers 7487488 bytes Database mounted. Database opened. select p.name,p.value from v$parameter p, v$spparameter s where s.name=p.name and p.isdeprecated='TRUE' and s.isspecified='TRUE'; NAME VALUE ---------------------------------------- ------------------------------ cursor_space_for_time TRUE --//很明显11g已经废除了该参数。在10g下测试看看: SYS@test> @ &r/ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- ---------------------------------------------------------------- x86_64/Linux 2.4.xx 10.2.0.4.0 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi SYS@test> alter system set cursor_space_for_time=true scope=spfile; System altered. --//重启略: 2.测试: --//session 1: SCOTT@test> select count(*) from dept; COUNT(*) ---------- 4 SCOTT@test> @ &r/tpt/hash HASH_VALUE SQL_ID CHILD_NUMBER HASH_HEX ---------- ------------- ------------ --------- 761178024 1jrz3ucqpx9x8 0 2d5ea7a8 --//session 2: SYS@test> @ &r/sharepool/shp4 1jrz3ucqpx9x8 0 TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 -------------- ---------------- ---------------- ------------------------- -------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- 子游标句柄地址 0000000077575EF8 0000000077576E28 select count(*) from dept 1 0 0 0000000077575E38 0000000077576778 3664 8088 1794 13546 13546 761178024 1jrz3ucqpx9x8 0 父游标句柄地址 0000000077576E28 0000000077576E28 select count(*) from dept 1 0 0 0000000077576D68 00 2803 0 0 2803 2803 761178024 1jrz3ucqpx9x8 65535 SYS@test> alter system flush shared_pool; System altered. SYS@test> @ &r/sharepool/shp4 1jrz3ucqpx9x8 0 TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 -------------- ---------------- ---------------- ------------------------- -------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- 子游标句柄地址 0000000077575EF8 0000000077576E28 select count(*) from dept 0 0 1 00 00 0 0 1794 1794 1794 761178024 1jrz3ucqpx9x8 0 父游标句柄地址 0000000077576E28 0000000077576E28 select count(*) from dept 1 0 1 0000000077576D68 00 2803 0 0 2803 2803 761178024 1jrz3ucqpx9x8 65535 --//一样清除子光标的堆0与堆6.看看在执行状态如何: SCOTT@test> select count(*) from dept; COUNT(*) ---------- 4 SYS@test> @ &r/sharepool/shp4 1jrz3ucqpx9x8 0 TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 -------------- ---------------- ---------------- ------------------------- -------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- 子游标句柄地址 0000000077575EF8 0000000077576E28 select count(*) from dept 1 2 1 0000000077575E38 0000000077576778 3664 8088 1794 13546 13546 761178024 1jrz3ucqpx9x8 0 父游标句柄地址 0000000077576E28 0000000077576E28 select count(*) from dept 1 0 1 0000000077576D68 00 2803 0 0 2803 2803 761178024 1jrz3ucqpx9x8 65535 SYS@test> alter system flush shared_pool; System altered. SYS@test> @ &r/sharepool/shp4 1jrz3ucqpx9x8 0 TEXT KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 -------------- ---------------- ---------------- ------------------------- -------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- 子游标句柄地址 0000000077575EF8 0000000077576E28 select count(*) from dept 0 2 2 0000000077575E38 0000000077576778 3664 8088 1794 13546 13546 761178024 1jrz3ucqpx9x8 0 父游标句柄地址 0000000077576E28 0000000077576E28 select count(*) from dept 1 0 2 0000000077576D68 00 2803 0 0 2803 2803 761178024 1jrz3ucqpx9x8 65535 --//在这样状态下,无论如何刷新共享池,子光标的堆0与堆6不会清除。
[20201111]CURSOR_SPACE_FOR_TIME.txt
来源:这里教程网
时间:2026-03-03 16:16:45
作者:
编辑推荐:
- python两种获取剪贴板内容的方法03-03
- [20201111]CURSOR_SPACE_FOR_TIME.txt03-03
- [20201113]测试CURSOR_SPACE_FOR_TIME(10g).txt03-03
- 宝塔面板nginx防火墙非浏览器拦截真的有用吗?03-03
- [20201116]测试CURSOR_SPACE_FOR_TIME(10g)(补充).txt03-03
- [20201116]测试CURSOR_SPACE_FOR_TIME=false(11g).txt03-03
- [20201117]解析cursor pin S等待事件.txt03-03
- [20201116]11g连接谓词推入push_pred问题.txt03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- oracle删除表中数据(delete与truncate)
oracle删除表中数据(delete与truncate)
26-03-03 - SQL Server数据库mdf文件中了勒索病毒*.mdf.[helpbackup@email.tg].Devos
- G006-ORACLE-INS-SIFS-01 ORACLE 19C SIFS Ins ON RHEL 8.2
- G008-ORACLE-DG ORACLE 19C Active Data Guard DML Redirection
- 查看oracle数据库中,哪些表的字段是null值比较多
查看oracle数据库中,哪些表的字段是null值比较多
26-03-03 - Oracle数据库服务器dbf文件中了勒索病毒,扩展名被篡改为.CC7H
Oracle数据库服务器dbf文件中了勒索病毒,扩展名被篡改为.CC7H
26-03-03 - 数据库范式
数据库范式
26-03-03 - 沙龙回顾丨开发者掌握这些背后的技术路径,可助力企业智能化升级
沙龙回顾丨开发者掌握这些背后的技术路径,可助力企业智能化升级
26-03-03 - Oracle的awr报告分析
Oracle的awr报告分析
26-03-03 - DDD 在京东 DevOps 项目协作领域的落地实战
DDD 在京东 DevOps 项目协作领域的落地实战
26-03-03
