案例介绍
环境介绍
- 操作系统: Red Hat Enterprise Linux release 8.10 (Ootpa)
- 数据库版本: Oracle 19.23.0.0.0
上周五,系统管理员需要给Linux升级补丁,UAT环境下的一套DG,数据库没有正常关闭的情况下,操作系统升级补丁后强制reboot了,周一早上处理的过程中遇到下面错误:
备库的告警日志有下面错误信息(GAP sequence提示信息):
主库查询
检查确认主库上的归档日志gspprod_1173452819_1_94.arc已经被删除了。
检查备库最后应用的归档日志信息:
因为UAT环境没有备份归档日志,而主库上都设置了一个作业清除两天前的归档日志(资源不足,需要定期清理归档日志),正常情况下,这个作业并不会带来什么问题,而由于上周五升级系统补丁,数据库停了2天,但是这个作业并没有停止(crontab作业),周一处理的时候,这个作业已经将两天前的归档日志给清理了。导致备用数据库无法获取序列号(SEQUENCE#)为94的归档日志。 此时由于出现归档日志的GAP导致备用数据库无法同步数据,这种情况下, 我们打算用Oracle 18.1提供的新特性来恢复物理备库,如下所示
主要是这种新特性来恢复备用数据库非常方便,一条命令即可搞定,相比之前的增量备份/还原要简单很多。
操作步骤:
- 取消redo应用(备用数据库)
- 将备用数据库启动到MOUNT状态
- 执行下面命令
如果不执行上面命令,在RMAN做recover standby database时会遇到RMAN-05150错误,如下案例所示:
4: 备库执行修复命令,开始在线刷新备库
注意,这里RMAN连接数据库的方式请选择账号密码,不要使用系统认证方式,否则可能会遇到错误案例1.
正常情况下,你会看到类似这样的输出信息
5:启动数据库恢复同步
在sqlplus中执行下面命令
下面还介绍一下,在操作过程中容易踩到的坑或错误:
错误案例1
使用RMAN恢复备库时,遇到ORA-17629: Cannot connect to the remote database server错误,如下所示
遇到这个错误,是因为RMAN连接数据库使用操作系统认证,这种方式连接远程数据库(remote database server)就会有问题,应该改成账号密码认证方式连接数据库。 这样就不会遇到这个错误了。
正确方式
错误方式
错误案例2
还原恢复过程遇到下面一系列ORA错误。具体如下所示:
检查备库
在dgmgr中执行命令
重新验证(备用数据库)MRP进程是否已经结束。
如上所示,MRP进程已经不存在了,就可以重新进行还原恢复操作。
参考资料:
- ORA-19573 when trying to restore to standby with incremental backup From Primary or During any RMAN restore operation (Doc ID 1646232.1)
- ORA-17629 with RMAN 'From Service' Command (Doc ID 2960469.1)