您好,登錄后才能下訂單哦!
重做日志也稱聯機重做日志。引入重做日志的目的是數據恢復。在數據庫運行過程中,用戶更改的數據會暫時存放在數據庫的高速緩沖區中。為了提高寫數據的速度,并不是一旦有數據變化,就把變化的數據寫到數據文件中。頻繁的讀寫磁盤文件會使數據庫系統效率降低,所以要等到數據庫高速緩沖區中的數據達到一定的量或者滿足一定的條件時,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進程,把數據高速緩沖區中變化了的數據寫入數據文件,同時檢查點進程更新控制文件和數據文件頭部,保證數據的一致性。檢查點其實是一個后臺進程,用來保證所有修改過的數據庫緩沖區的數據寫入數據文件。
檢查點事件越頻繁,則一旦數據庫發生故障,需要數據恢復的重做日志中的數據就越少(因為在恢復時,就不必檢查恢復檢查點之前的重做日志中的數據),所以就減少實例的恢復時間。
強制日志切換并強制產生檢查點事件。
強制日志切換
強制產生檢查點事件
如果對此文有什么問題的話,請加下面微信一起探討
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。