【问题标题】:Restoring RMAN backup to another instance: database name in control file is not instance name将 RMAN 备份恢复到另一个实例:控制文件中的数据库名称不是实例名称
【发布时间】:2013-12-24 02:10:23
【问题描述】:

我的任务是为一些远程实例开发 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——我相信前者是数据库/归档日志备份,后者是控制文件。

我运行以下命令试图将备份恢复到另一个实例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看到了类似的问题,但是解释不全,看不懂。我希望由于我提供了很多信息,有人能够充分地向我解释如何解决这个问题。

谢谢。

【问题讨论】:

    标签: oracle oracle11g backup restore rman


    【解决方案1】:

    RESTORE 不是满足您要求的最方便的命令(在这种情况下,您需要临时将新实例上的 db_name= 参数设置为与现有数据库相同,然后将所有文件恢复为不同的名称,然后执行更改数据库名称和 ID 的过程 - 非常困难的任务)。

    在 11g 上,打算在这种情况下使用的正确命令是 DUPLICATE DATABASE。 DUPLICATE 使用的源来自备份(与 RESTORE 完全相同)或来自 ACTIVE DATABASE。

    【讨论】:

    • 在我的 DBA 职业发展和结束这些年之后回顾这一点,我承认 RESTORE 比 DUPLICATE 更可靠/可靠。
    【解决方案2】:
    set init.ora
    db_name=source
    db_unique_name=destination
    

    然后恢复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2020-05-19
      • 2012-07-11
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多