MIRROR_COMPARE_LIBRARY 过程

开始更改存储过程 MIRROR_COMPARE_LIBRARY 返回一个结果表和一个可选的结果集,结果表和结果集中包含一条或多条记录,这些记录针对库以及指定库中与其他节点上相同对象不同的每个对象。结束更改

开始更改对于每个被比较的对象,可以针对对象的定义属性、对象中包含的数据或两者执行比较操作。 只有*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象支持数据比较。 必须为至少一个比较属性比较数据参数指定 YES 或 QUICK 值。 有关对象比较的更多信息,请参阅MIRROR_COMPARE_OBJECT 表函数结束更改

开始更改

授权: 语句的授权标识所拥有的特权必须包含 *ALLOBJ 特权。 有关使用此功能所需的权限,请参阅授权

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

结束更改
读取语法图跳过可视语法图 MIRROR_COMPARE_LIBRARY ( 库名 =>  库名 ,属性比较 => 比较属性,比较数据 => 比较数据,PARALLEL_DEGREE => 并行度,PARALLEL_JOBS => 并行作业,RESULT_LIBRARY => 结果库,RESULT_FILE => 结果文件,VERBOSE_LOG => 冗长日志,RESULT_SET => 结果集,对象类型列表 => 对象类型列表 )
模式为 QSYS2。
库名
用于标识要比较的库的字符或图形字符串表达式。
比较属性

开始更改字符或图形字符串表达式,表示是否比较每个对象的属性。 比较对象的属性因对象类型而异。 并非对象的所有属性都可以进行比较结束更改

不会对对象的属性进行比较。
快速
将对对象的属性进行比较,直到找到第一个差异。 如果检测到任何差异,那么仅针对对象返回单行。 此选项更快,因为未返回对象的完整差异列表。
将对对象的所有属性进行比较。 针对找到的每个差异返回一行。 这是缺省情况。
比较数据
字符或图形字符串表达式,表示是否对*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-libraryresult-file 标识的结果文件。 这是缺省情况。
除了 result-libraryresult-file所标识的结果文件之外,还会返回结果集游标。 如果在比较过程中至少有一个实例检测到某个对象存在差异,就会返回一个结果集。 结果集仅包括从此调用 MIRROR_COMPARE_LIBRARY 过程添加到结果文件的行。
开始更改对象类型列表结束更改
开始更改

字符或图形字符串表达式,包含一个或多个系统对象类型,用逗号或空格分隔,用于识别库名中要比较的对象。 该参数的默认值为*ALLMIRROR

对象类型列表允许使用以下特殊值。

*全部
对所有系统对象类型进行比较。
*ALLMIRROR

对所有从QSYS2.CHECK_REPLICATION_CRITERIA函数返回值不是EXCLUDEINELIGIBLE的符合复制条件的对象进行比较。 这包括库名称的 *LIB 库对象。

如果库名是 QSYS,则只允许比较以下符合复制条件的对象类型:
*AUTL
权限列表
*ENVVAR
系统级别环境变量
* FCNUSG
功能用法
*SECATR
安全性属性
*SYSVAL
系统值
*USRPRF
用户概要文件
*全部无反光镜

对从QSYS2.CHECK_REPLICATION_CRITERIA函数返回EXCLUDEINELIGIBLE值的所有非镜像对象进行比较。

如果库名是 QSYS,则只允许比较以下对象类型:
*ENVVAR
系统级别环境变量
*SYSVAL
系统值
结束更改

创建的表和返回的结果集包含以下列:

表 1. MIRROR_COMPARE_LIBRARY 结果表
列名 系统列名 数据类型 描述
比较时间 时间 TIMESTAMP 比较此对象时的时间戳记。
库名 LIBNAME VARCHAR(10) 包含对象的库。
object_name OBJNAME VARCHAR(128)
可为空
对象的名称。

OBJECT_TYPE*SECATRCOMPARE_RESULTERROR时,包含空值。

对象类型 OBJTYPE VARCHAR(8)
可为空
系统对象类型。
比较结果 结果 VARCHAR(9) 比较的结果。
比较
找不到差异, verbose-log 设置为 YES
差异
比较确定了节点之间的差异。 根据所请求的比较类型 (YES 或 QUICK) ,将针对单个对象返回一行或多行。 ATTRIBUTE_NAMEVALUE_ON_PRIMARYVALUE_ON_SECONDARY 列包含有关差异的详细信息。
错误
比较失败。 故障的一个示例是对象仅存在于一个节点上。 COMPARE_SQLSTATECOMPARE_ERROR_TEXT 列包含有关故障的扩展详细信息。
attribute_name ATTRIBUTE VARGRAPHIC (512)
CCSID 1200
可空
对象属性的名称或不相同的相对记录号 (RRN)。

COMPARE_RESULTCOMPAREDERROR时,包含空值。

主值 PRI_VALUE VARGRAPHIC (2048)
CCSID 1200
可空
主节点的值。

当使用 QUICK 选项的比较检测到差异时,包含值 DIFFERENT

COMPARE_RESULTCOMPAREDERROR 时包含空值

value_on_secondary(次要值 SEC_VALUE VARGRAPHIC (2048)
CCSID 1200
可空
二级节点的值。

当使用 QUICK 选项的比较检测到差异时,包含值 DIFFERENT

COMPARE_RESULTCOMPAREDERROR时,包含空值。

IASP_NAME IASP_NAME VARCHAR(10)
可为空
存储此对象的独立 ASP 组的名称。 包含 ASP 组的名称或以下特殊值:
*SYSBAS
该对象存储在系统 ASP (ASP 1) 或任何基本用户 ASP (ASP 2-32) 中。

COMPARE_RESULTERROR时包含空值。

开始更改包含状态结束更改 开始更改INC_STATE结束更改 开始更改VARCHAR(10)
可为空
结束更改
开始更改此对象的现有复制包含状态。
定义
该对象会包括在复制中。 只复制对象的定义属性。
EXCLUDE
将从复制中排除该对象。
INCLUDE
该对象会包括在复制中。 对象的定义属性和数据都会被复制。
不合格的
对象不符合复制条件。 由iasp-namelibrary-name对象类型对象名标识的对象的对象类型或属性都会使其不符合条件。

如果不存在包含状态,则包含空值。

结束更改
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');