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

IBSurgeon 文库

内部gds软件一致性检查 - 如何恢复Firebird/InterBase数据库

Oleg Matveev, 20-Nov-2014

当 Firebird(或 InterBase)实例无法在不保证数据库一致性不受影响的情况下执行某些操作时,它会引发错误(bugcheck)并中断当前操作。

此类 Firebird 错误文本以强制前缀 “internal gds software consistency check (can’t continue after bugcheck)” 开头(对于较新的 Firebird 版本,则为 “internal Firebird software consistency check”),随后是实际错误文本(如 “decompression overran buffer (179)")。

通常,“internal software consistency check” 错误意味着 Firebird 数据库已损坏(但并非绝对如此)–即内部数据库镜像的一致性已被破坏,需要修复才能继续正常工作。

如果您在 firebird.log 或应用程序的错误消息中看到此类错误,请运行以下命令以确保您的数据库正常:

Code
gfix.exe -v -full -user SYSDBA -pass masterkey path_to_your_database

如果 gfix 验证返回错误,则数据库已损坏,需要进行恢复。

首先尝试使用 gfix 进行恢复:

Code
gfix.exe -mend -ig -user SYSDBA -pass masterkey path_to_your_database

然后备份数据库:

Code
gbak.exe -b -g -user SYSDBA -pass masterkey path_to_your_database path_to_backup

并恢复:

Code
gbak.exe -c -v -user SYSDBA -pass masterkey path_to_backup path_to_new_database

如果在 gfix/gbak 过程中出现问题,请使用 IBSurgeon FirstAID 工具 恢复损坏的数据库–大多数 “internal Firebird consistency check” 错误都可以通过它修复;FirstAID 专为处理严重数据库损坏而设计。

此外,如果您有损坏的 Firebird 或 InterBase 数据库,请联系我们的支持团队:[email protected] 并提供完整的错误文本(或截图)。