此页面为机器翻译。请阅读英文原文。 English

IBSurgeon 文库

InterBase/Firebird 常见损坏错误及其恢复几率

Alexey Kovyazin, 31-03-2014

以下是 InterBase/Firebird 数据库中常见错误和问题的描述及其恢复可能性。

要获得准确的恢复价格和时间,请通过电子邮件联系我们

有关大致定价,请参阅“Firebird 和 InterBase 恢复”服务说明。无法 100% 保证所描述的错误与所述原因完全对应。

内部 gds 软件一致性检查(找不到提示页 (165))

错误描述

数据库无法使用 Firebird 或 InterBase 引擎打开,并出现以下消息:内部 gds 软件一致性检查(找不到提示页 (165))

异常关闭或物理数据库文件损坏。事务清单页(TIP)已丢失。损坏区域可能从几页到整个数据库不等,因此需要进一步调查。

原因(为什么会发生?)最可能的原因是服务器异常关闭(使用重置按钮)、错误的备份方法或备份工具。在 Windows XP 上,此类损坏可能由“gdb”文件的“系统还原”功能引起。

恢复过程

首先,应使用 FirstAID Diagnostician 扫描数据库。如果 FirstAID 未警告严重损坏,则可以使用完整版 FirstAID 修复损坏。

如果损坏严重,则需要定制恢复。

修复损坏的可能性

99%

数据库文件显示损坏。页面类型错误。页面 NNN 类型错误(预期 X,找到 Y)

错误描述

标准输出或 firebird.loginterbase.log 中出现错误消息:

数据库文件显示损坏。页面类型错误。页面 NNN 类型错误(预期 X,找到 Y)

由于物理损坏或其他原因,数据库文件页面的顺序已更改,或者指针页或索引根页等上出现了错误值。

原因

最可能的原因是服务器异常关闭(使用重置按钮)、错误的备份过程或错误的备份工具/方法。

恢复过程

首先,应使用 FirstAID Diagnostician 扫描数据库。如果 FirstAID 未警告严重损坏,则可以使用完整版 FirstAID 修复损坏。

否则,需要定制恢复过程。

修复损坏的可能性

95%。

文件“*.gdb”的未知数据库 I/O 错误。尝试从文件读取时出错

错误描述

数据库无法打开,并出现以下错误消息:文件“*.gdb”的未知数据库 I/O 错误。尝试从文件读取时出错。

原因

由于服务器异常关闭,最新的数据库页面未写入磁盘。

恢复过程

定制恢复过程。使用 gfix 和备份/恢复检查数据库。

恢复可能性

95%

解压缩超出缓冲区

错误描述

出现错误消息:内部 gds 软件一致性检查(解压缩超出缓冲区 (179))

原因

这是严重的数据库损坏:系统表可能已损坏。有时此错误在数据库转移到新服务器/计算机后出现。需要调查。

恢复过程

数据库结构分析,生成新页面,需要多次迭代。

恢复可能性

95%

记录长度错误

错误描述

出现错误消息:内部 gds 软件一致性检查。记录长度错误

原因

“记录长度错误”通常由内存条故障引起。我们强烈建议检查服务器上的内存( RAM)。

恢复过程

使用 IBSurgeon 的低级工具定位并删除错误记录。需要多次迭代。

恢复可能性

97%

数据库文件显示损坏。校验和错误

错误描述

数据库文件显示损坏。校验和错误。数据库页面 XX 上出现校验和错误。

原因

内存条故障。我们强烈建议检查服务器上的内存( RAM)。

恢复过程

定制恢复过程。需要多次迭代。

恢复可能性

99%

找不到记录回滚版本

错误描述

数据库似乎正常工作,但 gbak 无法完成备份。

错误文本:

内部 gds 软件一致性检查(找不到记录回滚版本 (291))

gds_$receive 失败。由于错误在完成前退出。内部 gds 软件一致性检查(错误检查后无法继续)。

原因

最可能的原因是事务管理错误。需要调查事务性能。

恢复过程

数据库需要详细分析,通常的解决方案是找到并删除有问题的数据库对象,然后重新创建它们。有时需要将数据传输到新数据库。

恢复可能性

99%

下一事务早于最旧活动事务

错误显示

内部 gds 软件一致性检查(下一事务早于最旧活动事务 (266))

原因

此罕见错误发生在 InterBase 4.x-5.x 中,这是一个 bug。

恢复过程

定制恢复过程

恢复可能性

99%

头文件损坏

错误描述

数据库无法打开,Firebird/InterBase 不将其视为有效数据库。

原因

物理损坏,硬盘故障。

恢复过程

定制恢复过程

恢复可能性

80%

数据库文件大小超过实现限制

错误描述

这发生在 InterBase 4.x-5.x 服务器和早期 Firebird(0.9.x)测试版上。数据库无法打开,数据库文件大小为 4Gb。

原因

InterBase 4.x-5.x-6.0.x 和早期 Firebird 0.9.x 的实现限制。

恢复过程

定制恢复过程。

恢复可能性

通常,我们可以保存所有数据(即 100%),但有时可能低于 70%。

字符串转换错误

错误描述

错误文本:字符串“XXX”的转换错误。

原因

无法进行初步诊断,需要现场调查。

恢复过程

定制恢复过程。

恢复可能性

99%

INET/inet_error: 读取错误 errno = 10054 或 10038 或 10093

错误显示

firebird.log 或 interbase.log 中出现多条错误 10054、10038、10093 等。

原因

这些错误由网络问题引起 - 请检查您的集线器、网络适配器等。这本身不是 Firebird/InterBase 错误,但可能影响 Firebird/InterBase。

恢复过程

我们提供 FBScanner 工具来解决“10054 错误”问题(以及其他问题)。详情请参见此处

恢复可能性

不适用。

未找到伙伴索引描述 (175))

错误描述

错误消息文本:内部 gds 软件一致性检查(未找到伙伴索引描述 (175))

主键或外键的索引丢失。

原因

可能由物理损坏或内部服务器 bug 引起。

恢复过程

定制恢复过程。

恢复可能性

100%

其他错误

错误描述

以下是罕见的 Firebird/InterBase 错误列表,可能由不同原因引起。请随时向我们发送您的问题描述 - 我们可以帮助您。

错误的 UDF 可能导致 interbase.log 中出现以下错误:

SCH_validate – 未进入

SCH_validate – 错误的线程

索引损坏可能导致 interbase.log 中出现以下消息:

页面 34672 是孤儿页

在单个事务中密集插入/更新/删除期间可能出现此错误:

内部 gds 软件一致性检查(保存点过多 (287))

对于以下错误,如果不调查数据库则很难识别原因:

内部 gds 软件一致性检查(保存点回滚期间出错 (290))

内部 gds 软件一致性检查(优化块大小超出 (286))

内部 gds 软件一致性检查(无效的 SEND 请求(167))

可能原因

原因各不相同。我们需要调查损坏的数据库。

恢复过程

自定义恢复过程。

恢复几率

各不相同