CHECK INDEX控制语句的语法和选项
CHECK INDEX实用程序控制语句及其多个选项定义了实用程序作业执行的功能。
您可以使用 ISPF /PDF编辑功能创建控制语句。 创建后,将其保存在顺序或分区数据集中。 当您创建用于运行作业的 JCL 时,请使用 SYSIN DD 语句指定包含实用程序控制语句的数据集的名称。
语法图
选项说明
- 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的值。
