oncheck -ci-cI: 检查索引节点链接

使用 oncheck -cioncheck -cI 命令检查键值顺序和与指定表相关联的所有索引的水平和垂直节点链接的一致性。

oncheck -cI 选项还检查索引中与 rowid 相关联的键值是否与该行中的键值相同。-cI 选项不在功能检索上交叉检查数据。

语法:

如果未指定索引,该选项检查所有的索引。如果未指定表,该选项检查数据库中所有的表。

相同的 -ci 修复选项可以与 -cI 一起使用。如果 oncheck -ci oncheck -cI 检测到不一致,那么它会提示您确认修复该问题索引。如果指定了 -y (是)选项,那么自动修复索引。如果指定了 -n (否)选项,那么报告该问题,但不进行修复;不出现任何提示。

如果 oncheck 未找到不一致性,那么以下消息出现:
validating indexes......

该消息显示 oncheck 正在检查的索引的名称。

注: 使用 oncheck 重新构建索引可能会消耗很长时间。如果使用 SQL 语句 DROP INDEX 和 CREATE INDEX 删除并重建索引,那么处理速度通常会较快。
以下示例检查 customer 表上的所有索引:
oncheck -cI -n stores_demo:customer
以下示例检查 customer 表上的 zip_ix 索引:
oncheck -cI -n stores_demo:customer#zip_ix
如果索引在相同的 dbspace 中的多个分区上分片,那么 oncheck -cioncheck -cI 命令将显示分区名称。以下示例显示了在相同 dbspace 中的多个分区上分片的索引的典型输出:
Validating indexes for multipart:gbasedbt.t1...
          Index idx_t1
          Index  fragment partition part_1 in DBspace dbs1
          Index  fragment partition part_2 in DBspace dbs1
          Index  fragment partition part_3 in DBspace dbs1
          Index  fragment partition part_4 in DBspace dbs1
          Index  fragment partition part_5 in DBspace dbs1

缺省情况下,当您使用 oncheck -cioncheck -cI 选项检查索引时,数据库服务器不在表上放置共享锁,除非该表使用页锁定。要绝对确保完全的索引检查,可以在执行 oncheck -cioncheck -cI 时使用 -x 选项。使用 -x 选项, oncheck 在表上放置共享锁,这样其他用户就不能在检查完成之前执行更新、插入或删除。有关在 oncheck -cioncheck -cI 中使用 -x 选项的更多信息,请参阅 使用 -x 开启锁

当在外部索引上执行 oncheck 时,用户定义的存取方法负责检查和修复索引。如果使用用户定义存取方法的索引无法找到该存取方法,那么数据库服务器报告错误。oncheck 实用程序不会修复外部索引中的不一致。对于包含多种索引类型的表,不应使用 oncheck -cI

oncheck 实用程序在检查索引时需要排序空间 。所需排序的空间量与需要创建索引的空间量大小相同。有关计算所需临时空间量的更多信息,请参阅 估计用于索引构建的临时空间。如果您收到该错误 "no free disk space for sort" ,您必须重新预估所需的临时空间量并使其可用。

Important: 如果正在使用 Verity Text Search DataBlade 模块,那么 -cI 选项执行索引合并而不是通常的操作。

有关索引的更多信息,请参阅 B-Tree 索引页的结构