欢迎访问机房运维工作室

爱数知识库

AnyBackup-DB2 数据库恢复失败,提示错误信息:SQL1005N

频道:爱数知识库 日期: 浏览:24

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 数据库恢复。

方案二,先判断是何种原因导致该问题,然后以与之对应的方案解决问题,详细操作步骤如下。

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