Ser*_*nin 8 corruption firebird
我有一个 200 GB 的 Firebird 数据库(使用 Firebird 2.1.3 创建,目前运行的是 2.1.5),它似乎已损坏。当我尝试进行备份时,我得到:
数据库文件出现损坏 <>
错误的页面类型
页面 0 是错误的类型(预期 0 发现 1)
gds_get_segment 失败
gfix 以一个结尾
僵局
我该如何解决?
更新
虽然这个特定的数据库不是固定的,但我想解决方案是尝试 IB FirstAID。
推荐阅读:
这是一个简短的分步演练:
如果问题不是太严重,您可以尝试备份损坏的数据库并以新名称恢复:
如果您成功了,您就已经解决了问题并拥有了一个功能强大的数据库。如果没有,您可以尝试创建一个具有相同结构的空数据库并将数据泵入其中。
备份或恢复失败的原因之一是如果存在一些损坏的数据库触发器,并阻止连接到数据库。例如,数据库触发器可能使用某个索引损坏的表等。要解决此问题,请使用 isql 工具使用 -nodbtriggers 选项连接到数据库,然后禁用这些触发器。您可以稍后在修复其他问题并再次获得工作数据库时启用它们。
恢复可能失败的另一个原因是当您损坏了数据时,因此无法满足某些有效性约束(检查约束等)。在这种情况下,您可以尝试使用 -N[O_VALIDITY] 命令切换到 gbak 来恢复您的数据库。
如果您对修复数据库过程的更详细信息以及某些类型损坏的解释感兴趣,请查看以下页面:
http://www.ibphoenix.com/resources/documents/search/doc_5
如果一切都失败了,您可以尝试 IBSurgeon 工具,该工具能够解决大多数问题并提取数据。此外,IBSurgeon 的网站详细解释了数据库损坏的原因和修复方法:
http://ib-aid.com/option,com_content/task,view/id,58/Itemid,62/
检查本指南http://www.firebirdfaq.org/faq324/
| 归档时间: |
|
| 查看次数: |
18067 次 |
| 最近记录: |