redo日志全部丟失的情況下。Oracle的實例恢復


場景:
redo日志全部丟失的場景。

alert日志報錯如下:

ORA-00313: 無法打開日志組 1 (用於線程 1) 的成員
ORA-00312: 聯機日志 1 線程 1: '/u01/app/oradata/oradb/redo01.log'
ORA-27037: 無法獲得文件狀態
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Thu Oct 15 16:22:08 2020
Errors in file /u01/app/diag/rdbms/oradb/oradb/trace/oradb_m000_2835.trc:
ORA-00322: log 1 of thread 1 is not current copy
ORA-00312: online log 1 thread 1: '/u01/app/oradata/oradb/redo01.log'
Errors in file /u01/app/diag/rdbms/oradb/oradb/trace/oradb_m000_2835.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u01/app/oradata/oradb/redo02.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Completed: ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1
Errors in file /u01/app/diag/rdbms/oradb/oradb/trace/oradb_m000_2835.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oradata/oradb/redo03.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Checker run found 6 new persistent data failures
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2
Clearing online log 2 of thread 1 sequence number 4430
Errors in file /u01/app/diag/rdbms/oradb/oradb/trace/oradb_ora_2826.trc:
ORA-00313: 無法打開日志組 2 (用於線程 1) 的成員
ORA-00312: 聯機日志 2 線程 1: '/u01/app/oradata/oradb/redo02.log'
ORA-27037: 無法獲得文件狀態
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/app/diag/rdbms/oradb/oradb/trace/oradb_ora_2826.trc:
ORA-00313: 無法打開日志組 2 (用於線程 1) 的成員
ORA-00312: 聯機日志 2 線程 1: '/u01/app/oradata/oradb/redo02.log'

也可以看到redo在線日志丟失。

這里可以看看redo日志的位置和狀態:

SYS@oradb> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE	  MEMBERS ARC STATUS	       FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
NEXT_CHANGE# NEXT_TIME
------------ --------------
	 1	    1	    4429   52428800	   512		1 YES INACTIVE		  1.0235E+13 15-10月-20
  1.0235E+13 15-10月-20

	 3	    1	    4431   52428800	   512		1 NO  CURRENT		  1.0235E+13 15-10月-20
  2.8147E+14

	 2	    1	    4430   52428800	   512		1 YES INACTIVE		  1.0235E+13 15-10月-20
  1.0235E+13 15-10月-20


SYS@oradb> select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
------------------------------------------------------------------------------------------------------------------------
IS_
---
	 3	   ONLINE
/u01/app/oradata/oradb/redo03.log
NO

	 2	   ONLINE
/u01/app/oradata/oradb/redo02.log
NO

	 1	   ONLINE
/u01/app/oradata/oradb/redo01.log
NO

可以看到group1和group2是inactive。可以通過如下命令恢復重建

SYS@oradb> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;    

數據庫已更改。

SYS@oradb> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2;

數據庫已更改。

但是,對於current的redo日志來說,就是很大的問題了。
這里是通過一個實例恢復的方式,命令如下:
正常關閉數據庫

SYS@oradb> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。

啟動數據庫至mount狀態,恢復數據庫實例

SYS@oradb> startup mount;
ORACLE 例程已經啟動。

Total System Global Area 1.0260E+10 bytes
Fixed Size 2347880 bytes
Variable Size 2583694488 bytes
Database Buffers 7667187712 bytes
Redo Buffers 6402048 bytes
數據庫裝載完畢。
SYS@oradb> recover database until cancel;
完成介質恢復。
SYS@oradb> alter database open resetlogs;

NOTE: If the current online log, needed for instance recovery, is lost, the database must be restored and recovered through the last available archivelog file(PITR).

至此,模擬環境的oracle恢復成功,文獻參考:

How to Recover from Loss Of Online Redo Log And ORA-312 And ORA-313 (Doc ID 117481.1) To BottomTo Bottom


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM