执行:
alter database open read only;
报错如下:
ORA-10458: standby database requires recovery
ORA-01196: 文件 1 由于介质恢复会话失败而不一致
然后启动备库到mount状态执行:
alter database recover managed standby database using current logfile disconnect from session;
开启应用日志,没有报错
执行取消实时应用日志:
alter database recover managed standby database cancel;
没有报错
执行:
alter database open read only
一样报开始的错误
查看alter 日志信息如下:
Wed Oct 13 22:35:19 2021
Errors in file /u01/app/oracle/diag/rdbms/standby/standby/trace/standby_pr00_21840.trc:
ORA-16043: Redo apply has been canceled.
ORA-16016: archived log for thread 2 sequence# 51 unavailable
Wed Oct 13 22:35:19 2021
Standby Crash Recovery aborted due to error 10877.
发现rac2的51号日志丢失
在备库执行,查看日志应用情况:
select thread#,SEQUENCE#,applied,name from v$archived_log where thread#='2';
结果如下:

缺少节点2的51号日志
在主库执行,查看日志应用情况:
select thread#,SEQUENCE#,applied,name from v$archived_log where thread#='2';
结果如下:

操作:
将主库此日志拷贝到备库手动注册,执行:
alter database register physical logfile '/u01/app/oracle/product/12.1.0/standby/arch/db_recovery_file_dest2_51_1084181347.dbf';
在备库执行,查看注册情况:
select thread#,SEQUENCE#,applied,name from v$archived_log where thread#='2';

可以看到,51号日志已经在备库注册成功;
最后在备库执行,开始实时日志应用:
alter database recover managed standby database using current logfile disconnect from session;
在alert跟踪日志中看到:

说明备库已经应用了日志;
执行取消实时应用日志:
alter database recover managed standby database cancel;
打开备库到可读:
alter database open only;
开启实时应用日志:
alter database recover managed standby database using current logfile disconnect from session;
到这里此次问题解决,备库修复完成,并以只读方式打开。
这篇博客记录了在Oracle数据库中,当备库无法以只读模式打开时的故障排查与解决过程。主要涉及备库报错ORA-10458和ORA-01196,通过检查日志应用情况,发现51号日志丢失。通过从主库复制并注册缺失日志,然后进行日志应用和取消应用,最终成功开启备库的只读模式。
1126

被折叠的 条评论
为什么被折叠?



