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