Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 维护数据库 » 校验数据库

 

使用校验和检测损坏

校验和用于确定数据库页是否已在磁盘上进行了修改。在您创建启用校验和的数据库时,在将每一页写入磁盘前为其计算校验和。下次从磁盘中读取该页时,就会重新计算该页的校验和,并将其与该页上存储的校验和进行比较。如果校验和不同,说明页面在磁盘中已被修改,并发生错误。

可通过执行以下语句来检查创建数据库时是否启用了校验和:

SELECT DB_PROPERTY ( 'Checksum' );

如果开启了校验和,则此查询将返回 ON,否则将返回 OFF。

校验校验和

如果在启用了校验和的情况下创建数据库,则可以检查磁盘页的有效性。校验和校验需要 DBA 或 VALIDATE 权限。

对于启用了校验和的数据库,会为每个数据库页计算校验和,并在该页写入磁盘时存储该值。可以使用 Sybase Central 中的校验实用程序 (dbvalid) 或 [校验数据库向导] 执行校验和校验,这包括从磁盘读取数据库页并计算页面的校验和。如果计算出的校验和与页面的存储校验和不匹配,则说明该页面在磁盘上时或写入页面时可能已被修改或者已损坏。如果有一个或多个页面已损坏,则会返回错误,并在数据库服务器消息窗口中显示有关该无效页的信息。

有关校验和校验的详细信息,请参见VALIDATE 语句校验实用程序 (dbvalid)

自动创建校验和

在以下情况中,将为数据库启用校验和,而无论在创建数据库时指定了怎样的校验和设置:

  • 重要页   无论是否启用校验和,数据库服务器都会计算所有数据库中重要数据库页面的校验和。这些校验和用于检测脱机损坏情况,这有助于减少由于重要页面发生错误而损坏其它数据的可能。因为数据库服务器会计算这些校验和,因此,如果没有启用校验和的数据库损坏,则数据库服务器会因出现致命错误而关闭。

    同样,如果您校验到数据库没有启用校验和,但有一个错误的重要页面,则 dbvalid 仍可以返回有关校验和违规的警告。

  • Windows Mobile 数据库   数据库服务器自动为在 Windows Mobile 上运行的数据库启用校验和,以帮助尽早地检测到数据库文件是否损坏。

  • 在某些存储介质上运行的数据库   当数据库在可能不太安全的存储介质(例如网络或可移除驱动器)上运行时,数据库服务器会自动为数据库启用校验和。只要数据库保存在这样一台设备上校验和就保持启用状态,并在页面写入时对其进行校验和检查。如果数据库移动到更可靠的存储设备上,则当已校验和的页进入数据库服务器高速缓存时数据库服务器会校验这些页的校验和。


校验数据库
校验表