CDX 损坏索引文件和 Windows 2003 Server

CDX 损坏索引文件和 Windows 2003 Server

我们几乎每天都会遇到 Windows Server 2003 上的数据库索引损坏。我想知道这是否与缓存或其他服务器设置有关。

我们正在运行一个使用 DBF/CDX 表的旧应用程序。很长时间以来一切都很好,但在我们安装 Advantage Database Server(允许访问我们网站的某些表)6 个月后,我们开始遇到索引损坏问题。我们不知道该怪谁。ADS 返回错误:错误 7017:损坏的 .ADI、.CDX 或 .IDX 索引。表名:RBOOKM

我们已尝试排除导致此损坏的所有可能原因。现在所有用户都在终端模式下工作 - 因此不会有网络问题导致此问题,OpLocks 也不可能是原因。我们更换了硬件、网卡、交换机,重新安装了服务器,甚至移至新的专用服务器。我们唯一不能排除的是 ADS - 因为它应该可以正常工作。

本地读/写缓存是否可能导致该问题?例如,一个用户或进程使用缓存的数据,后来另一个用户/进程对其进行了更改,后来第一个用户在不知情的情况下再次对其进行了更改。理论上可能吗?

此问题是否可能是由导入器文件服务器或缓存设置引起的?普通用户是否可能使用非缓存数据,而 ADS 正在使用缓存数据?或者反之亦然?每个终端用户是否都有自己的缓存?或者问题可能是 RAID 缓存以某种方式干扰了 Windows Server 缓存?或者 Windows Server 是否有一些特殊设置用于处理由多个终端用户同时写入的 DBF 表?也许有一种方法可以关闭某些文件的缓存来检查它?

有时我们一天会遇到两次索引崩溃,有时连续 5 天一切正常。但通常它每天都会崩溃。今天只有一个用户在晚上使用数据库(通常在工作时间有 30-50 个用户同时工作)。所以服务器上几乎没有负载。工作时间每 5 分钟与网站同步一次,晚上和周末每 15 分钟同步一次。

我们已经完成了文件访问审计,结果显示,在网站同步期间,ADS 服务器会打开 ReadEA 和 WriteEA 的表和索引文件,尽管它只执行 SELECT 查询。ADS 会执行 UPDATE/INSERT 查询,但频率较低 - 不是在常规同步期间,而是仅在网站访问者下订单时执行。

请帮帮我。我们为这个问题奋斗了将近一年,但仍然找不到任何模式或线索。

以下是我之前关于DBA的关于这个问题的疑问:https://dba.stackexchange.com/questions/8646/foxpro-dbf-index-corruption

相关内容