如何修复interbase 数据库

lianweb1 2003-10-17 12:09:23
各位大虾
有一 interbase 数据库文件cd17.gdb受损,无法打开,报
unknow database I/O error for file error while
trying to read from file
不知如何修复,敬请赐教,不胜感激!!
...全文
300 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
flymoon 2004-03-19
  • 打赏
  • 举报
回复
我在ibphoenix上找到了chinahorse2003说的那篇文章,很长,很详细,chinahorse2003没有转载完,我把地址列在下面,大家可以看看,当然,我还是没有能利用这篇文章修好我弄坏的数据库,呵呵。不过,我还没有完全吃透这篇文章。
http://www.ibphoenix.com/a516.htm

另外,我还找到一篇文章是讲数据库损坏原因的,有的可能你没有注意,至少有的我就没有想到,大家也可以看看,呵呵。
http://community.borland.com/article/0,1410,29515,00.html

CuteBit 2004-01-09
  • 打赏
  • 举报
回复
hi,SuperTitan001
"丢掉被破坏的页面"?!!!事情没有你想的那么简单.从技术角度看,这是个复杂宽阔但不被纳入数据库主方向的问题(当然,如果你有兴趣和能力搞这个问题,可以加入 fb 内核开发组,反正开源项目经常是缺人的 :) ).

如果你发现你家门被撬,你仅仅认为是损失一个门而已吗?如果 checksum 出了问题很可能是内存(程序bug)腐烂或者硬件错误.那么它影响的很可能更多的数据和用户.

其实 gfix 可以修复不少问题的,包括这样的问题.chinahorse2003 说得很详细了.我遇到过一些损坏的现象,一般 gfix 都可以搞定(有时 fix 后会丢失数据,如果这些数据破坏了外键主键关系或者商业规则就很麻烦了:( ).

我是从 ib4 开始用,感觉越是后续版本越稳定.

没有 100% 安全的数据库(你见过 msSQL/oracle/informix 损坏吗?那也是没得救的).教用户在管理制度上制订备份计划是数据库容灾重要的手段.
SuperTitan001 2004-01-09
  • 打赏
  • 举报
回复
我在ibphoenix上找到了chinahorse2003说的那篇文章,很长,很详细,chinahorse2003没有转载完,我把地址列在下面,大家可以看看,当然,我还是没有能利用这篇文章修好我弄坏的数据库,呵呵。不过,我还没有完全吃透这篇文章。
http://www.ibphoenix.com/a516.htm

另外,我还找到一篇文章是讲数据库损坏原因的,有的可能你没有注意,至少有的我就没有想到,大家也可以看看,呵呵。
http://community.borland.com/article/0,1410,29515,00.html
SuperTitan001 2004-01-08
  • 打赏
  • 举报
回复
如果只是简单的checksum错误,修复是很简单。
如果是页面数据错误,ib在修复的时候为什么不能丢掉这个页面呢?损失一点数据总好过整个数据库的数据不能用啊。

根据我使用的情况,好象计算checksum的功能并没有关掉一样,因为我也碰到过checksum出错,但是修复的情况,如果是简单的checksum错误,我想应该可以自动修复,反正发现checksum不是12345就改为12345然后重新连接就可以了,为什么还要让你去修复?
CuteBit 2004-01-08
  • 打赏
  • 举报
回复
SuperTitan001,,checksum 错误的情况可能是简单的 checksum 数据错误而已,也可能是来自数据相应的页面数据错误.
对于前者,情况就简单了.但对于后者可能是复杂的了.

其实在 ib 后来版本中(好像是>4), ib 小组出于性能上的考虑决定关掉真正计算 checksum 的功能.只是简单的给 checksum = 12345 而已.所以在备份和 fix 的时候就有了一个忽略 checksum 的选项,为了适应可能的 checksum 简单的错误.
CuteBit 2004-01-08
  • 打赏
  • 举报
回复
hi,SuperTitan001
这个错误:
Database file appears corrupt ()
bad checksum
checksum error on database page 2

是 ib/fb 在读取数据页(对 OS 来说已经成功读出),后进行完整性校验不成功时, ib/fb 抛出的错误信息.
楼主的错误信息却是来自 OS 的.
所以它们的错误层面不是一样的.

SuperTitan001 2004-01-08
  • 打赏
  • 举报
回复
倒也不一定是文件物理损坏,下面是我的文件报的错误。

Database file appears corrupt ()
bad checksum
checksum error on database page 2

应该也就是checksum的错误,不知道为什么修复的时候不能按照现有的数据生成新的checksum,然后由用户自己判断是否修复成功。
CuteBit 2004-01-08
  • 打赏
  • 举报
回复
hi,all
楼主的这个问题是数据库文件物理损坏,不是数据库文件内部数据完整性错误.使用 ib/fb 修复工具自然是不行的.
SuperTitan001 2004-01-08
  • 打赏
  • 举报
回复
确实如此,我试了试 chinahorse2003(天马星空) 的方法,也还是不行。

zhangwei1437 2004-01-06
  • 打赏
  • 举报
回复
向大家学习
HDJ2013 2004-01-06
  • 打赏
  • 举报
回复
这是一个很心痛的问题,数据库的损坏,修 复的可能性很小,唯一的方法,是做好备份。我用过很多的修复工具,都无法修复。
如果你有好的修复方法,我们可以交流。向您学习


8682088@163.com
wmy_xt 2004-01-02
  • 打赏
  • 举报
回复
能不能用中文讲的更明白一些呢?
kerosun 2004-01-02
  • 打赏
  • 举报
回复
Study
tanhuaizhang 2004-01-02
  • 打赏
  • 举报
回复
仔细检查一下,认真思考。
hamzsy 2003-12-27
  • 打赏
  • 举报
回复
谁可以给我个损坏的库,我想找个试试
hamzsy@163.com
剑雷 2003-12-05
  • 打赏
  • 举报
回复
kumao 2003-11-26
  • 打赏
  • 举报
回复
想问一下,这个方法是对interbase数据库有效果还是firebird数据库啊
chinahorse2003 2003-11-21
  • 打赏
  • 举报
回复
完全可以修复,资料来自FIRBIRD 站
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 employee.gdb database.gdb
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 database.gdb
4. If the previous command has indicated that there are problems with the database, we now need to mend it.

gfix -mend -full -ignore database.gdb
5. Now check to see if the corruption has been repaired.

gfix -v -full database.gdb
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 database.gdb database.gbk
7. However if gbak falls over because it is having trouble with garbage collection, then use the following command:

gbak -backup -v -ignore -garbage
database.gdb database.gbk
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
database.gdb database.gbk
9. Now create a new database from the backup:

gbak -create -v atlas.gbk atlas_new.gdb
屡试不爽
honestsky 2003-11-21
  • 打赏
  • 举报
回复
刚用一个客户损坏的数据库试了一下楼上的方法,果然很有效,立刻恢复了。是个好方法!
就是不知道会不会有什么“后遗症”?
SuperTitan001 2003-10-31
  • 打赏
  • 举报
回复
在置顶和faq区有两篇文章专门讲这个问题的,你可以看看,或许有帮助。
置顶帖子中提到了一个修复软件,我试过是有一定的作用的。
加载更多回复(3)
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 本课程作为PostgreSQL数据库管理二,主要讲解以下内容:1.     PostgreSQL中的子查询2.     PostgreSQL公共表表达式3.     PostgreSQL数据的修改4.     PostgreSQL中的事务5.     PostgreSQL数据导入和导出6.     PostgreSQL数据库的管理7.     PostgreSQL表的管理
phpMyFAQ是一个支持多语言的FAQ系统,类似百度知道,支持多种数据库。phpMyFAQ具有内容管理功能,图片管理,支持多用户,用户组、新闻系统、用户跟踪、语言模块,支持 Microsoft Active Directry 活动目录。 phpMyFAQ具体有如下特性: 支持多种数据库 MySQL, PostgreSQL, SQLite, Sybase, MS SQL Server, IBM DB2, IBM Cloudscape, Apache Derby, Oracle, Interbase, or Firebird. 内容管理系统 我们可以进行用户,用户组、新闻、分类、FAQ记录、密码等多方面的管理操作 基于用户、用户组的权限管理 我们可以创建用户、用户组,分配指定用户、用户组权限,包括查看修改创建记录等操作 LDAP身份验证与HTTP身份验证 可以将基于OpenLDAP的身份验证加入phpMyFAQ 的用户管理,也可以仅仅使用基于HTTP身份验证 版本管理 可以在新老系统之间进行切换 社区模块 所有用户都可以在系统里提问,回答,还可以编辑已有的问题与答案。 FAQ 统计 通过追踪用户的访问,投票等等数据,对FAQ条目进行分析与统计。 备份与恢复 可以对所有的数据库内容进行一键备份与还原 模板 我们可以轻松的定制个性化的phpMyFAQ版本,包括使用XHTML和CSS。 搜索 通过搜索功能,我们的用户可以轻松找到问题的答案,可以搜索所有语言也可以选定一种。前端 及时响应功能,使得用户在输入文字的同时,系统及时给出建议,(就是在百度框框里写一个字, 系统自动给出可能的词),系统还提供热门搜索列表,在管理端可看到图形化报告。 phpMyFAQ v2.6.16更新要点 更新荷兰文翻译 更新法语翻译 修复bug

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧