记录一次 Oracle DG 异常停库问题解决过程
记录一次 Oracle DG 异常停库问题解决过程
某医院有以下架构的双节点 Oracle 集群:
节点1:172.16.20.2
节点2:172.16.20.3
SCAN IP:172.16.20.1
DG:172.16.20.120
6月12日,医院信息科用户反映无法连接 DG 服务器。
登录 DG 服务器查看发现数据库处于关闭状态。然后实用 startup 命令启动数据库。发现数据库无法启动,并且报如下错误:
SQL> alter database open read only;
alter database open read only
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '+DATA/hisdb/datafile/sysaux01.dbf'
在网上找了各种解决方案,最后都无法解决。
其中有一篇文章说是 DG 服务器宕机后由于数据库的 SCN 与主库的 SCN 不一致导致无法启动。
决定采用如下方法解决该问题:
步骤1:查看 DG 备库的归档日志。
发现 DG 备库中最后的归档日志为 6 月 10 日。
步骤2:查看主库的归档日志。把 6 月 10 日以后的归档日志全部复制到备库的归档日志目录中。
步骤3:在备库中打开 rman,执行如下命令:
rmam> recover database;
在 rman 中执行 recover 命令时若果缺少相应的归档日志,可以从主库中复制过来,重新执行 recover database 命令。
执行完毕后发现 DG 备库可以启动到 open 状态。
步骤4:查看备库和 DG 相关的进程,发现没有 RFS 进程。原因是 DG 备库的监听没有启动。
实用如下命令打开备库的监听:
lsnrctl start
重新查看备库和 DG 相关的进程,出现 RFS 进程,测试 DG 同步情况,问题解决。