Managing the Redo Log-6.1、What Is the Redo Log?

當前重做日誌經常是在線的,所以type是online,它的類型和歸檔日誌是不同的。所以在線重做日誌簡稱重做日誌。怎麼在一個標準單實例配置和管理重做日誌。

6.1、What Is the Redo Log?
恢復操作最重要的結構就是重做日誌,它們保存了關於數據庫所有更改。每個實例都有重做日誌保護數據庫,以防實例失敗。
6.1.1、Redo Threads
每個數據庫實例都有一個redo線程。典型配置中,只用一個數據庫實例訪問一個數據庫,所以只有一個線程出現。在rac環境,兩個或更多實例訪問一個數據庫,每個實例有一個redo線程。每個實例的redo線程避免重做日誌單一集的競爭,由此排除一個潛在的性能瓶頸。
rac環境的重做日誌,查看Oracle Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide

6.1.2、Redo Log Contents
每個重做日誌保存了redo records。一條重做記錄,也被稱作重做條目,它是由一組change vectors(變更矢量)組成,每個變更矢量描述了每個塊的改變。比如,改變employee表的salary字段的值,產生一條重做記錄,其中的變更矢量描述了數據塊、回滾塊和回滾段中事務表的改變。重做記錄中的數據被用作重建所有的變更,包括回滾段。所以,重做日誌也保護回滾數據。當使用重做數據恢復數據庫時,數據庫讀取變更矢量,把變更應用到相關的數據塊。
重做記錄用環形的方法緩存在sga的redo log buffer。lgwr把重做日誌寫入重做日誌文件。當一個事務提交後,lgwr立刻把事務的重做記錄從redo log buffer寫入到重做日誌文件,同時給這些重做記錄分派一個scn(識別每個已提交事務的重做記錄)。在相應的事務被提交前,重做記錄也可以被寫進重做日誌。如果redo log buffer滿了,此時另外一個事務提交,lgwr把在redo log buffer中的所有重做記錄刷新到重做日誌。如果需要,數據庫會回滾重做日誌中的異常記錄。

6.1.3、How Oracle Database Writes to the Redo Log
數據庫需要至少兩個重做日誌文件,當一個被歸檔時,另外一個被寫入。lgwr寫入重做日誌使用循環的方式。當current重做日誌滿了,lgwr開始寫入另外一個重做日誌。滿了的重做日誌,lgwr是否可以重用,依賴於是否打開歸檔:
(1)未開啓歸檔,記錄到重做日誌的變更都被寫入數據文件,滿了的重做日誌立刻可以被重用
(2)開啓歸檔,記錄到重做日誌的變更都被寫入數據文件,同時重做日誌被歸檔,滿了的重做日誌才能被使用

6.1.3.1、Active (Current) and Inactive Redo Log Files
在同一時刻,oracle只寫入一個重做日誌文件。lgwr正在寫入的重做日誌文件,稱爲當前重做日誌文件(current)。需要用做實例恢復的重做日誌文件,稱爲活動重做日誌文件
(active)。不需要用做實例恢復的重做日誌文件,稱爲非活動重做日誌文件(inactive)。打開歸檔,活動重做日誌文件直到被歸檔後,立刻狀態變爲inactive,才能被重用和覆蓋。

6.1.3.2、Log Switches and Log Sequence Numbers
日誌切換是一個點,lgwr停止寫當前重做日誌文件,開始寫入一個新的重做日誌文件。一般地,噹噹前重做日誌文件滿了,必須繼續寫入一個新的重做日誌文件,發生日誌切換。然而,你可以配置在規律的間隔內切換日誌。也可以手動地強制日誌切換。每次日誌切換、lgwr開始寫入一個新的重做日誌文件時,數據庫給該重做日誌文件分派一個新log sequence number。當歸檔重做日誌文件時,歸檔日誌保存它的log sequence number。每個在線日誌和歸檔日誌是通過log sequence number被唯一識別。在崩潰恢復、實例恢復、介質恢復期間,數據庫按照log sequence number的升序應用重做日誌文件。

發佈了48 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章