AnyBackup-Oracle CDM原机异实例名数据恢复失败,执行输出提示:ORA-01102,ORA-01507
关键字
ORA-01102、ORA-01507
适用产品
- AnyBackup CDM 7.0.11~7.0.x
- AnyBackup Enterprise 7.0.11~7.0.x
问题描述
在使用 AnyBackup 进行 Oracle CDM 原机异实例名数据恢复时,恢复任务执行失败,执行输出提示如下错误信息:
ORA-01102:cannot mount database in EXCLUSIVE mode
{"excption":"4257211882","excptionMsg":"任务执行异常,原因:接口调用失败(ORA-01507:database not mount\n).","excptionProvider":"oraclecore"}

问题影响
无法使用 AnyBackup 完成 Oracle CDM 原机数据恢复。
问题原因
同一个服务器上无法启动两个 db_unique_name 相同的数据库。
Oracle 在不指定 db_unique_name 参数值的情况下,db_unique_name 的值与 db_name 相同,而数据恢复时,db_name 需与原数据库相同,故会出现同一个服务器上存在两个 db_unique_name 相同的数据库,导致后启动的同名数据库无法启动到 mount 状态。
解决方案
为了解决该问题,需要设置恢复目的实例的 db_unique_name 与恢复时指定的异实例名一致。具体步骤如下:
1. 使用 SSH 工具登录 Oracle 数据库服务器;
2. 编辑恢复目的实例的 pfile,设置 db_unique_name 参数值,命令如下:
su - oracle
export ORACLE_SID=aishu
sqlplus / as sysdba
create pfile from spfile;
cd $ORACLE_HOME/dbs
vi initaishu.ora
添加如下内容至 initaishu.ora 文件的 *.db_name参数值下一行并保存退出,如下:
*.db_unique_name=aishu

注:1. 其中,aishu 为数据恢复指定的异实例名称,请根据实际情况修改;
2. initaishu.ora 为数据恢复异实例名的 pfile ,请根据实际情况修改。
3. 关闭恢复目的实例,使用修改后的 pfile 创建 spfile,并启动数据库至 nomount 状态。命令如下:
su - oracle
export ORACLE_SID=aishu
sqlplus / as sysdba
shutdown immediate
create spfile from pfile;
startup nomount
注:其中,aishu 为数据恢复指定的异实例名称,与步骤2中相同,请根据实际情况修改。
4. 重新发起数据库原机异实例名数据恢复即可,恢复时指定的实例名为步骤3中启动的实例名。