oracle的緩衝塊的管理機制一直沒有正式的發布過,因此許多有經驗的oracle工程師都是通過經驗或者一下oracle文檔中的註釋來推斷oracle的緩衝塊的管理機制的。
事實上,oralce使用v$bh視圖來記錄與數據緩衝(data buffer)相關的信息,它詳細記錄了數據緩衝中每一個數據塊(data block)的狀態信息。
在v$bh視圖中的status字段,記錄了數據塊的狀態,在非OPS、非RAC這樣的集群環境中,數據塊的狀態會是下列幾種之一:xcur,cr,read,free,用戶可以通過如下命令得到數據庫的狀態信息:
SQL> select unique status from v$bh;
其狀態的意義分別是:
xcur:(exclusive current)的意思,表示該數據塊處於排外模式;
cr:表示該數據塊是一個克隆(clone)的數據庫,可以執行共享的只讀操作;
free:表示這是一個限制的數據塊,oracle現在沒有使用它;
read:表示該數據塊正在從磁盤讀取數據;
write:表示數據庫正在往磁盤寫入數據;
在數據庫恢復過程中,該字段還有另外兩個描述:mrec和irec:
mrec:(media recovery)表示數據塊處於介質恢復模式;
irec:(instance recovery)表示數據塊處於實例恢復模式;
在RAC環境中,數據塊還有另外一種模式:
scur (shared current),表示該數據庫正在和其他實例共享數據。