MIRROR_COMPARE_LIBRARY 过程
存储过程 MIRROR_COMPARE_LIBRARY 返回一个结果表和一个可选的结果集,结果表和结果集中包含一条或多条记录,这些记录针对库以及指定库中与其他节点上相同对象不同的每个对象。
对于每个被比较的对象,可以针对对象的定义属性、对象中包含的数据或两者执行比较操作。 只有*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象支持数据比较。 必须为至少一个比较属性或比较数据参数指定 YES 或 QUICK 值。 有关对象比较的更多信息,请参阅MIRROR_COMPARE_OBJECT 表函数

授权: 语句的授权标识所拥有的特权必须包含 *ALLOBJ 特权。 有关使用此功能所需的权限,请参阅授权。
要指定除 NONE 以外的并行度值,语句的授权标识所拥有的特权必须包含 *JOBCTL 特权或 QIBM_DB_SQLADM 功能使用权限。

- 库名
- 用于标识要比较的库的字符或图形字符串表达式。
- 比较属性
字符或图形字符串表达式,表示是否比较每个对象的属性。 比较对象的属性因对象类型而异。 并非对象的所有属性都可以进行比较
- 否
- 不会对对象的属性进行比较。
- 快速
- 将对对象的属性进行比较,直到找到第一个差异。 如果检测到任何差异,那么仅针对对象返回单行。 此选项更快,因为未返回对象的完整差异列表。
- 是
- 将对对象的所有属性进行比较。 针对找到的每个差异返回一行。 这是缺省情况。
- 比较数据
- 字符或图形字符串表达式,表示是否对*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象的数据进行比较。 对于所有其他对象,compare-data将被忽略。
- 否
- 不会比较对象的数据。
- 快速
- 比较*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象的数据,直到发现第一个差异。 如果检测到任何差异,那么仅返回单行。 此选项更快,因为未返回对象的完整差异列表。
- 是
- 对*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象的所有数据进行比较。 针对找到的每个差异返回一行。 这是缺省情况。
- 并行度
- 用于指定用于比较对象的最大并行度的字符或图形字符串。
如果未安装 Db2® 对称多处理 (SMP) 功能部件,那么如果值不是 NONE ,那么将发出错误。
- 2-256
- 要使用的最大并行度。
- 无
- 将不使用并行性。 这是缺省情况。
- 并行作业
- 一个整数值,用于指定可以一次运行以比较库中各个对象的最大作业数。 缺省值为 1。
- 结果库
- 一个字符或图形字符串表达式,用于标识要包含来自比较的详细信息的库的名称。 该库必须存在。 如果省略此参数,那么缺省值为 QTEMP。
- 结果文件
字符或图形字符串表达式,用于确定包含比较结果详细信息的文件的系统名称。 结果文件包括包含比较过程中发现的任何差异的详细信息的行,以及当verbose-log的值为YES 时返回的任何附加行。 如果省略此参数,那么缺省值为 QIBM_MCOMP。 如果文件已经存在,则会向文件中插入新行
- 冗长日志
- 一个字符或图形字符串表达式,用于指示是否针对所比较的每个对象返回至少一行。
- 否
- 仅针对不作为相同对象进行比较的对象返回行。 这是缺省情况。
- 是
- 将针对所比较的每个对象返回一行。
- 结果集
- 一个字符或图形字符串表达式,用于指示是否使用结果集游标将结果行返回给调用者。
- 否
- 仅返回由 result-library 和 result-file 标识的结果文件。 这是缺省情况。
- 是
- 除了 result-library 和 result-file所标识的结果文件之外,还会返回结果集游标。 如果在比较过程中至少有一个实例检测到某个对象存在差异,就会返回一个结果集。 结果集仅包括从此调用 MIRROR_COMPARE_LIBRARY 过程添加到结果文件的行。
对象类型列表

字符或图形字符串表达式,包含一个或多个系统对象类型,用逗号或空格分隔,用于识别库名中要比较的对象。 该参数的默认值为*ALLMIRROR。
对象类型列表允许使用以下特殊值。
- *全部
- 对所有系统对象类型进行比较。
- *ALLMIRROR
对所有从QSYS2.CHECK_REPLICATION_CRITERIA函数返回值不是EXCLUDE或INELIGIBLE的符合复制条件的对象进行比较。 这包括库名称的 *LIB 库对象。
如果库名是 QSYS,则只允许比较以下符合复制条件的对象类型:- *AUTL
- 权限列表
- *ENVVAR
- 系统级别环境变量
- * FCNUSG
- 功能用法
- *SECATR
- 安全性属性
- *SYSVAL
- 系统值
- *USRPRF
- 用户概要文件
- *全部无反光镜
对从QSYS2.CHECK_REPLICATION_CRITERIA函数返回EXCLUDE或INELIGIBLE值的所有非镜像对象进行比较。
如果库名是 QSYS,则只允许比较以下对象类型:- *ENVVAR
- 系统级别环境变量
- *SYSVAL
- 系统值

创建的表和返回的结果集包含以下列:
| 列名 | 系统列名 | 数据类型 | 描述 |
|---|---|---|---|
| 比较时间 | 时间 | TIMESTAMP | 比较此对象时的时间戳记。 |
| 库名 | LIBNAME | VARCHAR(10) | 包含对象的库。 |
| object_name | OBJNAME | VARCHAR(128) 可为空
|
对象的名称。 当 OBJECT_TYPE 为 *SECATR 或 COMPARE_RESULT 为 ERROR时,包含空值。 |
| 对象类型 | OBJTYPE | VARCHAR(8) 可为空
|
系统对象类型。 |
| 比较结果 | 结果 | VARCHAR(9) | 比较的结果。
|
| attribute_name | ATTRIBUTE | VARGRAPHIC (512) CCSID 1200
可空 |
对象属性的名称或不相同的相对记录号 (RRN)。 当 COMPARE_RESULT 为 COMPARED 或 ERROR时,包含空值。 |
| 主值 | PRI_VALUE | VARGRAPHIC (2048) CCSID 1200
可空 |
主节点的值。 当使用 QUICK 选项的比较检测到差异时,包含值 DIFFERENT。 当 COMPARE_RESULT 为 COMPARED 或 ERROR 时包含空值 |
| value_on_secondary(次要值 | SEC_VALUE | VARGRAPHIC (2048) CCSID 1200
可空 |
二级节点的值。 当使用 QUICK 选项的比较检测到差异时,包含值 DIFFERENT。 当 COMPARE_RESULT 为 COMPARED 或 ERROR时,包含空值。 |
| IASP_NAME | IASP_NAME | VARCHAR(10) 可为空
|
存储此对象的独立 ASP 组的名称。 包含 ASP 组的名称或以下特殊值:
当 COMPARE_RESULT 为 ERROR时包含空值。 |
包含状态![]() |
INC_STATE![]() |
VARCHAR(10)可为空 ![]() |
此对象的现有复制包含状态。
如果不存在包含状态,则包含空值。 ![]() |
| compare_sqlstate | COMP_STATE | CHAR(5) | 为此比较返回的 SQLSTATE 值。 |
| 比较错误文本 | ERROR_TEXT | VARCHAR (2000) 可为空
|
作为非零 SQLSTATE 的一部分返回的错误信息。 如果没有可用的错误信息,那么包含空值。 |
示例
- 比较以下复制的对象类型: *AUTL , *USRPRF , *SYSVAL , *ENVVAR , *FCNUSG 和 *SECATR。 通过将库名指定为 QSYS 来请求它们。
CALL QSYS2.MIRROR_COMPARE_LIBRARY(LIBRARY_NAME => 'QSYS', RESULT_SET => 'YES', RESULT_LIBRARY => 'DB2M_COMP', RESULT_FILE => 'JUNE262018'); - 比较 APPLIB 中的所有对象,为每个对象返回至少一行。 执行完整属性比较和快速数据比较。 如果数据不匹配,那么可以针对具有差异的对象请求更深层次的数据比较。
CALL QSYS2.MIRROR_COMPARE_LIBRARY(LIBRARY_NAME => 'APPLIB', COMPARE_ATTRIBUTES => 'YES', COMPARE_DATA => 'QUICK', VERBOSE_LOG => 'YES', RESULT_LIBRARY => 'DB2M_COMP', RESULT_FILE => 'JULY112020');
