本人很喜歡Oracle在工作中也很喜歡總結關於Oracle優化緩沖區的經驗教訓下面就這個問題來詳細說說Oracle優化緩沖區吧
()獲取緩沖區活動情況
為了Oracle優化緩沖區首先應了解緩沖區的活動情況這可以通過查詢動態性能表(需有SELECT ANY TABLE特權)V$SYSSTAT來獲得
SVRMGR> select name value from v$sysstat
> where name in(db block getsconsistent getsphysical reads);
NAME VALUE
db blockgets
nsistent gets
physica reads
rows selected
其中db block gets和consistent gets的值是請求數據緩沖區中讀的總次數physical reads為請求數據時引起從盤中讀文件的次數
()緩沖區命中率
從緩沖區讀的可能性的高低稱為緩沖區命中率它可用如下公式計算Hot Ratio=(physical reads/(db block gets+consistent gets)
緩沖區命中率越高其速度就越快如果命中率低於%或%時則應增加緩沖區(即DB_BLOCK_BUFFERS)以改進性能根據公式可以計算出本例中的Hot Ratio=(/(+)=%如果緩沖區的命中率很高希望在保持良好性能下適當減少緩沖區這時可減少DB_BLOCK_BUFFERS的值其最小值為
當一個文件上的輸入/輸出(I/O)請求干擾了第二個文件的輸入/輸出請求時那麼這兩個文件就會發生爭用所以兩個隨機存取的文件只有在無可能同時存取它們時才可以存放在同一設備中由此可以分為兩種類型的I/O爭用並行I/O爭用和干擾爭用並行I/O爭用多發生在同一時間對同一設備請求多種存取時這種類型的爭用可以通過分離與表相聯系的索引的辦法來消除干擾爭用發生在對一個順序文件進行寫操作而同時進行讀命令時中斷而引起
I/O優化的目的是解決I/O瓶頸問題I/O的優化必須在內存優化之後進行可以通過減少磁盤爭用有效分配數據塊空間和避免動態空間管理三個方面來優化I/O
減少磁盤爭用
V$FILESTAT視圖提供有關物理讀寫的信息物理I/O針對磁盤邏輯I/O針對內存如果有多個進程同時訪問同磁盤就產個磁盤爭用
監控Oracle的磁盤活動
要解決磁盤爭用首先應該知道磁盤的活動情況確定是否發生爭用這可以通過查詢動態性能表(需有SELECT ANY TABLE特權)V$FILESTAT和V$DATAFILE來確定例如
SQL>SELECT Namephyrdsphywrts
FROM V$DATAFILE dfV$FILESTAT fs
WHERE dffile#=fsfile#
其中
◆ phyrds記錄從盤上讀每個數據庫文件的次數
◆ phywrts記錄往盤上寫數據庫文件的次數
一個盤上總的I/O次數是該盤上所有數據庫文件的phyrds和phywrts之和必須把物理讀寫的總量控制在用戶硬件和操作系統的最優限制內以上介紹Oracle優化緩沖區
From:http://tw.wingwit.com/Article/program/Oracle/201311/18623.html