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,