InterBase数据库文件损坏的修复方法

InterBase数据库是一种中级数据库,它短小精悍免维护,可以满足百万记录级别的数据库应用,又有开放源码版本,个人认为是一种比较适合中小型数据库应用环境的数据库管理系统(DBMS)。Delphi内建了对InterBase数据库的支持,因此用Delphi编写以InterBase为后台数据库的软件很是方便。

在实际应用中,偶尔会碰到InterBase数据文件损坏的问题。损坏的原因多种多样,可能是由于读写文件的时候突然断电导致文件损坏,或者可能是不当的操作引发的;如果没有合适的工具,很多情况下损坏的数据库文件就只有废弃不用,造成数据的丢失,其实,InterBase本身提供了一组修复命令行程序,如果能合理的利用它们,的确可以修复大部分损坏的InterBase数据库文件。

假设现在有一个损坏的InterBase数据库文件IBBadDB.gdb,修复方法如下:

1、确定InterBase正常运行,而受损的数据库文件IBBadDB.gdb没有被任何程序打开;

2、将安装以后的InterBase文件夹下的bin子文件夹内的两个程序gfix.exe,gbak.exe拷贝到受损的数据库文件IBBadDB.gdb所在的文件夹内;

3、打开DOS命令行界面,用DOS命令先进入IBBadDB.gdb所在的目录(文件夹)下;

4、定义两个全局变量,分别赋值为IBBadDB.gdb的用户名和密码(默认情况下,是SYSDBA和masterkey),接下来的修复程序能使用它们顺利打开受损的数据库文件:

SETISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey

5、检查数据库文件是否损坏:

 gfix-v -full IBBadDB.gdb

6、如果检查结果中报告有问题,运行下面修复文件的命令:

 gfix-mend -full -ignore IBBadDB.gdb

7、然后检查此时的数据库文件是否已经修复:

 gfix-v -full IBBadDB.gdb

8、如果检查结果中仍旧有问题,应该运行一次完整的数据库备份和恢复命令(此例中假设备份以后的数据库文件名称是IBBadDB_bak.gbk),首先是备份:

gbak-backup -v -ignore IBBadDB.gdb IBBadDB_bak.gbk

9、如果上述备份命令的运行遇到问题,是因为冗余数据收集(garbage collection)而产生的,那就继续执行下面的(数据库冗余清理)命令:

gbak-backup -v -ignore -garbage IBBadDB.gdb IBBadDB_bak.gbk

10、如果上述命令的运行遇到问题,是因为边际事务处理(limbotransaction,可能翻译的不准确)的缘故,那就在上述命令行参数中加上“-limbo”开关:

gbak-backup -v -ignore -garbage -limbo IBBadDB.gdb IBBadDB_bak.gbk

11、最后根据这个修复的备份文件,产生一个新的数据文件(此例中假设新数据库文件名称是IBBadDB_new.gdb),

 gbak-create -v IBBadDB_bak.gbk IBBadDB_new.gdb

注:

1、此方法经过实际应用中多次实践的考验,证明相当有效,对InterBase数据库文件的修复成功率至少在75%以上;

2、以上步骤基本是是翻译至原始资料,但根据笔者实际应用中的经验,上述每一步的执行均对其他步骤无干扰,所以无论上一步执行结果如何,下一步都应该运行一次;

3、这个修复方法依赖于InterBase系统提供的gfix.exe,gbak.exe两个程序,如果有可能,将上述所有步骤做成批处理文件,和这两个程序拷贝到一起,这样就可以一次性运行之,也便于反复使用

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值