关于library cache的疑问
OS:redhat 5.4oracle:11.2.0.3
SQL> alter session set events 'immediate trace name library_cache level 11';
Session altered.
cat orcl2_ora_11279.trc
...
Hash Chain Size Number of Buckets
--------------- -----------------
0 115236
1 14810
2 948
3 31
4 1
5 0
6 0
7 14
8 18
9 11
10 2
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
20 0
>20 1
...
有如此数量的Buckets,我想请教下各位,当第一个hash chain上面的bucket全部都被占满了以后,oracle是释放其中的某些bucket?还是寻找下一个hash chain的空的bucket来存放对象?
Oracle9i Release 2 level values:
Level 1: Dump library cache statistics
Level 2: Dump hash table summary
Level 4: Dump library cache objects, basic information
Level 8: Dump objects with detailed information
Level 16: Dump heap sizes (can be latch intensive)
Level 32: Dump heap information
SQL> alter session set events 'immediate trace name library_cache level 2';
Session altered.
SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
LIBRARY CACHE HASH TABLE: size=131072 count=15161
Buckets with more than 20 objects:
NONE
Hash Chain Size Number of Buckets
--------------- -----------------
0 116787
1 13461
2 787
3 34
4 1
5 0
6 0
7 0
8 0
9 0
10 2
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
20 0
>20 0
size 代表 buckets 的数目
count 代表 object handles的数目
上面的trace 代表 LIBRARY CACHE HASH TABLE 有131072个bucket = 116787+13461+787+34+1+2=131072
最大的bucket的hash chanin size=10
实际object handles count= 13461*1 + 787 * 2 + 34*3+ 1*4 +2*10=15161
"有如此数量的Buckets,我想请教下各位,当第一个hash chain上面的bucket全部都被占满了以后,oracle是释放其中的某些bucket?"
我想你搞错 hash table 、bucket、hash chain这三者的关系了
谢谢刘大,我确实理解错误
我还想请教下,您的计算library object handle count的方法
bucket的数量 * Hash Chain Size
我想问下
1.这个Hash Chain Size代表的是什么东西呢?是bucket的大小吗?
2.如果是,那么会不会有bucket没有分配完而造成内存耗尽产生4031呢? 1.这个Hash Chain Size代表的是什么东西呢?是bucket的大小吗?
你可以理解为bucket的大小
页:
[1]