关键字
ORA-01092、ORA-30012
适用产品
AnyBackup 6.0.x
AnyBackup 5.0.x
超易备5.0.x
问题描述
在 AnyBackup 管理控制台发起 Linux 环境下 Oracle 异机浏览恢复任务时,恢复策略中勾选恢复后使数据库联机选项,恢复任务执行失败,任务执行输出中提示如下错误信息:
数据库RMAN进程执行出现异常。(错误位置:ncOracleExecThread.cpp:455)(附加信息:ORA-01092: ORACLE instance terminated. Disconnection forced ORA-30012: undo tablespace 'DFGJIK' does not exist or of wrong type Process ID: 7827 Session ID: 189 Serial number: 7 (错误提供者:Unknown Provider,错误值:1092,错误位置:ncOciSession.cpp:327))
问题影响
AnyBackup 异机浏览恢复 Oracle 数据库后无法正常 open 数据库。
问题原因
数据库启动时会根据参数文件中的配置信息找寻对应的 undo 表空间,由于异机环境数据库的参数文件记录的 undo 表空间的名字与实际恢复出来的 undo 表空间名字不一致,导致无法正常 open 数据库。
解决方案
为了解决上述问题,需要修改异机上恢复的数据库参数文件中 undo_tablespace 的值与控制文件中记录的该值一致,步骤如下:
1.通过 SSH 登录异机 Oracle 数据库服务器,执行以下命令,切换至 Oracle 安装用户:
su - oracle
2.登录到异机恢复的 Oracle 数据库,并启动数据库到 mount 状态,命令如下:
export ORACLE_SID=orcl
sqlplus / as sysdba
startup mount
ORACLE_SID= orcl 其中 orcl 为数据库实例名,实例名区分大小写。
3.确认数据库参数文件中的 undo_tablespace 的值,命令如下:
show parameter undo;
4.确认异机数据库控制文件中的 undo_tablespace 的值,命令如下:
select name from v$tablespace;
5.修改异机数据库参数文件中 undo_tablespace 的值与控制文件中的值一致,命令如下:
alter system set undo_management=auto scope=spfile;
alter system set undo_tablespace=UNDOTBS1 scope=spfile;
注意:第二条命令中 UNDOTBS1即第 4 步查找出的 undo 表空间名称。
6.重启数据库,命令如下:
警告:此操作需要关闭数据库,请与数据库管理员确认后操作。
shutdown immediate //关闭数据库
startup //开启数据库
上图示例中显示 Database opened 表示数据库正常开启。
更多信息
关于 ORA-01092、ORA-30012 错误代码的更多信息,请参考 Oracle 官方文档:Oracle 报错代码含义查询。