AnyBackup-Linux 环境下 Oracle 数据库浏览恢复失败,执行输出提示 ORA-01078 的错误。
关键字
ORA-01078、浏览恢复
适用产品
- AnyBackup 6.0.x
- AnyBackup 5.0.x
- 超易备5.0.x
问题描述
在 AnyBackup 管理控制台发起 Linux 环境下 Oracle 数据库异机浏览恢复任务时,恢复策略中勾选恢复控制文件以及恢复后使数据库联机选项,恢复任务执行失败,任务执行输出中提示如下错误信息:
数据库RMAN进程执行出现异常。(错误位置:ncOracleExecThread.cpp:455)(附加信息:RMAN输出线程出现错误,错误原因是: startup failed: ORA-01078: failure in processing system parameters 。(错误提供者:oracleBackup,错误值:e0500027,错误位置:ncOracleExecThread.cpp:386))
问题影响
AnyBackup 无法完成 Oracle 数据库异机浏览恢复。
问题原因
AnyBackup 执行数据库恢复时,会关闭需要恢复的数据库,然后重新启动到 nomount 状态,数据库启动时会优先使用 $ORACLE_HOME/dbs 下默认的参数文件,若该库路径下的 spfile 文件不存在或者命名不满足参数文件的规范,则会导致恢复时执行 startup failed 。
解决方案
为了解决上述问题,需要在 $ORACLE_HOME/dbs/ 目录下创建 spfile 文件,重新启动到 nomount 或者 mount 状态执行恢复操作,步骤如下:
1.在 Oracle 安装用户下,执行以下命令,登录到异机恢复的 Oracle 数据库,并关闭数据库。
export ORACLE_SID=sid
sqlplus / as sysdba
shutdown immediate

注意:sid 为 Oracle 数据库实例名,实例名区分大小写。
2.利用当前使用的 pfile 参数文件在默认位置创建 spfile 文件,并启动数据库到 nomount 状态,命令如下:
create spfile from pfile='/aishu/pfile_oracle:orcl.ora';
startup nomount;
注意:/aishu/pfile_oracle:orcl.ora 为当前数据库实例启动所用的 pfile 参数文件,具体以实际环境为主。
3.在 AnyBackup 管理控制台重新发起浏览恢复即可。
更多信息
Linux 下 Oracle 数据库 startup 依次寻找参数文件:pfileSID.ora > spfile.ora > initSID.ora。如果 $ORACLE_HOME/dbs/ 下面以上三个文件都没有,则 Oracle 启动不起来。