1. 程式人生 > >Oracle 11g 管理重做日誌文件

Oracle 11g 管理重做日誌文件

自動 新的 以及 產生 防止 當前 數據文件 ESS 數據

重做日誌也稱聯機重做日誌。引入重做日誌的目的是數據恢復。在數據庫運行過程中,用戶更改的數據會暫時存放在數據庫的高速緩沖區中。為了提高寫數據的速度,並不是一旦有數據變化,就把變化的數據寫到數據文件中。頻繁的讀寫磁盤文件會使數據庫系統效率降低,所以要等到數據庫高速緩沖區中的數據達到一定的量或者滿足一定的條件時,DBWR進程才會將變化了的數據寫到數據文件中。這種情況下如果在DBWR把變化了的更改寫到數據文件之前發生了宕機,那麽數據高速緩沖區中的數據就會全部丟失。如果在數據庫重新啟動後無法恢復這部分用戶更改的數據,顯然是不可以的。

重做日誌就是把變化了數據首先保存起來,其中LGWR進程負責把用戶更改的數據寫到重做日誌文件中,這樣數據庫啟動時,數據庫系統從重做日誌文件中讀取這些變化了的數據,將用戶更改的數據提交到數據庫中,寫入數據文件。

為提高磁盤效率和防止重做日誌文件的損壞,oracle使用特殊的重做日誌文件結構,是由3個重做日誌組,每組包含兩個重做日誌組成員,當第一個日誌組寫滿後,就會停止寫入,向第二個日誌組寫入,第二個日誌組寫滿後,向第二個日誌組寫入,第三個日誌組寫滿後向第一個日誌組寫入,oracle使用這種循環方式使用重做日誌組。

oracle規定每個數據庫至少有兩個日誌組,每組至少包含一個或多個日誌成員。oracle循環的使用重做日誌組,當一個重做日誌組寫滿後進行日誌切換,切換到它可以找到的其他重做日誌組。使用新的重做日誌組之前,DBWR進程需要將所有的數據更改寫入到數據文件中。如果數據庫處於歸檔模式下,當發生日誌切換時,歸檔進程(ARCH)會把當前已滿的重做日誌文件中的數據復制到歸檔日誌中。

設計成多個日誌成員的目的是在日誌組內某個日誌文件損壞後及時提供備份,所以同一組的日誌成員一般內容信息相同,但是存放位置不同。

讀取重做日誌文件信息

數據字典視圖V$log記錄當前數據庫的日誌組序號,日誌序列號,每個日誌文件大小,每個日誌組的成員數量,以及日誌組的當前狀態。

使用V$LOG查看重做日誌信息

輸出結果有三個日誌組,每個日誌組分別有一個日誌文件。日誌組2為當前正在使用的重做日誌組,稱為當前日組,當前日誌文件還沒有歸檔,其他非活動重做日誌文件已經歸檔。

數據字典V$LOGFILE記錄了當前日誌組號,該日誌組的狀態、類型和日誌組成員信息。

使用V$LOGFILE查看重做日誌組信息

其中,status參數的含義如下:

空白:此文件正在使用。

stale:該文件內容是不完整的

invalid:該文件不可以被訪問,如剛建立

deleted:該文件已不再有用

根據上面輸出結果可以知道,數據庫有3個重做日誌組,每個日誌組有1個重做日誌文件。

重做日誌組及其成員管理

創建重做日誌組:

一個oracle數據庫日誌組太少,可能導致日誌文件切換頻繁,影響系統性能,所以有時需要增加新的日誌組。如果日誌組內只有一個日誌成員,為避免損壞則需要增加新的日誌成員。

使用v$log查看重做日誌信息
技術分享圖片
使用v$logfile查看重做日誌組信息技術分享圖片
創建重做日誌組的方法:
技術分享圖片
刪除重做日誌組
技術分享圖片
添加刪除重做日誌文件
技術分享圖片
會發現新添加的日誌文件redo33.log是無效狀態,三個日誌組的日誌成員還沒有寫滿,所以redo33.log是無效狀態,只要做兩次強制日誌切換就可以發現是ONLINE狀態了技術分享圖片
刪除重做日誌文件
技術分享圖片
到操作系統日誌文件存放目錄上查看是否還存在redo33.log
技術分享圖片
查看重做日誌信息,group3是當前日誌組
技術分享圖片
刪除日誌組3中的日誌文件redo33.log,會發現當前日誌組中的日誌文件是沒有辦法刪除的
技術分享圖片
強制切換日誌後,就可以刪除新添加的日誌文件了。
技術分享圖片
刪除重做日誌文件的限制條件如下

? 不能刪除當前組的成員,若要刪除則先執行強制性切換重做日誌的命令:alter system switch logfile

? 活動日誌成員不可以刪除

? 沒有歸檔的日誌成員不可刪除

? 當前日誌組中只有一個成員是也不能刪除

日誌組切換和檢查點事件

日誌切換就是停止寫當前日誌組,轉向另一個新的日誌組。系統可以自動切換,也可以手動切換。當發生日誌切換時,系統會在後臺完成檢查點操作,以減少實例的恢復時間。

檢查點是一個事件,用於減少實例恢復的時間。當檢查點發生時,它會出發DBWR進程,把數據高速緩沖區中變化了的數據寫入數據文件,同時檢查點進程更新控制文件和數據文件頭部,保證數據的一致性。檢查點其實是一個後臺進程,用來保證所有修改過的數據庫緩沖區的數據寫入數據文件。

檢查點事件越頻繁,則一旦數據庫發生故障,需要數據恢復的重做日誌中的數據就越少(因為在恢復時,就不必檢查恢復檢查點之前的重做日誌中的數據),所以就減少實例的恢復時間。

強制日誌切換並強制產生檢查點事件。

強制日誌切換
技術分享圖片
強制產生檢查點事件
技術分享圖片
如果對此文有什麽問題的話,請加下面微信一起探討
技術分享圖片

Oracle 11g 管理重做日誌文件