对于应该设置buffercache为多大,oracle从9i开始通过设置初始化参数:db_cache_advice,从而提供了可以参照的建议值。oracle会监控default类型、keep类型和recycle类型的buffercache的使用,以及其他五种不同数据库尺寸(2、4、8、16 或 32k)的buffercache的使用。在典型负荷的时候,启用该参数,从而收集数据帮助用户确定最佳的db_cache_size的大小。该参数有三个值:
1) off:不收集数据。
2)on:开始分配内存收集数据,有可能引发CPU和内存的负担,可能引起4031错。
3)ready:不收集数据,但是收集数据的内存已经预先分配好了。通过把该参数值从off设置为ready,然后再设置为on,就可以避免出现4031错。
oracle会根据当前所监控到的物理读的速率,从而估算出在不同大小尺寸的buffercache下,所产生的可能的物理读的数量。oracle会将这些收集到的信息放入视图:v$db_cache_advice中。每种类型的buffercache都会有相应的若干条记录来表示所建议的buffercache的大小。比如下面,我们显示对于缺省类型的、缺省数据块尺寸的buffer cache的建议大小应该是多少。
SQL> SELECT size_for_estimate,buffers_for_estimate,
2 estd_physical_read_factor,estd_physical_reads
3 FROM v$db_cache_advice
4 WHERE NAME = 'DEFAULT'
5 AND block_size = (SELECTVALUE
6 FROM v$parameter
7 WHERE NAME ='db_block_size')
8 /
SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTORESTD_PHYSICAL_READS
----------------- -------------------- --------------------------------------------
4 500 1.3869 40154
8 1000 1.3848 40093
12 1500 1.1861 34339
16 2000 1.1397 32996
20 2500 1 28952
24 3000 1 28952
28 3500 1 28952
32 4000 1 28952
36 4500 0.8671 2510451099在线学习网 http://www.51099