admin 管理员组

文章数量: 887021


2023年12月22日发(作者:第1ppt模板网免费下载官网)

InterBase数据库文件损坏的修复方法(2006-03-04 18:36:54)

[按:

分类:技术世界

此方法来源于CSDN,资料本身来自FIRBIRD站,本人将其试着翻译成中文。]

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

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

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

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

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

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

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

SET ISC_USER=SYSDBA

SET ISC_PASSWORD=masterkey

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

gfix -v -full

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

gfix -mend -full -ignore

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

gfix -v -full

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

gbak -backup -v -ignore IBBadDB_

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

gbak -backup -v -ignore -garbage IBBadDB_

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

gbak -backup -v -ignore -garbage -limbo IBBadDB_

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

gbak -create -v IBBadDB_ IBBadDB_

注:

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

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

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

4、笔者恐翻译的不够准确,故附上原始资料如下:

1. Define the following two variables, it makes life easier, in that you do not have

to type in the user name and password every time you issue a command.

SET ISC_USER=SYSDBA

SET ISC_PASSWORD=masterkey

2. Always make sure you work on a copy of the database, not the production database.

Use the operating system to make a copy of the database. You must have exclusive

access to the database to do this.

copy

3. Now check for database corruption. You must have exclusive access to do this,

but since you're working on a copy of the original database, this is not a problem.

gfix -v -full

4. If the previous command has indicated that there are problems with the database,

we now need to mend it.

gfix -mend -full -ignore

5. Now check to see if the corruption has been repaired.

gfix -v -full

6. If you still see errors, you should now do a full backup and restore. In its

simplest format the backup command line should be:

gbak -backup -v -ignore

7. However if gbak falls over because it is having trouble with garbage collection,

then

use the following command:

gbak -backup -v -ignore -garbage

8. If there is corruption in record versions of a limbo transaction, then you may

need to include the -limbo switch:

gbak -backup -v -ignore -garbage -limbo

9. Now create a new database from the backup:

gbak -create -v atlas_


本文标签: 数据库 文件 修复