Oracle DG恢复备库出现ORA-19909

环境描述:

DG环境强制read write打开备库为主库,想要从主库重新拷贝控制文件给备库,进而再将其恢复为备库状态。
操作流程:

1.从主库拷贝了一份控制文件
alter database create standby controlfile as '/home/oracle/standby.ctl';
2.关闭read write打开的备库,重新恢复控制文件,
3.进行数据文件重命名
4.此时后台警告日志是可以正常接收从主库传输过来的日志的
5.当我启动MRP进程进行日志应用时,前台无异常报错,后台警告日志中MRP异常关闭情况。

摘取部分警告日志:

ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: ‘/oracle/app/oradata/prod/system01.dbf’

alter database recover managed standby database disconnect from session
Attempt to start background Managed Standby Recovery process (prod)
Thu Aug 20 18:51:38 2020
MRP0 started with pid=26, OS id=3446 
MRP0: Background Managed Standby Recovery process started (prod)
 started logmerger process
Thu Aug 20 18:51:43 2020
Managed Standby Recovery not using Real Time Apply
MRP0: Detected orphaned datafiles! 
Recovery will possibly be retried after flashback...
Errors in file /oracle/app/diag/rdbms/prod/prod/trace/prod_pr00_3448.trc:
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/oracle/app/oradata/prod/system01.dbf'
Recovery Slave PR00 previously exited with exception 19909
Completed: alter database recover managed standby database disconnect from session
Thu Aug 20 18:52:03 2020
MRP0: Background Media Recovery process shutdown (prod)

进入RMAN查看了数据库当前化身信息:

RMAN> list incarnation
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       PROD     457994418        PARENT  1          24-AUG-13
2       2       PROD     457994418        CURRENT 925702     19-JUL-20

查看数据文件头记录的resetogs信息.//可以看出明显与控制文件中SCN不一致

SQL> select file#, status, checkpoint_change#, checkpoint_time, resetlogs_change#, resetlogs_time, fuzzy from v$datafile_header;
     FILE# STATUS  CHECKPOINT_CHANGE# CHECKPOIN RESETLOGS_CHANGE# RESETLOGS FUZ
---------- ------- ------------------ --------- ----------------- --------- ---
         1 ONLINE             1155722 20-AUG-20           1155722 20-AUG-20 NO
         2 ONLINE             1155722 20-AUG-20           1155722 20-AUG-20 NO
         3 ONLINE             1155722 20-AUG-20           1155722 20-AUG-20 NO
         4 ONLINE             1155722 20-AUG-20           1155722 20-AUG-20 NO
         5 ONLINE             1155722 20-AUG-20           1155722 20-AUG-20 NO

根据文档MRP Recovery Failed With ORA-19909 [ID 554358.1]
尝试解决:

RMAN> reset database to incarnation 1
SQL> recover standby database;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/oracle/app/oradata/prod/system01.dbf'
//还是不行,官方Mos中记录的问题是由于主库与备库不处于同一个化身
而在我当前环境主备库化身线是一致的。

主库化身线:

RMAN> list incarnation;
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       PROD     457994418        PARENT  1          24-AUG-13
2       2       PROD     457994418        CURRENT 925702     19-JUL-20

备库化身线:

RMAN> list incarnation
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       PROD     457994418        PARENT  1          24-AUG-13
2       2       PROD     457994418        CURRENT 925702     19-JUL-20

看来当强制read write打开备库为主库时,如果想要再次将其恢复成备库,仅仅从主库拷贝一个备份的控制文件是不可以的,还需要重新同步数据文件。

请使用浏览器的分享功能分享到微信等