重做日誌

jerryhui發表於2009-03-12

重做日誌(Online Redo Log)

重做日誌用於記錄資料庫變化,當執行例程恢復或介質恢復時需要使用重做日誌。當執行DDL和DML操作時,事物變化會被寫到重做日誌緩衝區,而在特定時刻LGWR會將重做日誌緩衝區的內容寫入重做日誌。每個重做執行緒至少需要包含兩個重做日誌組,並且這些重做日誌組是迴圈使用的。假定當前重做執行緒包含三個日誌組,初始階段LGWR會將事務變化寫入到日誌組一,當日志組一寫滿之後,Oracle 自動進行日誌切換,並且LGWR會將事務變化寫入到日誌組二;當日志組二寫滿之後,LGWR會將事務變化寫入到日誌組三;當日志組三寫滿之後,LGWR又會將事物變化寫回到日誌組一,依此類推:

1)日誌組。在單例程環境中,只有一個重做執行緒:在RAC(Real Application Cluster)環境中,包括多個重做執行緒。每個重做執行緒至少要包含兩個日誌組,通過查詢動態效能檢視V$LOG,可以顯示重做執行緒的所有日誌組資訊,包括日誌組編號,日誌成員個數,日誌組狀態,尺寸,日誌序列號等。下面以顯示重做執行緒1的所有日誌組資訊為例說明使用V$LOG的方法。示例如下:

SQL> col  status format a8

SQL> col group#  format 999999

SQL> SELECT group#,members,sequence#,status,bytes,first_change# from v$log where thread#=1;

Group#       MEMBERS    SEQUENCES#        STATUS   BYTES FIRST_CHANGE#

1                    1                        176                      INACTIVE   10485760      1034933

2                     1                       177                      INACTIVE    10485760      1058173

3                     1                        178                      CURRENT  10485760     1081806

如上所示,group#用於標識日誌組編號,members用於標識每個日誌組的日誌成員個數,sequence#用於標識日誌序列號,status用於標識日誌組狀態,bytes用於標識日誌組尺寸,first_change#用於標識日誌組的起始SCN值。

(2)日誌成員。日誌組是由一個或多個日誌成員組成的。通過查詢動態效能檢視V$LOGFILE,可以顯示當前重做執行緒的所有日誌成員資訊。下面現實日誌組1所包含的日誌成員為例說明使用V$LOGFILE的方法。示例如下:

SQL> col member    format   a30

SQL> SELECT member,status from V$logfile where group#=1;

MEMBER                                    STATUS

D:\DEMO\REDO01.LOG           STALE

如上所示,member用於標識日誌組的日誌成員檔名,status用於標識日誌成員的狀態(STALE:許久未用-----日誌組太大)

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12035968/viewspace-566974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章