算數據存儲大小一直是大型數據庫的關鍵技術
如果一個數據庫占用成千上萬的字節
那麼在RAM中計算整個數據庫會變得不切實際
所以Oracle開發人員必須找到一種計算數據庫存儲大小的方法
從而可以縮小RAM資源中浪費的空間
這就意味著為公司的RAM開支節省了很多的費用
Oracle
i 提供了一種新的特性
即v$db_cache_advice
這一特性可以預測數據緩沖存儲器中附加數據存儲的大小
基於這一特性
Oracle DBAs能夠精確地預測RAM數據存儲的最佳大小
讓我們用一些范例來說明這些功能
如何實現這些功能?
當數據存儲容量比較小時
隨著RAM數據容量的減小
磁盤I/O會劇急減小
如下圖所示
圖
當RAM數據容量上升時
磁盤I/O隨之減少
然而
磁盤I/O的劇急減少也不是趨於無限小
當RAM大小達到整個數據庫的占有空間時
磁盤I/O中多余部分的減少會變得很小(如下載所示)
因為此時數據庫已經沒有可以訪問的數據
圖
多余RAM數據空間的下降趨勢
作為一種通用的規則
系統中可利用資源部分都可以調整
RAM資源可以改變到一定的大小以減少一些多余的空間(如下圖)
這完全可以讓Oracle DBA找到最佳的數據庫容量大小
圖
RAM數據容量的最佳大小
新推出的DB特性與Oracle
中的相應特性非常相似
這一特性使用名為x$kcbrbh的方法來跟蹤數據的容量
與Oracle
模型類似
你必須預先為數據存放容量分配RAM空間
通過設置init
ora參數
並把db_cache_advice設置為on 或ready
就可以實現以上過程
使用alter system命令還可以動態地更改這些參數
所以當數據庫運行時
DBA便具備預測功能
既然你必須為db_cache_size預先分配額外的RAM數據容量
利用這一功能就可以確定數據容量的最佳大小
一旦db_cache_advice函數被調用
而且數據庫運行一段時間
Listing A 中的查詢就會執行預測功能
列表A中的結果在Listing B中顯示
注意數據的范圍是從當前容量大小的百分之十到當前容量大小的兩倍
這裡你可以看出
總共的磁盤I/O沒有最大值
這也就是典型的大型數據庫特性
因此
也不存在db_cache_size參數的最佳設置
當db_cache_size值越大
磁盤I/O會變得越小
在db_cache_size中添加塊的方法是很簡單
只要內存容量允許
你可以增大db_cache_size的值
緩沖塊的增加也會導致RAM內存容量的增加
通常情況下
一個數據庫管理系統不會占用一台機器的全部內存
所以
DBA應該慎重地預測可使用的內存大小並決定緩沖塊的最佳選擇
一句警告
當DBA設置dba_cache_advice=on
Oracle會從共享的RAM區域
偷用
空間
這樣會導致一些不可意料的破壞
例如
現成的db_cache_size設置為
MB
Orcale會從共享區域內
偷取
一定的RAM空間
為了避免這些問題
DBA應該在init
ora文件中設置db_cache_advice=ready
當這些完成後
Oracle會在數據庫的啟動時間預先分配RAM容量大小
對於更高版本的Oracle
i數據庫
你不僅可以控制緩沖塊的數量
而且還可以控制每個數據緩沖塊的大小
總結
隨著Oracle
i靈活性的不斷增加和功能上的不斷完善
對於數據庫管理人員而言
確定SGA區域最佳容量大小是一個新的難題
把這一工作處理得當
便意味著在RAM資源上節省大量的資金
From:http://tw.wingwit.com/Article/program/Oracle/201311/17777.html