ORACLE 版本:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
standby的状态为read only ,但还没有启动redo应用。
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY
standby已经接受到352号归档文件。
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
352
由于没有启动redo应用,目前只应用到329号。
SQL> select max(sequence#) from v$archived_log where applied='YES';
MAX(SEQUENCE#)
--------------
329
在操作系统上手工删除345号归档文件
[oracle@oradev01 arch]$ rm 1_345_768482696.dbf
然后启动redo应用
SQL> alter database recover managed standby database disconnect from session;
Database altered.
确认数据库已经启用redo应用
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
观察alert_[sid].log 发现当应用到345号归档的时候出现错误。这时standby会尝试从主库获取到被删除的归档文件。
由于primary库上还有345号归档存在。所以可以再次从primary获取345号归档文件。
Media Recovery Log /opt/ora11g/arch01/1_343_768482696.dbf
Media Recovery Log /opt/ora11g/arch01/1_344_768482696.dbf
Media Recovery Log /opt/ora11g/arch01/1_345_768482696.dbf
Error opening /opt/ora11g/arch01/1_345_768482696.dbf
Attempting refetch
Media Recovery Waiting for thread 1 sequence 345
Fetching gap sequence in thread 1, gap sequence 345-345
Mon Jan 30 09:55:24 2012
RFS[2]: Allowing overwrite of partial archivelog for thread 1 sequence 345
RFS[2]: Opened log for thread 1 sequence 345 dbid -1778976251 branch 768482696
Archived Log entry 135 added for thread 1 sequence 345 rlc 768482696 ID 0x960fc544 dest 2:
Mon Jan 30 09:55:34 2012
Media Recovery Log /opt/ora11g/arch01/1_345_768482696.dbf
Media Recovery Log /opt/ora11g/arch01/1_346_768482696.dbf
过一段时间,可以看到redo已经应用到352号归档日志。
SQL> select max(sequence#) from v$archived_log where applied='YES';
MAX(SEQUENCE#)
--------------
352
如果主库的归档日志也被删除,但有归档日志备份,那么可以从备份中恢复指定的归档日志。
standby仍然可以自动接收到丢失的归档日志。
查看standby需要的归档日志,在主库是否有备份。如果返回下述信息,说明归档日志已经备份过。
RMAN> list backup of archivelog from sequence 345;
List of Backup Sets
===================
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
69 125.85M DISK 00:00:27 29-JAN-12
BP Key: 69 Status: AVAILABLE Compressed: YES Tag: TAG20120129T153643
Piece Name: /opt/ora11g/backup/ORCLTESTORCLTEST7738546037127n205cb
List of Archived Logs in backup set 69
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 345 5896440 29-JAN-12 5900164 29-JAN-12
如果归档日志没有备份,则返回下述信息。
RMAN> list backup of archivelog from sequence 3520;
specification does not match any backup in the repository
从备份中恢复指定的单个归档文件:
RMAN> restore archivelog sequence 345 ;
从备份中恢复多个连续的归档文件:
RMAN> restore archivelog sequence between 344 and 345;