CHECK DATA控制语句的语法和选项
CHECK DATA实用程序控制语句及其多个选项定义了实用程序作业执行的功能。
您可以使用 ISPF /PDF编辑功能创建控制语句。 创建后,将其保存在顺序或分区数据集中。 当您创建用于运行作业的 JCL 时,请使用 SYSIN DD 语句指定包含实用程序控制语句的数据集的名称。
语法图
选项说明
- 数据
- 表示您希望实用程序检查参照和表检查约束。 CHECK DATA不检查信息参照约束。
- 表格空间 database-name.table-space-name
- 指定数据所属的表空间。 您可以指定基本表空间,或者,如果将 TABLESPACE 指定为 INCLUDE XML TABLESPACES 选项的一部分,则可以指定 XML 表空间。 TABLESPACE不能用于指定LOB表空间。
数据库名称是数据库的名称,可选。 默认值为 DSNDB04。
表空间名称是表空间的名称。
- 部分整数
- 确定要检查哪个分区是否存在约束冲突。
integer 是物理分区号。 它必须介于1到为表空间定义的分区数之间。 最大值为4096。
- 包含XML表格空间
- 表示“检查数据”将对指定的 XML 表空间和相关节点 ID 索引执行一致性检查。
默认情况下,该实用程序仅检查XML表空间及其相关的节点ID索引。 如果XML列存在XML类型修饰符,并且指定了 xml-spec ,则还可以根据存储的XML模式检查XML文档。 在 xml-spec选项中指定XMLSCHEMA,启用对存储的XML模式的检查。
除了SCOPE关键字指定的现有检查外,还执行了INCLUDE XML TABLESPACE支持的一致性检查。
与被检查的XML表空间关联的XML索引不会被验证。 单独运行这些索引的“检查索引”实用程序。
以下检查项目:- 检查XML表空间,确保每个XML文档的所有行都存在于XML表空间中,且XML文档的结构完整。
- 节点ID索引中的所有条目都会与XML表空间中的行进行核对。 每个索引条目必须在XML表格空间中有一个对应的行,反之亦然。 此功能相当于在节点ID索引上运行CHECK INDEX实用程序。
- 文档ID列中的所有值都会与节点ID索引进行核对。 每个文档ID值必须在节点ID索引中具有匹配的条目。 每个节点ID索引值还必须有一个文档ID值。
- 如果指定了 XMLSCHEMA,CHECK DATA 将验证存储在该列中的文档。 当文档被验证时,基础表行会更新为指定的SHRLEVEL REFERENCE和XMLERROR INVALIDATE或AUXERROR INVALIDATE返回的已验证文档。
- 全部
- 检查与表空间规格标识的基本表空间相关的所有XML表空间。 指定ALL相当于明确指定所有XML列标识符。
- XML规范
- 仅检查由表的XML列或显式表空间名称标识的XML表空间和相关节点ID索引。
每个XML列都有一个与之关联的XML表空间。 因此,XML表空间可以通过基础表的XML列或显式表空间名称来识别。
如果使用XML列标识符,该实用程序将在 Db2 目录或数据库目录中。
- 表格空间规格
- 标识要检查的XML表空间。 XML表空间规范必须标识一个在基础表中具有对应列的XML表空间。 基本表必须位于主CHECK DATA控制语句的table-space-spec选项所指定的表空间中。
- xml-column-spec
- 通过基础表中的XML表的XML列来标识要检查的XML表空间。 XML列标识符由完全限定的表名和XML列名组成。 XML列标识符必须引用待检查的任何基本表空间中的一个表。
- XMLSCHEMA
- 指定如果XML列具有XML类型修饰符,则CHECK DATA实用程序将根据存储的XML模式检查XML文档。
- CLONE
- 表示“检查数据”用于检查指定表空间中的克隆表。 由于克隆表不能有参照约束,因此该实用程序仅检查克隆表数据与相应LOB数据之间是否存在不一致的约束。 如果您没有指定“克隆”,则“检查数据”仅对基础表进行操作。
- SHRLEVEL
- 指示在CHECK DATA处理期间要检查的索引、表空间或分区的允许访问类型。
- 参考
- 指定应用程序可以读取但不能写入要检查的索引、表空间或分区。
在处理过程中,CHECK DATA实用程序可以将更改写入表空间、索引空间或分区。
限制 :当指定了以下选项之一时,您不能在包含已启用归档的表或系统周期临时表的表空间上使用 SHRLEVEL REFERENCE 选项运行 CHECK DATA:- 删除 是
- 错误 无效
- 错误 无效
- XMLERROR INVALIDATE
- CHANGE
- 指定应用程序可以读写要检查的索引、表空间或分区。
当您指定SHRLEVEL CHANGE时,CHECK DATA仅对影子副本进行操作,在处理过程中不会更改表空间、索引空间或分区。 具体来说, Db2 执行以下操作:
- 清空所有写操作,并将缓冲区中的指定对象及其所有索引强制写入磁盘
- 调用 DFSMSdss 将指定的对象及其所有索引复制到影子数据集
- 允许对指定对象及其所有索引进行读/写访问
- 对影子数据集运行检查数据
默认情况下,DFSMSdss使用 FlashCopy® 将 Db2 对象复制到影子数据集,前提是 FlashCopy 可用。 如果DFSMSdss无法使用 FlashCopy, ,DFSMSdss将使用较慢的方法。 因此,创建对象副本可能需要很长时间,而且数据和索引的只读访问时间可能会增加。 您可以将CHECK_FASTREPLICATION子系统参数设置为“必需”,以强制CHECK实用程序仅使用 FlashCopy。 如果 FlashCopy 不可用,CHECK实用程序将失败。
当您指定SHRLEVEL CHANGE、CHECK DATA时,还会生成REPAIR LOCATE DELETE语句,您可以运行这些语句来删除发现错误的行。 这些语句是针对PUNCHDDN数据集编写的。 如果您还指定了以下选项之一,则“检查数据”不会针对压缩行中发现的不一致之处生成“修复”语句:
- 错误 无效
- 错误 无效
- XMLERROR INVALIDATE
重要提示: 在已启用数据版本控制的表或历史表上运行“检查数据SHRLEVEL更改”后,请检查生成的任何“维修”报表。 历史信息可能会被删除。
- DRAIN_WAIT
- 指定当CHECK DATA清空表空间或索引时等待的秒数。 指定的时间是指待检查物品的总时间。 此值优先于IRLMRWT和UTIMOUT子系统参数指定的值。
integer 可以是0到1800之间的任意整数。 如果您没有指定 DRAIN_WAIT 或指定值为 0,CHECK DATA 将使用锁超时子系统参数 IRLMRWT 的值。
- 重试整数
- 指定CHECK DATA尝试重试的最大次数。
integer 可以是0到255之间的任意整数。 如果您没有指定“重试”,则“检查数据”将使用实用程序乘数系统参数 UTIMOUT 的值。
指定“重试”可能会增加处理成本,并导致指定索引、表空间或分区处于只读访问状态的时间延长或次数增加。
- RETRY_DELAY 整数
- 指定重试之间的最短持续时间(以秒为单位)。 integer 可以是1到1800之间的任意整数。
如果您没有指定 RETRY_DELAY,CHECK DATA 将使用以下两个值中的较小值:
- DRAIN_WAIT值×重试值
- DRAIN_WAIT值×10
- 范围
- 限制表格空间中要检查的行范围。
- 待定
- 表示仅检查处于CHECK-pending(CHKP)状态的表空间或分区中的行。 对于每一行或这些行,CHECK DATA检查所有参照和检查约束以及LOB和XML列。
当CHECK DATA检查XML列时,该实用程序会验证节点ID索引与基础表空间中XML指示列中的值之间的关系。 如果指定了包含XML表空间选项,则CHECK DATA还会验证满足以下两个条件的所有指定XML表空间的架构:
- 处于CHKP状态
- 参考待检查的任何基本表格空间中的表格
如果您为非 CHKP 状态的表空间指定了 SCOPE PENDING,CHECK DATA 不会检查该表空间。 该实用程序不会发出错误信息。
- AUXONLY
- 表示对于包含LOB列或XML列的表,仅检查LOB和XML列的表空间。 CHECK DATA不检查参照和检查约束。
当CHECK DATA检查XML列时,该实用程序仅验证节点ID索引与基础表空间中XML指示器列中的值之间的关系。
- 全部
- 表示要检查指定表空间中的所有从属表。 CHECK DATA检查所有参照和检查约束以及LOB和XML列。
如果指定了包含XML表空间选项,则检查关联的XML表空间和节点ID索引是否存在结构缺陷和不一致。
- REFONLY
- 与ALL选项具有相同的行为,只是未勾选LOB和XML列。 CHECK DATA检查所有参照和检查约束。
- XMLSCHEMAONLY
- 表示仅对包含在“包含XML表空间”选项中的XML对象进行XML模式验证。 CHECK DATA不检查XML和LOB列的完整性或参照和检查约束。
- 错误
- 指定当CHECK DATA发现LOB或XML列检查错误时,应执行的操作。
- 报告
- LOB或XML列检查错误会报告警告消息。 基本表空间设置为辅助检查待定(ACHKP)状态。备注: 如果指定了 SHRLEVEL REFERENCE,则 CHECK DATA 将基础表空间设置为 ACHKP 状态。 如果指定了SHRLEVEL CHANGE,CHECK DATA不会更改基础表空间的状态。
- 使无效
- LOB或XML列检查错误会报告警告消息。 LOB或XML列的基准表被设置为无效状态。 状态无效的LOB或XML列现在被设置为有效。 此操作也会附带一条消息。 如果任何LOB列仍处于无效状态,则基础表空间将设置为辅助警告(AUXW)状态。
如果指定了 SHRLEVEL REFERENCE,CHECK DATA 会将 LOB 或 XML 列的基表设置为无效状态,并将基表空间设置为 AUXW 状态。 如果指定了SHRLEVEL CHANGE,则CHECK DATA不会更改基础表空间或LOB或XML列的状态。
如果指定了 SHRLEVEL REFERENCE 和 INCLUDE XML TABLESPACES,则 CHECK DATA 会删除损坏的 XML 文档和相关的节点 ID 索引条目。 如果节点ID索引与XML表中的内容不一致,CHECK DATA会修正节点ID索引。
限制 :您不能在以下对象上运行带有AUXERROR INVALIDATE的CHECK DATA SHRLEVEL REFERENCE:- 使用数据版本控制的表格或历史表格
- 包含已启用存档功能的表格的表格空间
- 运行CHECK LOB以确保LOB表空间的有效性。
- 在辅助表的索引上运行REBUILD INDEX或CHECK INDEX,以确保其有效性。
- 在XML表空间上的节点ID索引上运行重建索引或检查索引,以确保其有效性。
- LOBERROR
- 指定当CHECK DATA发现LOB列检查错误时,它应执行的操作。 如果指定了AUXERROR,则不要指定LOBERROR。 如果同时指定了两个,则关键字必须匹配。 LOBERROR在SCOPE XMLONLY中会被忽略,因为LOB检查没有执行。
- 报告
- LOB列检查错误,并伴有警告信息。 基本表空间设置为辅助检查待定(ACHKP)状态。
如果未指定“AUXERROR”,则默认值为 “REPORT ”。
- 使无效
- LOB列检查错误,并伴有警告信息。 基本表LOB列被设置为无效状态。 无效状态的LOB列现在已更正,设为有效。 如果任何LOB列仍处于无效状态,则基础表空间将设置为辅助警告(AUXW)状态。限制 :您不能对以下对象运行带有LOBERROR INVALIDATE的CHECK DATA:
- 使用数据版本控制的表格或历史表格
- 如果同时指定了SHRLEVEL REFERENCE,则包含一个启用存档的表的空间
- XML错误
- 指定当CHECK DATA发现XML列检查错误时,它应执行的操作。 如果指定了AUXERROR,则不要指定XMLERROR。 如果同时指定了两个,则关键字必须匹配。 由于未执行LOB检查,因此对于SCOPE XMLONLY,XMLERROR将被忽略。
- 报告
- XML列检查错误会报告一条警告消息。 基本表空间设置为辅助检查待定(ACHKP)状态。
如果未指定“AUXERROR”,则默认值为 “REPORT ”。
备注: 如果指定了 SHRLEVEL REFERENCE,则 CHECK DATA 将基础表空间设置为 ACHKP 状态。 如果指定了SHRLEVEL CHANGE,CHECK DATA不会更改基础表空间的状态。 - 使无效
- XML列检查错误会报告一条警告消息。 基本表XML列被设置为无效状态。 一个状态无效的XML列现在被设置为有效。 如果任何LOB列仍处于无效状态,则基础表空间将设置为辅助警告(AUXW)状态。
CHECK DATA将LOB或XML列的基表设置为无效状态,并将基表空间设置为AUXW,前提是SHRLEVEL REFERENCE已指定。 如果指定了SHRLEVEL CHANGE,则CHECK DATA不会更改基础表空间或LOB或XML列的状态。
如果指定了 SHRLEVEL REFERENCE 和 INCLUDE XML TABLESPACES,则 CHECK DATA 会删除损坏的 XML 文档和相关的节点 ID 索引条目。 如果节点ID索引与XML表中的内容不一致,CHECK DATA会修正节点ID索引。
限制 :您不能在以下对象上运行带有XMLERROR INVALIDATE的CHECK DATA SHRLEVEL REFERENCE:- 使用数据版本控制的表格或历史表格
- 包含已启用存档功能的表格的表格空间
- FOR EXCEPTION
表示任何违反参照或表检查约束的行将被复制到异常表中。 虽然此关键字不适用于LOB或XML列的检查,但包含LOB或XML列的行会被移至异常表中。 如果指定仅对LOB和XML进行检查,则忽略“异常情况”选项。
如果某行违反了多个约束条件,则该行在异常表中仅出现一次。 CHECK DATA包括检查XML模式冲突和XML结构检查。
当指定了SHRLEVEL CHANGE时,此选项将被忽略。
如果在包含 XML 列的基表上运行 CHECK DATA,则只有在指定了 INCLUDE XML TABLESPACES 选项时,EXCEPTIONS 关键字才会生效。
- 在 table-name1
- 指定要从中复制行的表(在TABLESPACE关键字指定的表空间中)。
table-name1 是表格的名称。
- 使用 table-name2
- 指定将错误行复制到的异常表。
table-name2 是异常表的名称,且必须为基本表;它不能是视图、同义词或别名。
对于 table-name1 和 table-name2 ,如果表格名称包含空格或特殊字符,请用引号将其括起来。 (特殊字符是指除字母或数字以外的任何字符。)
- 删除
- 指示是否要从表空间中删除违反参照或表检查约束的行。
只有在指定了“异常”子句的情况下,才能指定“删除”。
- 不
- 表示错误行将保留在表格空间中。 从属表中的主要错误会复制到异常表中。
如果指定了 DELETE NO 和 SHRLEVEL REFERENCE,并且检测到约束冲突,则 CHECK DATA 会将表空间置于 CHECK-pending 状态。
- 是
- 表示将从表空间中删除错误行。
当您指定“例外”时,从相关表和子表中删除的行将放入例外表中。
如果您从未记录的表空间中删除行,则该表空间将处于信息性待复制(ICOPY)状态。
限制 :您不能对以下对象运行“数据检查”并选择“是”进行删除:- 使用数据版本控制的表格或历史表格
- 如果同时指定了SHRLEVEL REFERENCE,则包含一个启用存档的表的空间
- LOG
- 指定记录删除时所采取的记录操作。
- 是的
- 记录报告阶段删除的所有记录。
如果表格空间具有“未登录”属性,则“已登录”属性将被忽略。
- 否
不记录在报告阶段删除的任何记录。 其他类型的日志记录仍在继续。 如果删除任何行,CHECK DATA会将表空间置于COPY-pending状态,并将任何具有COPY YES属性的索引置于信息性COPY-pending状态。 如果从未记录的表空间中删除行,则该表空间将被标记为信息性COPY-pending。
注意: 请谨慎使用“日志编号”选项,因为使用该选项会限制您使用日志恢复数据的能力。 例如,假设您在特定日志 RBA 中发出“检查数据 删除 是 日志 否”的语句。 您可以恢复日志中该时间点之前或该时间点之后执行实用程序时存在的数据。
- 例外情况 整数
- 指定最大异常数量,仅通过消息报告。 当检查数据(CHECK DATA)阶段达到指定的异常数量时,该阶段将终止;如果终止,则错误行不会写入异常表。
只有包含主要参照完整性错误或表检查约束违规的记录才会被应用到异常限制中。 包含次要错误的记录数量不受限制。
integer 是最大异常数。 默认值为 0 ,表示对异常数量不设限制。
此关键字不适用于包含XML列的LOB表空间或基本表空间。
- ERRDDN ddname
- 指定一个DD语句,用于处理错误数据集。
ddname 可以是DD名称,也可以是上一个TEMPLATE控制语句中的TEMPLATE名称。 如果实用程序处理检测到指定的名称在当前作业步骤中既是DD名称又是模板名称,则实用程序将使用DD名称。 默认值为SYSERR。
- WORKDDN ( 名称1, 名称2 )
- 指定排序输入临时工作文件和排序输出临时工作文件的DD语句。 需要临时工作文件,用于分类输入和输出。
您可以使用WORKDDN关键字来指定DD名称或上一个TEMPLATE控制语句中的TEMPLATE名称。 如果实用程序处理检测到指定的名称在当前工作步骤中既是DD名称又是模板名称,则WORKDDN将使用DD名称。
ddname1 是排序输入临时工作文件的DD名称。 默认值为 SYSUT1。
ddname2 是排序输出临时工作文件的DD名称。 默认值为SORTOUT。
- PUNCHDDN ddname
- 指定数据集的DD语句,该数据集将接收CHECK DATA SHRLEVEL CHANGE生成的REPAIR实用程序控制语句。
ddname 是DD名称。
默认值为 SYSPUNCH。
PUNCHDDN关键字指定DD名称或上一个TEMPLATE控制语句中的TEMPLATE名称。 如果实用程序处理检测到指定的名称既是当前工作步骤中的名称又是模板名称,则实用程序将使用DD名称。
- SORTDEVT 设备类型
- 指定排序程序动态分配的临时数据集的设备类型。 您可以指定排序程序 SORT 或 OPTION 控制语句的 DYNALLOC 参数可接受的任何磁盘设备类型。 排序程序不支持磁带设备。
请勿使用模板规格动态分配排序工作数据集。 SORTDEVT关键字的存在控制着这些数据集的动态分配。
device-type 是设备类型。 如果省略了 SORTDEVT,而排序又是必需的,则必须提供排序程序所需的 DD 语句,以创建临时数据集。
- SORTNUM 整数
- 指定排序程序动态分配的临时数据集的数量。
integer 是临时数据集的数量,范围从2到255。
如果省略了 SORTDEVT,则 SORTNUM 将被忽略。 如果使用 SORTDEVT 并省略 SORTNUM,则排序程序不会收到任何值;排序程序将使用其自身的默认值。
每种分类至少需要两个分类工作数据集。 SORTNUM值适用于实用程序中的每个排序调用。
重要:
如果IGNSORTN子系统参数设置为YES,则SORTNUM关键字将被忽略。
