957918 2012-9-1 上午2:04
ML 您好:
关于 x$ksmsp 视图:
desc x$ksmsp
Name Null? Type
------------------------ -------- ----------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KSMCHIDX NUMBER
KSMCHDUR NUMBER
KSMCHCOM VARCHAR2(16)
KSMCHPTR RAW(8)
KSMCHSIZ NUMBER
KSMCHCLS VARCHAR2(8)
KSMCHTYP NUMBER
KSMCHPAR RAW(8)
其中 KSMCHIDX ,KSMCHDUR 字段代表什么意思?
谢谢!
LiuMaclean(刘相兵) 2012-9-1 上午2:32 (回复 957918 )
KSMCHIDX 只是一个索引 基本没有用处
KSMCHDUR 指定了chunk的duration, 这个特性是10g以后加入的,见
Know more about shared pool subpool
http://www.askmaclean.com/archives/know-more-about-shared-pool-subpool.html
10g共有4种duration 如引文:
SQL> select distinct KSMCHDUR from x$ksmsp;
KSMCHDUR
----------
1
2
3
4
@@
@@
*<font color="red" size="2" face="courier">如果觉得本回复有意义,请点击本条回复右手边的Correct按钮,谢谢!</font>*
@@
@@
如何在OTN中文技术论坛提一个问题?
论坛礼仪需知及学习oracle的方法论
@@
@@
Maclean Liu
Oracle Database Administrator
Oracle Certified 10g/11g Master
www.askmaclean.com
LiuMaclean(刘相兵) 2012-9-1 上午2:37 (回复 957918 )
补充一下 可以用_enable_shared_pool_durations 禁用10g duration 这一特性
SQL> select distinct KSMCHDUR from x$ksmsp;
KSMCHDUR
----------
1
2
3
4
SQL> alter system set "_enable_shared_pool_durations"=false scope=spfile;
System altered.
SQL> startup force;
ORACLE instance started.
Total System Global Area 1252663296 bytes
Fixed Size 2254784 bytes
Variable Size 872417344 bytes
Database Buffers 369098752 bytes
Redo Buffers 8892416 bytes
Database mounted.
Database opened.
SQL>
SQL>
SQL> select distinct KSMCHDUR from x$ksmsp;
KSMCHDUR
----------
1
957918 2012-9-1 上午2:42 (回复 LiuMaclean(刘相兵) )
引用 ML sub_pool 文章:
duration 分成4类:
Session duration
Instance duration (never freed)
Execution duration (freed fastest)
Free memory
引入了 shared pool duration的目的是
在10gR1中Shared Pool的shrink收缩操作存在一些缺陷,造成缺陷的原因是在该版本中Buffer Cache还没有能力共享使用一个granule,这是因为Buffer Cache的granule的尾部由granule header和Metadata(可能是buffer header或者RAC中的Lock Elements)拼接组成,在其尾部不容许存在空洞。另一个原因是当时的shared pool允许不同生命周期duration(以后会介绍)的chunk存放在同一个granule中,这造成共享池无法完全释放granule。到10gR2中通过对Buffer Cache Granule结构的修改允许在granule header和buffer及Metadata(buffer header或LE)存在缝隙,同时shared pool中不同duration的chunk将不在共享同一个granule,通过以上改进buffer cache与shared pool间的内存交换变得可行。此外在10gr2中streams pool也开始支持内存交换(实际根据不同的streams pool duration存在限制)