AnyBackup-Linux 环境下 Oracle 数据库表级恢复失败,执行输出提示错误信息:Oracle表级恢复中选择的表:<表名> 存在于原生产中,为了数据操作安全,请在备份生产库中重命名此表。
关键字
表级恢复、重命名
适用产品
- AnyBackup 6.0.x
- AnyBackup 5.0.x
- 超易备5.0.x
问题描述
在 AnyBackup 管理控制台发起 Linux 环境下 Oracle 单机数据库表级恢复任务,任务执行失败,执行输出中提示如下错误信息:
Oracle恢复异常。(错误提供者:oracleBackup,错误值:e050001b,错误位置:ncOracleRestoreSchedule.cpp:52)(附加信息:Oracle表级恢复中选择的表:SYS.SCHOOL1存在于原生产库中,为了数据操作安全,请在备份生产库中重命名此表。(错误提供者:oracleBackup,错误值:e0500017,错误位置:ncOracleDatabaseManager.cpp:812)

问题影响
AnyBackup 无法完成 Oracle 数据库表级恢复。
问题原因
Oracle表级恢复中选择的表:<表名> 仍存在原生产库中,恢复时为了数据安全,无法直接覆盖该表,从而导致恢复失败。
解决方案
为了解决该问题,需要将原库中该表重命名后进行恢复,步骤如下:
警告:重命名表属于高危操作,请与数据库管理员确认后执行;Oracle 表级恢复只能恢复到原机,请与数据库管理员确认后执行任务恢复。
1. 命令行登录异机 Oracle 数据库服务器,执行以下命令,登录到恢复的 Oracle 数据库并重命名需要恢复的表。
su - oracle
export ORACLE_SID=sid
sqlplus / as sysdba
alter table school1 rename to school1bak;

注意: sid 为数据库实例名。
2.在 AnyBackup 管理控制台重新发起恢复任务。
更多信息
Oracle 表级恢复要确保数据库中不存在同名表,否则会恢复失败,建议恢复前在生产库中 rename 或者 drop 相关表。