由于该检查所需的时间和该检查可能导致的争用,所以调度在活动最少的时候进行该检查。建议您就在创建 0 级备份之前执行该检查。
确认类型 |
命令 |
系统目录表 |
oncheck -cc |
数据 |
| oncheck -cD dbname |
扩展数据块 |
oncheck -ce |
索引 |
oncheck -cI dbname |
保留页 |
oncheck -cr |
逻辑日志和保留页 |
oncheck -cR |
元数据和智能大对象 |
oncheck -cs |
您可以在数据库服务器处于联机方式时运行这些命令中的每个命令。有关每个命令如何在检查对象时锁定它们以及哪些用户可以执行确认的信息,请参阅 IBM Informix: Administrator's Reference 中的 oncheck。
在大多数情况下,如果这些确认过程中的一个或多个过程检测到错误,则解决方案是从数据库空间备份恢复数据库。但是,错误的来源也可能是硬件或操作系统。
确认系统目录表
要验证系统目录表,使用 oncheck -cc 命令。
每个数据库包含它本身的系统目录,该目录包含关于数据库表、列、索引、视图、约束、存储过程和特权的信息。
如果当确认完成时出现警告,该警告的仅有用途是提醒您找不到特定类型的记录。这些警告并非指示您的数据、系统目录或甚至数据库设计有任何问题。该警告仅指示不存在任何表的同义词;即,系统目录在表 syssyntable 中不包含记录。例如:如果您为没有为任何表定义同义词的数据库确认系统目录表,则可能出现以下警告: WARNING: No syssyntable records found.
但是,如果您在确认系统目录表时接收到错误消息,则情况就完全不同了。请立即与 IBM Informix 技术支持联系。
确认数据页
要确认数据页,请使用 oncheck -cD 命令。
如果数据页确认检测到错误,则尝试从指定表卸装数据、删除表、重新创建表以及重新装入数据。有关装入和卸装数据的信息,请参阅《IBM Informix: 迁移指南》。如果该过程不成功,请从存储空间备份执行数据恢复。
确认扩展数据块
要确认每个数据库中的扩展数据块,请使用 oncheck -ce 命令。
扩展数据块一定不能重叠。如果该命令检测到错误,请从存储空间备份执行数据恢复。
确认索引
要确认数据库中每个表上的索引,请使用 oncheck -cI 命令。
如果该命令检测到错误,则删除并重新创建受影响的索引。
确认逻辑日志
要确认逻辑日志和保留页,请使用 oncheck -cR 命令。
确认保留页
要确认保留页,请使用 oncheck -cr 命令。
保留页是驻留在根数据库空间初始块开始处的页。这些页包含主数据库服务器开销信息。如果该命令检测到错误,请从存储空间备份执行数据恢复。
该命令可能会提供警告。在大多数情况下,这些警告让您注意的是您已经知道的情况。
确认元数据
对每个数据库执行 oncheck -cs 以确认数据库中所有智能大对象的元数据。如有必要,从数据库空间备份恢复数据。
要确认表和表空间数据,请在数据库或表上使用 oncheck -cD 命令。
大多数的一般断言失败消息后面均跟随其它信息,其它信息通常包含检测到错误的表空间。如果该检查验证出不一致,则从表中卸装数据、删除表、重新创建表以及重新装入数据。另外,不需要任何其它操作。
在许多情况中,数据库服务器当断言失败时会立即停止。但是,当失败看起来是特定于某表或较小实体时,数据库服务器会继续运行。
当断言是由于数据库服务器代表用户访问的数据页上的不一致而失败时,还会将错误发送至应用程序进程。SQL 错误取决于正在进行的操作。但是,ISAM 错误几乎始终是 -105 或 -172,如下所示:
-105 ISAM error: bad isam file format -172 ISAM error: Unexpected internal error
|