shared的内存组成部分和4031的错误产生的原因

oracle011

shared的内存组成部分和4031的错误产生的原因

注意:shared pool可以设置大小,而lib cache、row cache设置不了大小
硬解析:大量存在下面的情况,而且会产生大量的碎片;这样就会产生即使存在内存空间但是内存空间都是小的碎片使用不了就会产生4031错误
shared的内存组成部分和4031的错误产生的原因_第1张图片 shared的内存组成部分和4031的错误产生的原因_第2张图片
chain : 1. 把所有的块链接起来 2. 利于空间的遍历
通过锁来进行保护

chunk:sqL ASCII编码 --》计算(hash找到链中的节点) --》 数字(对应lib cache链上)
不是根据大小来划分的,而是以计算结果来划分的

SQL> select count(*) from x$ksmsp;//查询lib cache中的数目

COUNT(*)
----------
27598

SQL> select count(*) from dba_objects;//这是一条从未执行的语句

COUNT(*)
----------
72478

SQL> select count(*) from x$ksmsp;//你会发现他的值增大了,是应为上面的语句发生了硬解析,把free的空间划分过来了

COUNT(*)
----------
27626

SQL> alter system flush shared_pool;//清理share pool

System altered.

SQL> select count(*) from x$ksmsp;//

COUNT(*)
----------
11170

SQL>














































































你可能感兴趣的:(sha)