发现DG日志未应用,却已被删除.10g及以上版本可用如下方式处理,9i需要重建备库
SEQUENCE# DEST_ID ARC APP DEL S TO_CHAR(FIRST_TIME,
---------- ---------- --- --- --- - -------------------
8029 1 YES NO NO A 2016-01-20 09:37:40
8030 1 YES NO NO A 2016-01-20 09:59:22
8031 1 YES NO NO A 2016-01-20 10:20:47
9307 1 YES NO NO A 2016-01-18 11:14:43
9308 1 YES NO NO A 2016-01-18 11:56:25
9309 1 YES NO NO A 2016-01-18 13:15:42
alert中出现如下告警,提示有gap产生
FAL[client]: Failed to request gap sequence
GAP - thread 2 sequence 9300-9300
DBID 1203244586 branch 881971762
FAL[client]: All defined FAL servers have been attempted.
-------------------------------------------------------------
Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
parameter is defined to a value that is sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.
-------------------------------------------------------------
SQL> select name,sequence#,applied from v$archived_log a where a.sequence#=(select max(sequence#) from v$archived_log
NAME SEQUENCE# APP
---------------------------------------------------------------------------------------- ---------- ---
+BMDATA/orcl/archivelog/2016_01_20/thread_2_seq_9382.578.901619965 9382 NO
而此时主库归档已经被删除。
恢复步骤如下:
【备库】
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
----------------------
11088491280088
【主库】
RMAN> BACKUP INCREMENTAL FROM SCN 11088491280088 DATABASE FORMAT '/backup/backupset/dg_gap_%U' tag 'dg_gap';
SQL> ALTER DATABASE CREATE standby controlfile AS '/backup/backupset/dg_gap_standby.ctl'
【备库】
scp -P 10030 192.168.40.12:/backup/backupset/dg_gap* /backup/backupset/
【备库】
SQL> shutdown immediate;
SQL> startup nomount;
RMAN> restore controlfile from '/backup/backupset/dg_gap_standby.ctl';
RMAN> alter database mount;
清空备库日志组
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
注:如果采用了standby log模式,不需要清空,如果清空会出现
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE GROUP 1
*
ERROR at line 1:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: '/u01/oradata/xienfei/redo01.log'
说明:如果没有采用standby log模式,有几组需要清空几组
备库重设flashback
SQL> ALTER DATABASE FLASHBACK OFF;
SQL> ALTER DATABASE FLASHBACK ON;
RMAN> catalog start with '/backup/backupset';
RMAN> recover database noredo;
查看alert可以看到Incremental restore
Incremental restore complete of datafile 1 +BMDATA/orcl/datafile/system01.dbf
checkpoint is 11088529914068
last deallocation scn is 11085244558503
SQL> alter database recover managed standby database disconnect from session;
SQL> alter database switch logfile;
注:可能会遇到recover database noredo时出现提示RMAN-06094: datafile 36 must be restored,这时候只要对数据文件单独先进行restore再进行recover即可。
SEQUENCE# DEST_ID ARC APP DEL S TO_CHAR(FIRST_TIME,
---------- ---------- --- --- --- - -------------------
8029 1 YES NO NO A 2016-01-20 09:37:40
8030 1 YES NO NO A 2016-01-20 09:59:22
8031 1 YES NO NO A 2016-01-20 10:20:47
9307 1 YES NO NO A 2016-01-18 11:14:43
9308 1 YES NO NO A 2016-01-18 11:56:25
9309 1 YES NO NO A 2016-01-18 13:15:42
alert中出现如下告警,提示有gap产生
FAL[client]: Failed to request gap sequence
GAP - thread 2 sequence 9300-9300
DBID 1203244586 branch 881971762
FAL[client]: All defined FAL servers have been attempted.
-------------------------------------------------------------
Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
parameter is defined to a value that is sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.
-------------------------------------------------------------
SQL> select name,sequence#,applied from v$archived_log a where a.sequence#=(select max(sequence#) from v$archived_log
NAME SEQUENCE# APP
---------------------------------------------------------------------------------------- ---------- ---
+BMDATA/orcl/archivelog/2016_01_20/thread_2_seq_9382.578.901619965 9382 NO
而此时主库归档已经被删除。
恢复步骤如下:
【备库】
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
----------------------
11088491280088
【主库】
RMAN> BACKUP INCREMENTAL FROM SCN 11088491280088 DATABASE FORMAT '/backup/backupset/dg_gap_%U' tag 'dg_gap';
SQL> ALTER DATABASE CREATE standby controlfile AS '/backup/backupset/dg_gap_standby.ctl'
【备库】
scp -P 10030 192.168.40.12:/backup/backupset/dg_gap* /backup/backupset/
【备库】
SQL> shutdown immediate;
SQL> startup nomount;
RMAN> restore controlfile from '/backup/backupset/dg_gap_standby.ctl';
RMAN> alter database mount;
清空备库日志组
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
注:如果采用了standby log模式,不需要清空,如果清空会出现
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE GROUP 1
*
ERROR at line 1:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 1 thread 1: '/u01/oradata/xienfei/redo01.log'
说明:如果没有采用standby log模式,有几组需要清空几组
备库重设flashback
SQL> ALTER DATABASE FLASHBACK OFF;
SQL> ALTER DATABASE FLASHBACK ON;
RMAN> catalog start with '/backup/backupset';
RMAN> recover database noredo;
查看alert可以看到Incremental restore
Incremental restore complete of datafile 1 +BMDATA/orcl/datafile/system01.dbf
checkpoint is 11088529914068
last deallocation scn is 11085244558503
SQL> alter database recover managed standby database disconnect from session;
SQL> alter database switch logfile;
注:可能会遇到recover database noredo时出现提示RMAN-06094: datafile 36 must be restored,这时候只要对数据文件单独先进行restore再进行recover即可。