Oracle恢復例項之三:active或current聯機日誌檔案丟失
聯機日誌檔案狀態為active或current表示該日誌包含的資料修改還未完全同步到資料檔案中,在例項恢復時,還需要讀取其中的redo記錄重演,因此如果損壞,資料丟失在所難免。
1)模擬災難
首先檢視log的狀態:
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
2 5 CURRENT
3 3 INACTIVE
4 4 INACTIVE
Group#2的狀態為current,我們找出它所對應的磁碟檔案為:
SQL> select group#,member from v$logfile where group#=2;
GROUP# MEMBER
---------- ---------------------------------------------------------
2 J:\INTEL_LOG\O04DMS0\REDO02.O04DMS0
如果資料庫時正常關閉,在關閉之前,會做一次資料檔案同步,因此為了模擬current檔案丟失的情況,我們異常關閉資料庫:
SQL> shutdown abort;
然後把Group#2對應的檔案REDO02.O04DMS0在作業系統級別上刪除。
2)根據錯誤資訊定位問題
啟動資料庫會出現以下錯誤
SQL> startup
ORACLE instance started.
Total System Global Area 281018368 bytes
Fixed Size 1296292 bytes
Variable Size 251660380 bytes
Database Buffers 25165824 bytes
Redo Buffers 2895872 bytes
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: 'J:\INTEL_LOG\O04DMS0\REDO02.O04DMS0'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
由於有一組日誌檔案丟失,因此資料庫只能mount,無法open,檢視一下丟失的日誌檔案是什麼狀態:
SQL> select group#,sequence#,status from v$log where group#=2;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
2 5 CURRENT
非常不幸,丟失的日誌檔案時current狀態,也就是說資料丟失時難免的,現在能問題是如何讓資料庫能正常開啟。
這時候得修改一個隱藏引數_allow_resetlogs_corruption為true,這個引數為true表示” resetlogs forced to skip the consistency check“:
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
修改之後重啟讓其生效,接著做一次不完全恢復:
SQL> recover database until cancel;
ORA-00279: change 30656042 generated at 11/20/2011 05:32:01 needed for thread 1
ORA-00289: suggestion : H:\INTEL_ARCH\O04DMS0\O04DMS0_1_5_767679611.ARCH
ORA-00280: change 30656042 for thread 1 is in sequence #5
Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'I:\INTEL_DATA\O04DMS0\SYSTEM01.O04DMS0'
ORA-01112: media recovery not started
選擇cancel,出現ORA-錯誤沒關係,這是預料之中的,接著以resetlogs方式開啟資料庫:
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
這時還是錯誤,可能是上面出現的ORA_03113,也可能是ORA-600錯誤,沒關係,這都是在預料之中,最後重啟一下就可以了。
此時REDO02.O04DMS0檔案在作業系統級別上已經恢復回來了,在資料庫中的狀態如下:
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
2 1 INACTIVE
3 2 CURRENT
4 0 UNUSED
1)模擬災難
首先檢視log的狀態:
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
2 5 CURRENT
3 3 INACTIVE
4 4 INACTIVE
Group#2的狀態為current,我們找出它所對應的磁碟檔案為:
SQL> select group#,member from v$logfile where group#=2;
GROUP# MEMBER
---------- ---------------------------------------------------------
2 J:\INTEL_LOG\O04DMS0\REDO02.O04DMS0
如果資料庫時正常關閉,在關閉之前,會做一次資料檔案同步,因此為了模擬current檔案丟失的情況,我們異常關閉資料庫:
SQL> shutdown abort;
然後把Group#2對應的檔案REDO02.O04DMS0在作業系統級別上刪除。
2)根據錯誤資訊定位問題
啟動資料庫會出現以下錯誤
SQL> startup
ORACLE instance started.
Total System Global Area 281018368 bytes
Fixed Size 1296292 bytes
Variable Size 251660380 bytes
Database Buffers 25165824 bytes
Redo Buffers 2895872 bytes
Database mounted.
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: 'J:\INTEL_LOG\O04DMS0\REDO02.O04DMS0'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
由於有一組日誌檔案丟失,因此資料庫只能mount,無法open,檢視一下丟失的日誌檔案是什麼狀態:
SQL> select group#,sequence#,status from v$log where group#=2;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
2 5 CURRENT
非常不幸,丟失的日誌檔案時current狀態,也就是說資料丟失時難免的,現在能問題是如何讓資料庫能正常開啟。
這時候得修改一個隱藏引數_allow_resetlogs_corruption為true,這個引數為true表示” resetlogs forced to skip the consistency check“:
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
修改之後重啟讓其生效,接著做一次不完全恢復:
SQL> recover database until cancel;
ORA-00279: change 30656042 generated at 11/20/2011 05:32:01 needed for thread 1
ORA-00289: suggestion : H:\INTEL_ARCH\O04DMS0\O04DMS0_1_5_767679611.ARCH
ORA-00280: change 30656042 for thread 1 is in sequence #5
Specify log: {
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'I:\INTEL_DATA\O04DMS0\SYSTEM01.O04DMS0'
ORA-01112: media recovery not started
選擇cancel,出現ORA-錯誤沒關係,這是預料之中的,接著以resetlogs方式開啟資料庫:
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
這時還是錯誤,可能是上面出現的ORA_03113,也可能是ORA-600錯誤,沒關係,這都是在預料之中,最後重啟一下就可以了。
此時REDO02.O04DMS0檔案在作業系統級別上已經恢復回來了,在資料庫中的狀態如下:
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
2 1 INACTIVE
3 2 CURRENT
4 0 UNUSED
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26277071/viewspace-711643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle丟失active或current日誌檔案的恢復操作過程Oracle
- Oracle恢復例項之二:Inactive聯機日誌檔案丟失Oracle
- Oracle恢復例項之一:資料檔案、控制檔案、聯機日誌丟失Oracle
- 丟失聯機重做日誌檔案的恢復
- oracle丟失日誌檔案的恢復( 轉)Oracle
- Oracle重做日誌檔案損壞或丟失後的恢復Oracle
- 聯機重做日誌丟失的恢復
- 【恢復】Redo日誌檔案丟失的恢復
- rman恢復--丟失聯機重做日誌的恢復
- 丟失當前current重做日誌檔案下恢復資料庫資料庫
- Oracle聯機日誌檔案丟失解決方法一例Oracle
- Oracle聯機日誌檔案丟失或損壞的處理方法Oracle
- rman恢復:資料檔案丟失,控制檔案丟失,聯機日誌檔案丟失(非當前使用與當前使用)
- 非歸檔丟失日誌檔案的恢復
- ORACLE聯機日誌檔案丟失或損壞的處理方法(轉)Oracle
- Oracle聯機日誌檔案丟失或損壞的處理方法 (轉)Oracle
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案
- oracle丟失inactive日誌檔案的恢復操作過程Oracle
- 恢復案例:無歸檔,丟失全部控制檔案、日誌檔案恢復案例
- 聯機日誌檔案丟失解決方法
- 在歸檔模式下丟失日誌檔案的恢復模式
- sqlplus 下恢復active 日誌丟失的情況SQL
- 解決Oracle資料庫日誌檔案丟失恢復問題Oracle資料庫
- 聯機重做日誌檔案的恢復
- 聯機日誌檔案丟失解決方法(二)
- 聯機日誌檔案丟失解決方法(一)
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- oracle歸檔日誌丟失後的資料庫恢復Oracle資料庫
- Oracle Password檔案丟失的恢復Oracle
- Oracle資料庫聯機日誌檔案丟失處理方法(1)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(3)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(2)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(4)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(5)Oracle資料庫
- 丟失所有重做日誌檔案的恢復例子丟失所有重做日誌檔案的恢復例子如下:
- Oracle資料庫聯機日誌檔案丟失處理方法(總結)!Oracle資料庫
- 記一次Oracle 聯機日誌檔案丟失的處理方案Oracle