oracle重做日誌檔案組v$log
v$log中status指的是重做日誌檔案組的狀態,各狀態含義:
CURRENT:當前的,正在被使用的日誌檔案,同一時刻只有一個日誌檔案會處於CURRENT狀態,處於CURRENT的日誌檔案被LGWR程序實時的寫入
ACTIVE:活動的,未被LGWR寫,剛切換完成,尚未發生檢查點,例項恢復時需要的重做日誌檔案為ACTIVE(處於ACTIVE的日誌檔案組無法刪除)
INACTIVE:不活動的,例項恢復時不需要的重做日誌檔案為INACTIVE
UNUSED:還沒有被寫入的空白日誌檔案
CLEARING:正在被清除的日誌檔案,日誌清除後狀態變為UNUSED
CLEARING_CURRENT
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- ----------- ------------ -----------
21 1 541787 536870912 512 1 YES INACTIVE 1025670969103 2016/9/18 1 102567098835 2016/9/18 1
22 1 541788 536870912 512 1 YES INACTIVE 1025670988354 2016/9/18 1 102567100793 2016/9/18 1
23 1 541783 536870912 512 1 YES INACTIVE 1025655942230 2016/9/18 1 102565596150 2016/9/18 1
24 1 541784 536870912 512 1 YES INACTIVE 1025655961500 2016/9/18 1 102565598107 2016/9/18 1
25 1 541786 536870912 512 1 YES INACTIVE 1025655999506 2016/9/18 1 102567096910 2016/9/18 1
26 1 541785 536870912 512 1 YES INACTIVE 1025655981078 2016/9/18 1 102565599950 2016/9/18 1
34 1 541789 536870912 512 1 YES INACTIVE 1025671007934 2016/9/18 1 102567102642 2016/9/18 1
35 1 541790 536870912 512 1 YES ACTIVE 1025671026423 2016/9/18 1 102567104561 2016/9/18 1
36 1 541791 536870912 512 1 YES ACTIVE 1025671045615 2016/9/18 1 102567105747 2016/9/18 1
37 1 541792 536870912 512 1 NO CURRENT 1025671057476 2016/9/18 1 281474976710
38 1 541781 536870912 512 1 YES INACTIVE 1025655905322 2016/9/18 1 102565592325 2016/9/18 1
39 1 541782 536870912 512 1 YES INACTIVE 1025655923257 2016/9/18 1 102565594223 2016/9/18 1
12 rows selected
SQL>
注意
如果資料庫處於ARCHIVELOG模式(歸檔模式),在沒有被後臺歸檔程序(ARCn)歸檔前,ACTIVE的日誌檔案不能被再次使用;如果資料庫處於NOARCHIVELOG模式(非歸檔模式),當最後一個重做日誌檔案被寫滿後,LGWR會重新寫入第一個ACTIVE日誌檔案
可以使用alter database checkpoint命令手動的建立一個檢查點,來使active的日誌檔案組變成inactive的日誌檔案組
active和inactive的區別
這兩種狀態的重做日誌都是已經歸檔的,不同的是,active狀態的重做日誌檔案組是在例項恢復的時候被需要的,因為有一些事務雖然已經提交了,但是這些記錄的更改還沒有寫到datafile中,如果這個時候例項down掉,在進行例項恢復的時候會需要這些active狀態的日誌檔案組,每過一段時間,當系統負載不是很大的時候,Oracle會嘗試將記憶體中的資料寫入到datafile中,這個時候active的日誌檔案組就會變成inactive狀態,我們可以使用alter database checkpoint強制來執行這個過程;而inactive是在例項恢復的時候不被需要的日誌檔案組。