Oracle重做日誌文件

Oracle重做日誌文件

一.簡介

    Oracle引入重做日誌的目的:數據庫的恢復。

    Oracle相關進程:重做日誌寫進程(LGWR)。

    重做日誌性質:聯機日誌文件,oracle服務器運行時需要管理它們。

    相關數據字典:v$log ; v$logfile 

    操作者權限:具有sys用戶或system用戶權限。

二.獲取重做日誌的信息

1. 獲得數據庫中有多少個重做日誌組,每個組中有多少個成員、日誌大小及狀態。

SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED FROM V$LOG;

   結果如下圖:

   

狀態列(status)所顯示常用狀態的含義:

  •       inactive:表示實例恢復已不再需要這組聯機重做日誌組了。
  •        active:表示該組是活動的但不是當前組,實例恢復時需要這組日誌。
  •        current:表示該組日誌是當前組,該聯機重做日誌組是活動的。
  •        unused:表示該日誌組從未寫過,是重做日誌剛剛添加到狀態。

 

2. 獲得數據庫中每個重做日誌組的成員所在目錄、文件名及狀態。

    SELECT GROUP#,STATUS,TYPE,MEMBER FROM V$LOGFILE;

    結果如下圖:

     

狀態列(status)所顯示常用狀態的含義:

  •        空白:表示該文正在使用。
  •        stale:表示該文件中的內容是不完全的。
  •        invalid:表示該文件是不可以被訪問的。
  •         deleted:表示該文件已不在有用了。

 

三.日誌切換

    聯機重做日誌文件是以一種循環的方式來使用,當一組聯機重做日誌文件被寫滿時,LGWR將開始寫下一組日誌文件,這被稱爲日誌切換。可以在任何時候強制性的進行重做日誌切換操作。

       強制重做日誌切換命令:ALTER SYSTEM SWITCH LOGFILE;

       日誌切換前,正在寫的日誌組是3

       

執行命令ALTER SYSTEM SWITCH LOGFILE 後,在寫日誌組變爲1

       

但在線重做日誌不可以直接RESIZE,需要通過如下方式:

1)添加新的日誌文件組,定義它的大小

SYS@TEST15>alter database add logfile group 4 ('/data/oradata/orcl/data/redo04.log') size 500M reuse;

Database altered.

2)持續切換日誌,一直到Group 1的status=inactive,且archived=yes(如果爲歸檔的話),如下所示:

SYS@TEST15>ALTER SYSTEM SWITCH LOGFILE;
SYS@TEST15>alter system checkpoint;
SYS@TEST15>select group#,sequence#,bytes/1024/1024 "BYTES(M)",members,archived,status from v$log where group#=1;

    GROUP#  SEQUENCE#  BYTES(M)    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- --- ----------------
        1        214        100          2 YES INACTIVE

3)刪除Group 1

SYS@TEST15>alter database drop logfile group 1;

Database altered.

這樣,我們就完成了用更大的Group 4取代原有的Group 1,至於Group 2, Group 3以此類推。

最後,還要記得到操作系統上把日誌文件刪除。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章