背景描述:
主库上由于归档日志未及时清理,导致根目录满了,虚拟化环境,系统ping通,但连接不上,只好重启。
由于主库上堆积了大量归档日志未应用到备库,所以备库上一直在追加日志,然后在我低头沉思卖萌的瞬间,再抬头发现备库alert日志报错,缺失归档日志。
火急火燎的查看主库归档日志情况,特么的,原先100多g的归档全没了,开发那边真是为民请命,随手删了归档腾了空间。。。
问题处理思路:
一、重建dataguard(嫌累)
二、根据当前备库的scn号,对主库进行增量备份,然后将备份应用到备库上(是不是很完美)
毫无疑问的选择思路2,大致步骤如下:
1、查询备库上scn号:
select current_scn from v$database;
14372327
2、取消掉备库上的日志应用
alter database recover managed standby database cancel;
3、主库上进行备份
rman target /
backup incremental from scn 14372327 database format '/home/oracle/incre_bak.bk';
4、将备份文件传到备库的/home/oracle目录下面
5、在备库上,先还原控制文件
rman target /
restore standby controlfile to '/home/oracle/control01.ctl'
6、用还原出来的控制文件,替换现有库上的控制文件
7、再次进入rman,进行恢复数据(此时要先将备库启动mount状态,之前我在read only状态,导致恢复失败)
catalog start with '/home/oracle/’;
recover database noredo;
8、恢复完以后将备库的日志应用打开,让数据库自己追加日志即可。
alter database recover managed standby database using current logfile disconnect from session;
----------------------------------------------------------------------------------------------------------------------------
ps:大致流程便是如此,具体细节需要自己加以琢磨,过程中遇到点情况是难免的,根据错误提示,一步步解决问题方能加深理解。