欢迎访问机房运维工作室

爱数知识库

AnyBackup-Sybase 数据库恢复失败,提示:执行 SQL 语句 online database XXX 发生错误。数据库中表的索引遭破坏,无法进行恢

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

AnyBackup-Sybase 数据库恢复失败,提示:执行 SQL 语句 online database XXX 发生错误。数据库中表的索引遭破坏,无法进行恢复操作。

关键字

online database、索引、破坏


适用产品

  • AnyBackup 6.0.x
  • 超易备 5.0.x


问题描述

在使用 AnyBackup 进行 Sybase 数据库恢复时,恢复任务执行失败,执行输出中提示如下关键错误信息:

执行 SQL 语句 online database XXX 发生错误。

数据库中表的索引造破坏,无法进行恢复操作,请参考最佳实践文档解决问题后再次进行恢复。


问题影响

AnyBackup 无法完成 Sybase 数据库的恢复。


问题原因

Sybase 数据库索引损坏,导致数据库无法正常 online。


解决方案

为了解决该问题,可以通过手动修复损坏的索引,再手动 online database 即可,无需再次恢复。具体步骤如下:

1. 使用管理员账户登录 Sybase 数据库服务器;

2. 执行如下命令登录 Sybase 数据库:

isql -Usa -P

注:-P 后输入数据库 sa 用户的密码,请与客户数据库管理员获取。

3. 根据错误提示信息,检查抛错的数据库中损坏索引的情况,执行如下命令:

use sybsystemproc

go

sp_indsuspect spt_sybdrv

go

注:其中,sybsystemproc 为抛错提示的索引所在的数据库,spt_sybdrv 为索引对应的表名,请根据实际情况修改。

其执行结果中输出 Suspect indexex on table XXX 即为存在损坏的索引信息,如下图所示:

4. 手动修复索引,执行如下命令:

DBCC REINDEX (spt_sybdrv)

go

注:其中,spt_sybdrv 为索引对应的表名,请根据实际情况修改。

执行完成之后,再次执行 sp_indsuspect 命令检查损坏索引信息,如执行输出中输出 There are no suspect indexex on table XXX 即为索引修复成功。如下图所示:

5. 手动 online 数据库,执行如下命令:

online database sybsystemprocs

go

注:其中,sybsystemprocs 为恢复的数据库名。

更多信息

Sybase 数据库恢复索引损坏的情况可能有很多种,只有在执行 online database 时抛索引损坏错误,才可参考本文内容修复并启动数据库。如果数据尚未恢复完成,则修复索引后仍需进行后续未完成的数据恢复工作方可启动数据库。