**环境描述:**
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打开备库为主库时,如果想要再次将其恢复成备库,仅仅从主库拷贝一个备份的控制文件是不可以的,还需要重新同步数据文件。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69975956/viewspace-2714014/,如需转载,请注明出处,否则将追究法律责任。