|
|
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 19,010 3.64 37,460,786 182 22,812 2.50 25,668,196 212 26,614 1.74 17,850,847 243 30,416 1.33 13,720,149 273 34,218 1.13 11,583,180 304 38,020 1.00 10,282,475 Current Size 334 41,822 .93 9,515,878 364 45,624 .87 8,909,026 395 49,426 .83 8,495,039 424 53,228 .79 8,116,496 456 57,030 .76 7,824,764 486 60,832 .74 7,563,180 517 64,634 .71 7,311,729 547 68,436 .69 7,104,280 577 72,238 .67 6,895,122 608 76,040 .66 6,739,731 2x size
|
|