alert 日志报错信息:
Media Recovery Waiting for thread 1 sequence 7057
Fetching gap sequence in thread 1, gap sequence 7057-7080
FAL[client]: Error fetching gap sequence, no FAL server specified
Mon Mar 24 11:39:40 CST 2017
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 7057-7080
DBID 768411208 branch 784810891
FAL[client]: All defined FAL servers have been attempted.
出现原因:
DataGuard主备之间可能由于网络等原因,造成备库和主库之间的归档日志不一致,这样就产生了gap。
处理:
1)主库暂定备库的日志传输
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = 'DEFER';
2)备库取消日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
3)在备库查询最小的SCN号
SQL> SELECT MIN(FHSCN) FROM X$KCVFH;
MIN(FHSCN)
----------------
20606344
4)例如备库查询的最小SCN号,在主库进行SCN的增量备份
rman target /
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
sql 'alter system archive log current';
backup as compressed backupset INCREMENTAL FROM SCN 20606344 DATABASE FORMAT '/backup/backup/incr_%d_%T_%U';
crosscheck archivelog all;
BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/cntrl_%s_%p_%s.ctl';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
5)复制增量备份文件到备库
6)备库注册备份文件
RMAN> CATALOG START WITH '/tmp/Standby_Inc';
7)利用RMAN recover恢复备库,此时会默认使用之前注册的备份文件
RMAN> RECOVER DATABASE NOREDO;
8)更新standby 控制文件
RMAN> SHUTDOWN;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/Standby_CTRL.bck';
RMAN> SHUTDOWN;
RMAN> STARTUP MOUNT;
9)查询恢复后的数据文件
SQL>SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 20606344;
10)重启日志传输
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = 'enable' scope=both;
11)重启日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;