背景介绍
给某职能单位检查Oracle数据库的时候,发现dataguard备库并没有启动(PS:该单位没有DBA的角色,平日里并没有巡检),备库运行在超融合平台之上,使用的windows操作系统,我试着启动该备库,得到如下提示:
alter database open
*
第 1 行出现错误:
ORA-10458: standby database requires recovery
ORA-01196: 文件 1 由于介质恢复会话失败而不一致
ORA-01110: 数据文件 1: 'D:\APP\ADMINISTRATOR\ORADATA\SPECTRA\SYSTEM01.DBF'
分析步骤
和用户做了一些简单的沟通,得知一个月前该备库从物理机迁移到超融合平台之后,就没再管它,于是乎我打开了备库的Alert日志,提示缺少sequence#为22598的归档文件及以后。那么问题基本可以定位为:备库迁移过来之后就没打开过,有大量的归档文件没有传输过来!
处理过程
此时只能祈祷主库的自动清理归档日志脚本没有工作,登录到主库一看,还真就没删除,用户和实施人员的不专业帮了大忙!
1、从主库复制sequence#=22598及之后的归档文件到备库(漫长的等待…)
ctrl+c
ctrl+v
2、备库rman注册归档恢复目录
rman target /
catalog start with D:\app\log';
YES
select count(*) from v$archived_log; #检查归档文件是否注册成功
3、备库启动到mount状态,启动恢复
startup mount
alter database recover managed standby database disconnect from session;
4、此时观察备库的Alert日志(肉眼可见的速度在追进度)
tail -100f Alert.log
Media Recovery Log D:\APP\INTERLIB\LOG\1_234891_1023798854.DBF
Media Recovery Log D:\APP\INTERLIB\LOG\1_234892_1023798854.DBF
Media Recovery Log D:\APP\INTERLIB\LOG\1_234893_1023798854.DBF
Media Recovery Log D:\APP\INTERLIB\LOG\1_234894_1023798854.DBF
Media Recovery Log D:\APP\INTERLIB\LOG\1_234895_1023798854.DBF
5、日志出现如下提示,则代表恢复完成
Media Recovery Waiting for thread 1 sequence 247384 (in transit)
6、取消恢复状态
alter database recover managed standby database cancel;
7、开启数据库,并启动实时应用功能
alter database open
alter database recover managed standby database using current logfile disconnect from session;
8、测试主备库,确保数据能够实时应用(主库建表插数据,备库查看)
后话
这次多亏了实施人员没有部署主库归档日志自动清理脚本,不然可能就要重搭备库了。那么对我们DBA来说,遇到dataguard的环境时,用户如果要求清理归档文件的时候,格外的需要注意,要先验证主备库是否同步正常。我的做法,是在主库建张测试表,看看备库是否能够同步创建。确定dg备库功能正常之后,再对归档文件进行删除
最后修改时间:2024-08-16 09:29:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。