AnyBackup-DB2 数据库恢复失败,提示错误信息:SQL1005N
关键字
DB2、SQL1005N
适用产品
- AnyBackup Express 7.0.x
- AnyBackup CDM 7.0.x
问题描述
在 AnyBackup 管理控制台上,执行 DB2 数据库恢复失败,提示如下错误信息:
错误 错误,读取的消息 ID 不一致。 异常提供者:db2schedule,异常号:407633978。
错误 错误,DB2 恢复数据库 GCP 时遇到错误:-1005 : SQL1005N The database alias "GCP" already exists in either the local database
directory or system database directory. SQLSTATE=00000
[/var/JFR_apollo_branch/workspace/apollo_dev/apollo/src/cpp/app/db2/db2coreV9/src/ncDB2Core.cpp:865]。 异常提供者:db2coreV9,异常号:-2008。
问题影响
DB2 数据库恢复失败。
问题原因
对于上述问题,有如下两种原因导致:
- 原因一,需要恢复的 DB2 数据库的物理文件在恢复机上已被删除,而逻辑信息没有删除。
- 原因二,需要恢复的 DB2 数据库的逻辑信息已被删除,但是物理文件依然存在。
解决方案
解决此问题有如下两种方案:
方案一,重命名 DB2 数据库恢复,按如下步骤执行。若不能重命名,请参考方案二。
1. 登录 AnyBackup 管理控制台,重新发起恢复,依次选择定时数据保护 > 数据恢复 > 备份恢复 > 新建,选择备份介质和备份数据,点击下一步。
2. 选择时间点,选择要恢复的数据,根据实际情况选择客户端,用户名和保存路径,选择目标数据库名称,点击重命名数据库,展开数据源,点击
,编辑新数据库名,点击确定,点击下一步,执行 DB2 数据库恢复。
.png)
方案二,先判断是何种原因导致该问题,然后以与之对应的方案解决问题,详细操作步骤如下。
1. 通过 SSH 工具登录 DB2 数据库服务器,查看 DB2 数据库启动用户,执行命令如下:
ps -ef|grep db2sysc

注意:上图示例中,DB2 数据库的启动用户是 db2gcp,具体以实际情况为准。
2. 切换到 DB2 数据库的启动用户,删除要恢复的 DB2 数据库,根据删除数据库的错误提示确定是何种原因导致恢复失败,执行命令如下:
su - db2gcp
db2 drop database db_name
注意:上图示例中,执行命令 db2 drop database db_name,提示错误信息 SQL1031N The database directory cannot be found on the indicated file system,则为原因一导致 DB2 数据库恢复失败。
注意:上图示例中,执行命令 db2 drop database db_name,提示错误信息 SQL1031N The database alias name or database name "db_name " could not be found,则为原因二导致 DB2 数据库恢复失败。在这一步骤里,所有图示中,GCP 是恢复的 DB2 数据库名,具体以实际情况为例。
3.若是原因一导致 DB2 数据库恢复失败,需要将 DB2 数据库系统表中的 catalog 信息删除,执行命令如下:
db2 uncatalog database db_name
4.若是原因二导致 DB2 数据库恢复失败,需要将 DB2 数据库的物理文件的配置信息追加到系统表中,再执行删除数据库的操作,执行命令如下:
db2 catalog database db_name as db_name
db2 drop database db_name
5.登录 AnyBackup 管理控制台,重新发起 DB2 数据库恢复。
更多信息
关于错误代码 SQL1005N 的更多信息,请参考 DB2 官方网站:SQL1005N。