REDO檔案丟失的恢復__沒有任何備份的情況
以下為沒有任何備份的前提下,但是控制檔案、其他所有檔案都是OK的情況下
online redo inactive\unused檔案丟失,可以恢復,只要啟動到mount狀態,alter database clear logfile即可
比如手工刪除了active狀態的group 1的所有日誌檔案,啟動的時候報錯ORA-00313: open failed for members of log group 1 of thread 1
SQL> startup mount;
SQL> alter database clear logfile group 1;
SQL> alter database open;
online redo active檔案丟失,無法恢復。
SQL> select GROUP#,THREAD#,SEQUENCE#,STATUS from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 10 CURRENT
3 1 9 ACTIVE
2 1 8 ACTIVE
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/orcl/redo02.log'
online redo current檔案丟失,基本上是無法恢復了
沒有任何備份的環境下online redo current檔案丟失(歸不歸檔都一樣),一般恢復不過來。但仍有如下大概的恢復方法,無法保證一定能成功,運氣好的話可能成功。
遇到這樣的問題,一般是如下場景
SQL>startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN>alter database open resetlogs;
後會有如下提示
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/DB/system01.dbf'
這是因為當前的redo log寫入不完整導致庫無法開啟,我們需要使用強制open資料庫的方式,使其跳過資料庫對redo和undo 表空間的檢驗。
恢復方法
1.備份所有資料檔案(強制開庫後所有檔案都會有一次寫入行為,如果強制開庫失敗,可能會導致最後一招DUL資料抽取工具都無法使用)
2.擷取出報錯ORA-01110中資料檔案的UNDO資訊,如上為system01.dbf
strings system01.dbf | grep _SYSSMU | cut -d $ -f 1 | sort -u
3.根據上面顯示的UNDO資訊,在pfile中新增引數_CORRUPTED_ROLLBACK_SEGMENTS,如下_SYSSMU1$表示以1開頭的所有UNDO資訊,一般如下配置就包括了所有的UNDO資訊,1開頭到9開頭的所有UNDO
_CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$)
4.pfile中繼續新增如下引數
UNDO_MANAGEMENT=MANUAL
_ALLOW_RESETLOGS_CORRUPTION = TRUE
5.啟動資料到mount狀態
SQL>startup mount pfile='/..../init.ora'
SQL>show parameter corrupt;
SQL>show parameter undo
6.Recover and open the database:
SQL>RECOVER DATABASE UNTIL CANCEL;
==>輸入CANCEL
SQL>ALTER DATABASE OPEN RESETLOGS;
ALTER DATABASE OPEN RESETLOGS
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [2662], [2380], [2470549886],
[2380], [2470550245], [12583040], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [2662], [2380], [2470549885],
[2380], [2470550245], [12583040], [], [], [], [], [], []
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [2662], [2380], [2470549881],
[2380], [2470550245], [12583040], [], [], [], [], [], []
Process ID: 4066
Session ID: 3753 Serial number: 3
7.如果上面報錯ora-00600 [2662],則需要推進SCN,執行一次10015 level 1表示推進100萬,執行兩次表示推進200萬,10015 level 1表示推進500萬,如下表示推進了700萬,推進多次後alter database open還是報ORA-01113的話就沒轍了
SQL> shutdown abort;
SQL> startup mount pfile='/..../init.ora';
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 1';
Session altered.
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 1';
Session altered.
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 5';
Session altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u01/app/oracle/oradata/DB/system01.dbf'
注意:利用上面這種方法開啟的資料庫,很有可能存在不一致的地方,所以用exp/imp的方法將資料匯入到新庫中。
online redo inactive\unused檔案丟失,可以恢復,只要啟動到mount狀態,alter database clear logfile即可
比如手工刪除了active狀態的group 1的所有日誌檔案,啟動的時候報錯ORA-00313: open failed for members of log group 1 of thread 1
SQL> startup mount;
SQL> alter database clear logfile group 1;
SQL> alter database open;
online redo active檔案丟失,無法恢復。
SQL> select GROUP#,THREAD#,SEQUENCE#,STATUS from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ----------------
1 1 10 CURRENT
3 1 9 ACTIVE
2 1 8 ACTIVE
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-01624: log 2 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/orcl/redo02.log'
online redo current檔案丟失,基本上是無法恢復了
沒有任何備份的環境下online redo current檔案丟失(歸不歸檔都一樣),一般恢復不過來。但仍有如下大概的恢復方法,無法保證一定能成功,運氣好的話可能成功。
遇到這樣的問題,一般是如下場景
SQL>startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN>alter database open resetlogs;
後會有如下提示
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/DB/system01.dbf'
這是因為當前的redo log寫入不完整導致庫無法開啟,我們需要使用強制open資料庫的方式,使其跳過資料庫對redo和undo 表空間的檢驗。
恢復方法
1.備份所有資料檔案(強制開庫後所有檔案都會有一次寫入行為,如果強制開庫失敗,可能會導致最後一招DUL資料抽取工具都無法使用)
2.擷取出報錯ORA-01110中資料檔案的UNDO資訊,如上為system01.dbf
strings system01.dbf | grep _SYSSMU | cut -d $ -f 1 | sort -u
3.根據上面顯示的UNDO資訊,在pfile中新增引數_CORRUPTED_ROLLBACK_SEGMENTS,如下_SYSSMU1$表示以1開頭的所有UNDO資訊,一般如下配置就包括了所有的UNDO資訊,1開頭到9開頭的所有UNDO
_CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$)
4.pfile中繼續新增如下引數
UNDO_MANAGEMENT=MANUAL
_ALLOW_RESETLOGS_CORRUPTION = TRUE
5.啟動資料到mount狀態
SQL>startup mount pfile='/..../init.ora'
SQL>show parameter corrupt;
SQL>show parameter undo
6.Recover and open the database:
SQL>RECOVER DATABASE UNTIL CANCEL;
==>輸入CANCEL
SQL>ALTER DATABASE OPEN RESETLOGS;
ALTER DATABASE OPEN RESETLOGS
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [2662], [2380], [2470549886],
[2380], [2470550245], [12583040], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [2662], [2380], [2470549885],
[2380], [2470550245], [12583040], [], [], [], [], [], []
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [2662], [2380], [2470549881],
[2380], [2470550245], [12583040], [], [], [], [], [], []
Process ID: 4066
Session ID: 3753 Serial number: 3
7.如果上面報錯ora-00600 [2662],則需要推進SCN,執行一次10015 level 1表示推進100萬,執行兩次表示推進200萬,10015 level 1表示推進500萬,如下表示推進了700萬,推進多次後alter database open還是報ORA-01113的話就沒轍了
SQL> shutdown abort;
SQL> startup mount pfile='/..../init.ora';
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 1';
Session altered.
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 1';
Session altered.
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 5';
Session altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u01/app/oracle/oradata/DB/system01.dbf'
注意:利用上面這種方法開啟的資料庫,很有可能存在不一致的地方,所以用exp/imp的方法將資料匯入到新庫中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2142751/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Redo丟失恢復方案Oracle
- 【BBED】丟失歸檔檔案情況下的恢復
- dg丟失歸檔,使用rman增量備份恢復
- 剪下的檔案還能恢復嗎,恢復剪貼丟失的檔案
- Oracle-無備份情況下,如何手動恢復控制檔案Oracle
- 丟失的隨身碟檔案如何恢復?
- 電腦檔案丟失資料恢復資料恢復
- XFS檔案系統的備份、恢復、修復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- DATA GUARD主庫丟失資料檔案的恢復(2)
- 硬碟顯示沒有初始化未分配是什麼情況?快速恢復沒有初始化硬碟的檔案硬碟
- Oracle-真實環境的丟失current redo log file的故障恢復Oracle
- 檔案的基本管理和XFS檔案系統備份恢復
- Linux中XFS檔案系統的備份,恢復,修復Linux
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- macOS Big Sur系統如何恢復丟失的資料檔案?Mac
- 測試在丟失歸檔日誌的情況下,跳過部分歸檔日誌進行資料恢復資料恢復
- 12 使用RMAN備份和恢復檔案
- 實戰:xfs檔案系統的備份和恢復
- 【伺服器資料恢復】伺服器還原了2年前的舊快照並且沒有最新備份情況下的資料恢復伺服器資料恢復
- 存放在電腦中的檔案丟失了怎麼恢復
- Oracle 之利用BBED修改資料塊SCN----沒有備份資料檔案的資料恢復Oracle資料恢復
- 世界備份日——如果您丟失了所有檔案
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 2.7.10 恢復丟失或損壞的伺服器引數檔案(SPFILE)伺服器
- 檔案丟失不用怕:超實用的Mac資料恢復軟體!Mac資料恢復
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- win10 ppt檔案丟失怎麼恢復_win10 ppt文件丟失如何找回Win10
- 如何從Active Backup for Business備份中恢復檔案
- 如何備份及恢復Linux檔案許可權Linux
- 【虛擬機器資料恢復】Hyper-V虛擬化檔案丟失的資料恢復案例虛擬機資料恢復
- oracle dg 歸檔日誌恢復情況Oracle
- RAC備份恢復之Voting備份與恢復
- GitLab的備份與恢復Gitlab