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