Database version: Oracle 12cR1
Operating system: Oracle Linux 7.x
ASM: yes
复制脚本:
cat duplicatetodisaster.sh
ORACLE_UNQNAME=xxx
ORACLE_SID=xxx
ORACLE_HOME=xxx
rman target sys/***@PROD auxiliary sys/***@DRC <<EOF
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby1 type disk;
allocate auxiliary channel stby2 type disk;
allocate auxiliary channel stby3 type disk;
allocate auxiliary channel stby4 type disk;
duplicate target database to 'db_name' noopen from active database;
}
exit;
EOF
我们正在尝试使用日志传送方法创建一个灾难数据库。基本逻辑;生产数据库将被复制,并且将创建一个以挂载模式继续的灾难数据库。然后,从生产数据库传输的归档日志将由灾难数据库恢复,并确保其连续性。
正如您在我分享的 rman 脚本中看到的那样;我试图通过添加 noopen 参数来阻止数据库执行 resetlogs,但在恢复和恢复成功完成后,控制文件仍然创建并重置数据库。因此,数据库中的所有化身、DBID 参数以及使其与生产数据库保持同步的所有内容都被破坏了。基于此,传输的归档日志无法恢复,无法保持连续性。我怎样才能防止这种情况?
下面,我分享一下 resetlogs 在警报日志中的确切位置:
Completed: CREATE CONTROLFILE REUSE SET DATABASE "DB_NAME" RESETLOGS ARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 4382
LOGFILE
GROUP 11 SIZE 1536 M ,
GROUP 12 SIZE 1536 M ,
GROUP 13 SIZE 1536 M
DATAFILE
'+DATA/.../.../system...'
CHARACTER SET WE8ISO8859P9
另一个问题;大约有 250 个数据文件,为什么单个数据文件会发生这种情况......
此致,
所以你用备用数据库描述了 Data Guard。如果您想要一个备用数据库,请告诉 RMAN 创建一个备用数据库: