Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

1

好友

11

主题
1#
发表于 2014-3-7 17:03:35 | 查看: 3447| 回复: 4
OS:redhat 5.4
oracle: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来存放对象?






2#
发表于 2014-3-8 13:23:51
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
               

回复 只看该作者 道具 举报

3#
发表于 2014-3-8 13:34:53
"有如此数量的Buckets,我想请教下各位,当第一个hash chain上面的bucket全部都被占满了以后,oracle是释放其中的某些bucket?"

我想你搞错 hash table 、bucket、hash chain这三者的关系了

回复 只看该作者 道具 举报

4#
发表于 2014-3-9 16:28:08
谢谢刘大,我确实理解错误
我还想请教下,您的计算library object handle count的方法
bucket的数量 * Hash Chain Size
我想问下
1.这个Hash Chain Size代表的是什么东西呢?是bucket的大小吗?
2.如果是,那么会不会有bucket没有分配完而造成内存耗尽产生4031呢?

回复 只看该作者 道具 举报

5#
发表于 2014-3-11 16:21:06
1.这个Hash Chain Size代表的是什么东西呢?是bucket的大小吗?

你可以理解为bucket的大小

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-21 06:19 , Processed in 0.045176 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569