CHECK INDEX控制语句的语法和选项

CHECK INDEX实用程序控制语句及其多个选项定义了实用程序作业执行的功能。

您可以使用 ISPF /PDF编辑功能创建控制语句。 创建后,将其保存在顺序或分区数据集中。 当您创建用于运行作业的 JCL 时,请使用 SYSIN DD 语句指定包含实用程序控制语句的数据集的名称。

语法图

阅读语法图跳过可视化语法图 CHECK INDEX LIST列表定义名称( 索引名称PART整数)(全部)TABLESPACE数据库名称.表格空间名称PART整数CLONESHRLEVELREFERENCESHRLEVELCHANGEDRAIN_WAITIRLMRWT-值DRAIN_WAIT整数RETRYUTIMOUT值RETRY整数RETRY_DELAY计算默认值RETRY_DELAY整数SORTDEVTdevice-typeSORTNUM整数PARALLEL0PARALLEL编号-子任务

选项说明

INDEX
表示您正在检查索引的一致性。
LIST 列表定义名称
指定先前定义的 LISTDEF 列表名称。 列表中只能包含索引空格。 不要指定索引或表空间的名称。 Db2 按相关表空间对组进行索引,并对每个表空间执行一次CHECK INDEX。 CHECK INDEX允许在CHECK INDEX中的每个控制语句使用一个LIST关键字。 仅当指定了CLONE关键字时,此实用程序才会处理克隆数据。 仅在LISTDEF语句中使用CLONED YES是不够的。

分区或分区范围可以在列表中指定。

(索引名 ,……)
指定要检查的索引。 所有索引必须属于同一表空间中的表。 如果省略此选项,则必须使用(全部)表空间选项。 然后,CHECK INDEX会检查您指定的表空间中所有表的所有索引。

索引名称是索引的名称,格式为 creator-id.name。 如果您省略限定词creator-id. , 使用实用程序作业的用户标识符。 如果您使用列表,请用逗号分隔列表中的各项。 姓名或名单前后必须加括号。 如果索引名称中包含空格,请用引号将其括起来。

部分整数
标识要检查一致性的分区索引的物理分区或非分区索引的逻辑分区。 如果在非分区表空间上指定索引,将发生错误。

integer 是物理分区号。 它必须介于1到为表空间定义的分区数之间。 最大值为4096。

如果未指定 PART 关键字,则 CHECK INDEX 会对整个目标索引进行一致性测试。

(全部)
指定要检查指定表空间中所有被该表空间引用的索引。
表格空间 database-name.table-space-name
指定要检查所有索引的表空间。 如果没有指定明确的索引名称列表,则检查指定表空间中所有表的所有索引。

不要在指定表空间时列出索引名称。

数据库名称是表空间所属的数据库名称。 默认值为 DSNDB04

表空间名称是所有索引的表空间名称。

克隆
表示CHECK INDEX仅检查克隆表上的指定索引。 仅当指定了CLONE关键字时,此实用程序才会处理克隆数据。 仅在LISTDEF语句中使用CLONED YES是不够的。
SHRLEVEL
指示在CHECK INDEX处理期间允许对索引、表空间或分区进行的访问类型。
参考
指定应用程序可以读取但不能写入要检查的索引、表空间或分区。

如果您指定SHRLEVEL REFERENCE或使用此值作为默认值, Db2 卸载索引条目,对索引条目进行排序,并扫描数据以验证索引条目。

CHANGE
指定应用程序可以读写要检查的索引、表空间或分区。

如果您指定了SHRLEVEL CHANGE, Db2 执行以下操作:

  • 清空所有写操作,并将缓冲区中的指定对象及其所有索引强制写入磁盘
  • 调用 DFSMSdss 将指定的对象及其所有索引复制到影子数据集
  • 允许对指定对象及其所有索引进行读/写访问
  • 对影子数据集运行检查索引

默认情况下,DFSMSdss使用 FlashCopy® 将 Db2 对象复制到影子数据集,前提是 FlashCopy 可用。 如果DFSMSdss无法使用 FlashCopy, ,DFSMSdss将使用较慢的方法。 因此,创建对象副本可能需要很长时间,而且数据和索引的只读访问时间可能会增加。 您可以将CHECK_FASTREPLICATION子系统参数设置为“必需”,以强制CHECK实用程序仅使用 FlashCopy。 如果 FlashCopy 不可用,CHECK实用程序将失败。

DRAIN_WAIT 整数
指定在清空表空间或索引时,CHECK INDEX等待的秒数。 指定的时间是指待检查物品的总时间。 此值优先于IRLMRWT和UTIMOUT子系统参数指定的值。

integer 可以是0到1800之间的任意整数。 如果您没有指定 DRAIN_WAIT 或指定值为 0,则 CHECK INDEX 将使用锁超时子系统参数 IRLMRWT 的值。

重试整数
指定CHECK INDEX尝试耗尽对象的最大次数。

integer 可以是0到255之间的任意整数。 指定非0的值会增加处理成本,并导致指定索引、表空间或分区处于只读访问状态的时间段增加或延长。

如果您没有指定“重试”,则“检查索引”将使用实用程序乘数子系统参数UTIMOUT的值。

RETRY_DELAY 整数
指定尝试耗尽对象之间的最短持续时间(以秒为单位)。 integer 可以是1到1800之间的任意整数。

如果未指定 RETRY_DELAY,则 CHECK INDEX 使用以下两个值中的较小值:

  • DRAIN_WAIT值×重试值
  • DRAIN_WAIT值×10
SORTDEVT设备类型
指定外部排序程序动态分配的临时数据集的设备类型。 您可以指定排序程序 SORT 或 OPTION 控制语句的 DYNALLOC 参数可接受的任何磁盘设备类型。

模板规格不会动态分配排序工作数据集。 SORTDEVT关键字控制这些数据集的动态分配。

device-type 是设备类型。 如果省略了 SORTDEVT,而排序又是必需的,则必须提供排序程序所需的DD语句,以生成临时数据集。

SORTNUM 整数
指定排序程序动态分配的临时数据集的数量。

integer 是临时数据集的数量,范围从2到255。

如果省略了 SORTDEVT,则 SORTNUM 将被忽略。 如果使用 SORTDEVT 并省略 SORTNUM,则排序程序不会收到任何值;排序程序将使用其自身的默认值。

每种分类至少需要两个分类工作数据集。 SORTNUM值适用于实用程序中的每个排序调用。 例如,假设CHECK INDEX正在检查三个索引,没有限制并行的约束,并且指定了SORTNUM 8。 在这种情况下,一个工作总共分配了24个排序工作数据集。

每类工作数据集都会占用线上和线下虚拟存储空间。 因此,如果您为 SORTNUM 指定的值过高,则该实用程序可能会因虚拟存储限制而降低并行度。 并行度可能会降低到1,这意味着不使用并行度。

PARALLEL num-subtasks
指定并行启动子任务的最大数量,以检查索引的一致性。

num-subtasks 的值必须为0到32767之间的整数(含)。 如果 num-subtasks的指定值大于32767,CHECK INDEX语句将失败。 如果为 num-subtasks 指定了0或没有指定值,CHECK INDEX实用程序将使用最佳的并行子任务数。 如果指定的子任务数量(num-subtasks) 大于计算出的最佳数量,CHECK INDEX实用程序会将并行子任务的数量限制为应用约束后的最佳数量。 CHECK INDEX通常将子任务分为两组或三组。 因此,实际启动的子任务数量可能少于并行选项指定的数量。

PARALLEL的指定子任务数总是优先于PARAMDEG_UTIL子系统参数的值。 因此,PARALLEL可以小于或大于PARAMDEG_UTIL的值。