目录
一、现象
1、近期在为一台oracle服务器搭建物理备库时,
(1)从库在告警日志中报如下信息:
RFS[22]: No standby redo logfiles available for thread 1 RFS[22]: Opened log for thread 1 sequence 140578 dbid -1311098820 branch 1050052800
(2)查看v$standby_log;
备库standby redo状态全为active
select GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS from v$standby_log;
(3)status 可以有两种状态,UNASSIGNED和ACTIVE
--UNASSIGNED的解释:
ARCHIVED = NO, 表明该standby redo log已经被归档,可再次使用。 ARCHIVED = YES, 表明该standby redo log从未被使用过,处于可用状态。 --ACTIVE 的解释:
ARCHIVED = NO, 表明该standby redo log 已完成等待被归档。 ARCHIVED = YES, 表明该 standby redo log 正在被写入所以不能被归档.。对于任一给定线程,应该只有一个 standby redo log 处于该状态。
2、解决方法
可以重建从库的standby log,重建standby log的步骤如下。
(1)取消备库的实时应用
alter database recover managed standby database cancel;
(2)删除standby log日志组
alter database drop standby logfile group 4; alter database drop standby logfile group 5; alter database drop standby logfile group 6; alter database drop standby logfile group 7;
此处出现异常:
在删除std_redolog7时,报错:
该错误是因为备库还处于recover模式,standby redo logfile还在使用中时做的全库备份。但此处状态明显有问题。sequence相差太多,可能是出现假死状态。
select GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS from v$standby_log;
针对上述问题的处理:使用第2个解决。
solution:
-
restore controlfile时指定primary
-
alter database clear unarchived logfile group 7;
-
alter database drop standby logfile group 7;
-
alter database open resetlogs;
(3)重建standby log
alter database add standby logfile group 4 'D:\APP\ADMINISTRATOR\ORADATA\MESORCL\std_redlog04.log' size 50m; alter database add standby logfile group 5 'D:\APP\ADMINISTRATOR\ORADATA\MESORCL\std_redlog05.log' size 50m; alter database add standby logfile group 6 'D:\APP\ADMINISTRATOR\ORADATA\MESORCL\std_redlog06.log' size 50m; alter database add standby logfile group 7 'D:\APP\ADMINISTRATOR\ORADATA\MESORCL\std_redlog07.log' size 50m;
(4)开启备库的实时应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
(5)查看备库的告警日志,已经没有该信息。