Firebird数据库损坏的原因

我在多个基于Windows的服务器上运行几个不同的Firebird版本(2.0,2.1),这些服务器硬件差异很大。 他们之间唯一匹配的事情是,他们正在运行相同的数据库结构的家庭build成的应用程序。

最近我在多台服务器上看到了大规模的减速。 事实certificate,数据库被破坏了,所以每次破坏时,我都会修复,备份和恢复数据库,并且一段时间(1-2周)都没有问题,然后再次重复。 谢天谢地,我还没有看到任何数据丢失或损坏。 问题是,每一次这样的停机都会导致生产力的损失,而且由于一些数据库位于偏远地区,往往会对我造成很大的影响。

我一直在试图找出是什么原因造成的腐败,但我一直无法。 它运行在不同的硬件上的事实表明,它不应该是一个基于硬件的问题。

如果我们排除硬件问题,我不好意识到这是Firebird中的一个bug,因为我没有通过SQL做任何事情。 你有什么想法如何找出究竟是什么造成的腐败,希望解决这个问题?

根据第一个回复:我在firebird.log中遇到了几个不同的问题:

INET/inet_error: read errno = 10054 INET/inet_error: select in packet_receive errno = 10038 Relation has 12 orphan backversions (5 in use) in table LIMITAI (139) Index 1 is corrupt on page 61700 level 1. File: ..\..\..\src\jrd\validation.cpp, line: 1659 (repeats for multiple pages and index numbers) Page 50801 is an orphan (repeats for multiple pages) 

检查firebird.log。 它可能包含有关错误的重要信息。
检查应用程序如何处理事务。 火鸟不喜欢长时间运行的交易。 他们的结果是减速,最终(取决于负载等)服务器崩溃。

对于性能问题,我推荐SináticaMonitor 。

心连心

检查您的服务器对以下列表:

  1. 最新的Firebird版本已安装
  2. 数据库的强制写入模式为ON
  3. 使用NTFS文件系统
  4. 系统有一个UPS(如果没有 – closures硬盘写caching)
  5. 硬件是可靠的(没有系统挂起,因为内存不好,没有坏道等)
  6. 推荐使用受保护内存caching的RAID

遵循这些简单的规则,我们有服务器运行多年,没有任何推</s>。