我的任务是为某些远程实例开发Oracle 11g备份/恢复策略。我的目标是有一个备份实例的脚本,我将能够与现有实例(可能在同一台服务器上)一起使用,或者创建一个全新的实例。
假设我有两个实例,source
和destination
。
source
实例配置,RMAN> show all
:
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name SOURCE are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
我写了一个备份脚本,如下所示:
#!/bin/bash
export ORACLE_SID=SOURCE
rman target / <<EOF
CONFIGURE CONTROLFILE AUTOBACKUP ON;
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/%F';
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE to '/backup/%F';
DELETE NOPROMPT BACKUP;
BACKUP CURRENT CONTROLFILE;
BACKUP AS BACKUPSET CHECK LOGICAL DATABASE PLUS ARCHIVELOG DELETE INPUT;
QUIT;
EOF
在/backup
中出现了一些文件,例如backup_4noqqute_151_1
,backup_4noqqute_152_1
等,以及c-454077755-20131206-07
- 我相信以前的文件是数据库/ archive日志备份,后者是控制文件。
我运行以下命令以尝试将备份还原到另一个实例DESTINATION
:
export ORACLE_SID=DESTINATION
rman target /
RMAN> SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/%F';
RMAN> RESTORE CONTROLFILE FROM '/backup/c-454077755-20131206-07';
RMAN> ALTER DATABASE MOUNT;
并收到此错误消息:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 12/06/2013 10:44:51
ORA-01103: database name 'SOURCE' in control file is not 'DESTINATION'
我该如何解决这个问题?我无法重命名DESTINATION
,因为SOURCE
位于同一台服务器上并且仍在运行。我在this post中看到了类似的问题,但它没有得到完全解释,我也不理解。我希望,由于我提供了大量信息,有人能够向我充分解释如何解决这个问题。
感谢。
答案 0 :(得分:1)
RESTORE不是满足您要求的最方便的命令(在这种情况下,您需要临时将新实例上的db_name =参数设置为与现有数据库相同,然后将所有文件还原为不同的名称,然后执行更改数据库名称和ID的过程 - 非常困难的任务。)
在11g上,打算在这种情况下使用的正确命令是DUPLICATE DATABASE。 DUPLICATE使用的来源是备份(完全与RESTORE一样)或FROM ACTIVE DATABASE。
答案 1 :(得分:0)
set init.ora
db_name=source
db_unique_name=destination
并恢复