环境描述:
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打开备库为主库时,如果想要再次将其恢复成备库,仅仅从主库拷贝一个备份的控制文件是不可以的,还需要重新同步数据文件。