ADG环境ORA-00338报错解决方案
事件背景
事情发生在某运营商核心生产环境ActiveDataGuard应急库主机和存储过保,根据需求新搭建一套应急环境。“一切就绪,静等版本割接”,终于等到了某年某月某日晚准备启动割接计划,谁知天有不测风云,某运营商在迁移数据同步软件的过程中反馈同步软件无法正常启动。
具体报错如下:
1 2 3 | ORA-00310:archived log contains sequence 578278; sequence 578272 required ORA-00334:archived log: 'xxxxxxxxxxxxxxxxx/onlinelog/sdy_redo_a41' |
报错显示归档日志中scn是578278,需要578272。
查询对应的standby_log的scn号578272。
查看trace日志可以看到ora-00338 ora-00312报错,检查新老应急环境scn号不一致。
解决办法
2.1 处理过程
1)退出日志实时应用模式
1 | alter database recover managed standby database cancel; |
2)关闭数据库
1 | shutdown immediate |
3)启动数据库到mount状态
1 | startup mount |
4)清除报错的日志组4
1 | alterdatabase clear unarchived logfile group 4; |
5)应用日志
1 | alterdatabase recover managed standby database using current logfiledisconnect from session; |
6)日志应用完后先退出然后再打开数据库
1 2 | alterdatabase recover managed standby database cancel; alter databaseopen; |
7)再次应用日志
1 | alterdatabase recover managed standby database using current logfiledisconnect from session; |
2.2 解决完检查下日志文件
Scn号已经更新,执行下报错sql也可以正常执行,新老应急环境scn号检查一致。
分析总结
DataGurad是实现核心数据库容灾方案的常用手段,以保护关键业务数据免受故障,灾难,人为错误和数据损坏,同时还可以提供复杂报表业务查询功能,可以大大减轻生产环境负载。但是,DataGurad在使用过程中问题也是层出不穷。希望这次分享的内容能够帮助大家在日常运维过程中快速定位和解决问题。