MIRROR_COMPARE_OBJECT 表函数

MIRROR_COMPARE_OBJECT 表函数返回由 object-typelibrary-nameobject-name标识的对象的源节点与目标节点之间的差异。 该对象不需要是当前复制的对象。

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

Compare-attributes 为 YES 时:
  • 对于节点之间不同的每个属性,将返回一行。
  • 开始更改The attributes compared for an object vary based upon the 对象类型. 并非所有属性都有资格进行比较结束更改
  • 将 *DTAARA 对象中包含的值视为属性。
Compare-data 为 YES 时:
  • 对于 *DTAQ 对象,对于节点之间不同的数据队列中的每个项,将返回一行。
  • 对于符合复制条件的 *FILE 对象,节点之间每有一行数据不同,就会返回一行。 返回相对记录号 (RRN) 以标识行。
    • 具有活动行或列访问控制的文件,具有读触发器的文件以及处于检查暂挂状态的文件不适合进行数据比较。 将返回结果行以指示未执行数据比较。
    • 具有多个成员的文件 (包括分区表和源物理文件) 在定义中发现显着差异时,不适合进行数据比较。 所有成员名都必须匹配。 将返回结果行以指示未执行数据比较。
  • 对于 *OUTQ 对象,将为节点之间不同的每个假脱机文件返回一行。 比较使用 QSYS2.OUTPUT_QUEUE_ENTRIES_BASIC 视图。 不比较假脱机文件的内容。
  • 对于 *USRIDX 对象,对于在节点之间不同的用户索引中的每个项,将返回一行。
  • 对于 *USRSPC 对象,返回的行指示节点之间的用户空间是否不同。
Compare-dataCompare-attributes 为 QUICK 时:
  • 将返回单行,指示节点之间的对象至少存在一个差异。 返回的行中不包含有关差异类型的其他详细信息。

如果未找到任何差异,那么不会返回任何行。 如果对象不符合比较条件,则不会返回任何记录,同时返回 '01H53' 的 SQLSTATE 警告。 如果这两个节点上都不存在该对象,那么不会返回任何行以及错误 SQLSTATE "42704"。 如果节点没有通信,则不会返回任何记录,同时返回 '560DE' 的错误 SQLSTATE。

开始更改

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

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

结束更改
读取语法图跳过可视语法图 MIRROR_COMPARE_OBJECT ( 对象类型 =>  对象类型 ,库名 => 库名,object_name => 对象名,属性比较 => 比较属性,比较数据 => 比较数据,PARALLEL_DEGREE => 并行度 )
模式为 QSYS2。
对象类型
用于标识对象类型的字符或图形字符串表达式。
开始更改可以指定任何系统对象类型。 不过,以下符合复制条件的对象类型,如果从QSYS2.CHECK_REPLICATION_CRITERIA函数返回的值不是INELIGIBLE,则会被检测,以进行更稳健的比较操作。
*AUTL
权限列表。 library-name 必须是 QSYS 或必须省略。
*DTAARA
数据区,包括 SQL 序列属性
*DTAQ
数据队列
*ENVVAR
系统级别环境变量。 library-name 必须是 QSYS 或必须省略。
* FCNUSG
函数用法。 library-name 必须是 QSYS 或必须省略。
*文件
数据库文件
*JOBD
作业描述
*JOBQ
作业队列
*JRN
日志
*LIB
*OUTQ
输出队列
*PGM
程序,包括 SQL 例程属性
*SECATR
安全性属性。 library-name 必须是 QSYS 或必须省略。 object-name 必须为空或必须省略。
*SQLPKG
SQL程序包
*SQLUDT
SQL 用户定义的类型
*SQLXSR
SQL XML 模式存储库
*SRVPGM
服务程序,包括 SQL 例程属性
*SYSVAL
系统值。 library-name 必须是 QSYS 或必须省略。
*USRIDX
用户索引
*USRPRF
用户概要信息。 library-name 必须是 QSYS 或必须省略。
*USRSPC
用户空间
结束更改
库名
用于标识对象的库名的字符或图形字符串表达式。 如果省略此参数,那么缺省值为 QSYS。
对象名
用于标识要比较的对象的系统名称的字符或图形字符串表达式。 对于 *FCNUSG ,该名称是功能标识。 除 *SECATR 以外的所有对象类型都需要 object-name ; 对于 *SECATR 对象类型,将忽略 object-name 。 如果省略此参数,那么缺省值为 null。
比较属性

开始更改表示是否比较对象属性的字符或图形字符串表达式。 除*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC外,其他对象类型必须指定 YES 或 QUICK结束更改

不会比较对象的属性。
快速
将对对象的属性进行比较,直到找到第一个差异为止。 如果检测到任何差异,那么仅返回单行。 此选项更快,因为未返回完整的差异列表。
对对象的所有符合条件的属性进行比较。 针对找到的每个差异返回一行。 这是缺省情况。
比较数据
字符或图形字符串表达式,表示是否比较*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象的数据。 当对象类型不是*DTAQ、 *FILE、*OUTQ、*USRIDX 或 *USRSPC 时,compare-data将被忽略。
不比较对象的数据。
快速
比较*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象的数据,直到发现第一个差异。 如果检测到任何差异,那么仅返回单行。 此选项更快,因为未返回完整的差异列表。
*DTAQ、 *FILE、*OUTQ、*USRIDX 和 *USRSPC对象的所有数据进行比较。 针对找到的每个差异返回一行。 这是缺省情况。
并行度
用于指定用于比较对象的最大并行度的字符或图形字符串。

如果未安装 Db2® 对称多处理 (SMP) 功能部件,那么如果值不是 NONE ,那么将发出错误。

2-256
要使用的最大并行度。
将不使用并行性。 这是缺省情况。

此函数的结果是包含具有下表中所示格式的行的表。 所有列都是可空的。

表 1. MIRROR_COMPARE_OBJECT 表函数
列名 数据类型 描述
attribute_name VARGRAPHIC (512)
CCSID 1200
对象属性的名称或不相同的相对记录号 (RRN)。
主值 VARGRAPHIC (2048)
CCSID 1200
主节点的值。

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

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

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

示例

  • 列出库 APPLIB1中输出队列 MYOUTQ 的两个节点之间不同的所有符合复制条件的属性。 将不比较输出队列中假脱机文件的内容。
    SELECT * FROM TABLE(QSYS2.MIRROR_COMPARE_OBJECT(
                                           OBJECT_TYPE  => '*OUTQ',
                                           LIBRARY_NAME => 'APPLIB1',
                                           OBJECT_NAME  => 'MYOUTQ', 
                                           COMPARE_ATTRIBUTES => 'YES',
                                           COMPARE_DATA => 'NO'))
    ORDER BY ATTRIBUTE_NAME;
  • 对于库 TESTLIB 中的文件 TEST_TABLE ,查找两个节点之间不同的所有数据行。 将不会比较文件属性。
    SELECT * FROM TABLE(QSYS2.MIRROR_COMPARE_OBJECT(
                                           LIBRARY_NAME => 'TESTLIB',
                                           OBJECT_NAME  => 'TEST_TABLE',
                                           OBJECT_TYPE  => '*FILE',
                                           COMPARE_DATA => 'YES',
                                           COMPARE_ATTRIBUTES => 'NO'));