日期:2013-03-13  浏览次数:20430 次

Oracle 9i引入了一个新的途径来预测数据缓冲cache中附加数据缓存的所带来的好处的多少。V$DB_CACHE_ADVICE显示了20个可能的缓冲cache大小的“脱靶”率(范围从当前大小的10%到200%)。由于Oracle 9i中你需求维护五个分开的数据缓冲cache,因此这个特性非常重要。这些数据缓冲包括:

DEFAULT池
KEEP池
RECYCLE池
2K数据缓冲
4K数据缓冲
8K数据缓冲
16K数据缓冲
32K数据缓冲
警告:当你把DBA_CACHE_ADVICE设置为ON时,Oracle会从共享的池中“窃取”RAM页面,这往往严重影响到了库cache。例如,如果设置DB_CACHE_SIZE为500m,Oracle就会从共享池中窃取相当多数量的RAM空间。为了避免这个问题,我们应该在INIT.ORA文件中把DBA设置为DB_CACHE_ADVICE=READY。这样,Oracle会在数据库启动时预分配RAM内存。

为了演示cache建议是如何任务的,让我们看看STATSPACK报告来看看在哪些时间数据缓冲命中率低于90%。

***********************************************************
当数据缓冲命中率低于90%时,你就应该
考虑添加DB_CACHE_SIZE参数了。
***********************************************************


yr.  mody Hr.   Name    bhr
------------- --------  -----
2001-01-27 09 DEFAULT    45
2001-01-28 09 RECYCLE    41
2001-01-29 10 DEFAULT    36
2001-01-30 09 DEFAULT    28
2001-02-02 10 DEFAULT    83

依据上面的输出信息,我们可以在每天上午8点到9点之间添加DB_CACHE_SIZE,从PGA_AGGREGATE_TARGET中窃取RAM空间。

下面我们看看利用了DB_CACHE_ADVICE之后的输出。下表给出了添加了新的数据缓冲后对磁盘I/O减少的估量值的全部信息。

                                                             Estd Phys            Estd Phys
 Cache Size (MB)     Buffers         Read Factor                   Reads
----------------            ------------               -----------              ------------
              30                    3,802                   18.70              192,317,943  10% size
              60                    7,604                   12.83              131,949,536
              91                  11,406                    7.38               75,865,861
             121                  15,208                    4.97               51,111,658
             152            &nbs