Db2 LUW:支持的数据类型、对象和操作
本节包含有关 Db2 LUW 上 Oracle GoldenGate 支持的数据类型、对象和操作的信息。
支持的 Db2 LUW 数据类型
Oracle GoldenGate 支持所有 Db2 LUW 数据类型,但 Non-Supported Db2 LUW Data Types 中列出的类型除外。
支持的限制
对于支持 Db2 LUW 数据类型,Oracle GoldenGate 有以下限制:
-
Oracle GoldenGate 支持存储在字符列中的多字节字符数据类型和多字节数据。多字节数据仅在类似配置中受支持。多字节字符数据不支持转换、过滤和其他类型的处理。
-
BLOB和CLOB列的定义中必须包含LOGGED子句。 -
由于 IBM DB2READLOG 接口的限制,Oracle GoldenGate 不支持在 Db2 数据库分区功能 (Database Partitioning Feature,DPF) 环境中跨节点协调事务。在 DPF 中,一个事务可以跨多个节点,具体取决于数据的分区方式。
但是,如果您需要从中获取数据,则可以有限制地执行此操作。请查看 Oracle 支持说明 Oracle GoldenGate 是否支持 DB2 LUW 数据分区功能 (DPF)? (DocID 2763006.1)。
-
GRAPHIC和VARGRAPHIC列必须位于字符集为 UTF16 的数据库中。任何其他字符集都会导致 Oracle GoldenGate 异常终止。 -
浮点数对范围和精度的支持取决于主机。一般来说,精度精确到 16 位有效数字,但应查看数据库文档以确定预期的近似值。Oracle GoldenGate 舍入或截断超过支持精度的值。
-
当输出线索格式为 19.1 或更高时,提取完全支持捕获和应用
TIMESTAMP(0)到TIMESTAMP(12)。否则,提取会将数据从TIMESTAMP(10)到TIMESTAMP(12)截断到 nanoseconds(最长为 9 位小数时间),并向报告文件发出警告。 -
Oracle GoldenGate 支持从 0001/01/03:00:00 到 9999/12/31:23:59:59 的时间戳数据。如果时间戳从 GMT 转换为本地时间,则这些限制也适用于生成的时间戳。根据时区,转换可能会增加或减去小时数,这可能会导致时间戳超过支持的下限或上限。
-
Oracle GoldenGate 不支持对大于 4K 的大型对象进行过滤、列映射或操作。您可以对 4K 或更小的对象使用完整的 Oracle GoldenGate 功能。
-
支持在源数据库和目标数据库之间复制具有相同字符集的 XML 列。如果源数据库字符集和目标数据库字符集不同,则 XML 复制可能会失败,并显示数据库错误,因为目标数据库字符集中的某些字符可能无法识别(或无效)。
-
Oracle GoldenGate 不会认证如何从 Db2 LUW 列组织的表中捕获更改。
-
DECFLOAT数据类型支持NaN、sNaN和Infinity/-Infinity特殊数值。有关按支持特殊值的数据库列出的数据类型的详情,请参阅数据库数据类型支持的特殊值。
不支持的 Db2 LUW 数据类型
不支持的 Db2 LUW 数据类型为:
-
XMLType(捕获) -
用户定义类型
-
负日期
Db2 LUW 的受支持对象和操作
Db2 LUW 支持的对象和操作包括:
-
Oracle GoldenGate Extract 支持在不同字节顺序服务器上运行数据库和 Oracle GoldenGate 的跨端捕获。对于 Db2 LUW 版本 10.5 或更高版本,将自动检测字节顺序。如果不需要对 Db2 LUW 10.5 数据库执行 Db2 数据库自动检测,则可以通过指定
TRANLOGOPTIONS MIXEDENDIAN [ON|OFF]参数来覆盖该数据库。对于 Db2 LUW 版本 10.1,此参数必须在提取参数文件中用于跨端捕获。有关详细信息,请参阅 TRANLOGOPTIONS 。 -
支持 Db2 pureScale 环境。
-
Oracle GoldenGate 支持数据库支持的每个表的最大列数和列大小。
-
TRUNCATE TABLE. -
多维群集表 (Multi-Dimensional Clustered Tables,MDC)。
-
实体化查询表Oracle GoldenGate 不会复制 MQT 本身,而只会复制基表。目标数据库根据复制应用于基表的更改自动维护 MQT 的内容。
-
包含
ROW COMPRESSION的表。在 Db2 LUW 版本 10.1 及更高版本中,支持COMPRESS YES STATIC,支持COMPRESS YES ADAPTIVE。 -
默认情况下会启用扩展行大小功能。解决方法支持使用
FETCHCOLS。对于VARCHAR或VARGRAPHIC数据类型并且存储在数据库中的行之外的任何列值,必须通过使用提取参数文件中的TABLE参数中的FETCHCOLS选项指定这些列来提取这些扩展行。设置此选项后,当列值超出行时,Oracle GoldenGate 将提取其值。如果该值已超出并且未指定FETCHCOLS,则提取将异常终止以防止任何数据丢失。如果不想使用此功能,请将extended_row_size参数设置为DISABLE。默认情况下,会启用扩展行大小功能。对于 Db2 LUW 10.1,可以使用
FETCHCOLS进行解决。对于VARCHAR或VARGRAPHIC数据类型并且存储在数据库中的行之外的任何列值,必须通过使用提取参数文件中的TABLE参数中的FETCHCOLS选项指定这些列来提取这些扩展行。设置此选项后,当列值超出行时,Oracle GoldenGate 将获取其值。如果值已超出且未指定FETCHCOLS,则提取将异常终止,以防止任何数据丢失。如果不想使用此功能,请将extended_row_size parameter设置为DISABLE。对于 Db2 LUW 10.5 和更高行值,提取可无缝捕获。从这些数据库版本中捕获行列时不再需要FETCHCOLS。 -
支持具有 Db2 LUW 10.1 FixPack 2 及更高版本的时间表。这是复制的默认设置。
-
不支持在系统期间时间表和应用程序期间时间表之间复制。
-
不支持从非时间表复制到时间表。
-
不支持使用
INSERTALLRECORDS参数复制时间表。 -
仅默认复制支持双向复制。
-
不支持双向复制中的 CDR。
-
支持应用程序期间时间表中的 CDR。
-
-
SEND EXTRACT SHOWTRANS\SKIPTRANS\FORCETRANS命令支持以下选项:SHOWTRANS命令支持的选项SHOWTRANS [transaction_ID] [COUNT n] [DURATION duration unit] [TABULAR][FILE file_name] |选项包括
SKIPTRANS和FORCETRANS。SKIPTRANS transaction_ID [FORCE] FORCETRANS transaction_ID [FORCE] -
自动心跳表支持的限制如下:
-
不支持
[THREAD n][DETAIL]。 -
Oracle GoldenGate 心跳参数频率和清除频率以秒和天为单位接受。但是,Db2 LUW 任务调度程序仅接受 cron 格式的调度,因此 Oracle GoldenGate 输入值到 cron 格式可能会导致某些准确性损失。例如:
-
ADD HEARTBEATTABLE, FREQUENCY 150, PURGE_FREQUENCY 20
This example sets the `FREQUENCY` to 150 seconds, which is converted to the closest minute value of 2 minutes, so the heartbeat table is updated every 120 seconds instead of every 150 seconds. Setting `PURGE_FREQUENCY` to 20 means that the history table is purged at midnight on every 20th day.
-
要运行心跳调度任务,需要执行以下步骤:
-
将
DB2_ATS_ENABLE注册表变量设置为db2set DB2_ATS_ENABLE=YES。 -
如果
SYSTOOLSPACE表空间尚不存在,则创建该表空间:
CREATE TABLESPACE SYSTOOLSPACE IN IBMCATGROUP MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 4-
确保实例所有者具有数据库管理权限 (DBADM):
GRANT DBADM ON DATABASE TOinstance_owner_name
-
Db2 LUW 的不受支持对象和操作
Oracle GoldenGate 不支持的 Db2 LUW 的对象和操作包括:
-
具有尾随空格的方案、表名或列名
-
数据库的多个实例
-
DDL(数据定义语言)操作的提取或复制
-
生成的列(
GENERATE ALWAYS子句) -
DB2 不支持数据分区功能 (Data Partitioning Feature,DFF)。DPF 不提供一种在分区中的所有节点上以协调的方式读取日志记录的方法。因此,无法确保即使所有节点都使用单独的提取进行复制,也可以确保所有事务处理中的所有记录都按正确的时间顺序进行应用。这可能是由于许多因素造成的,包括数据库和底层操作系统中的缓存不允许 Extracts 能够了解是否存在任何可能影响记录操作在所有分区中的排序的缓存条目和尚不可见的条目。由于这种不确定性,无法确保能够以一致的方式复制跨分区或主键更新的事务处理。
系统方案
除非在没有通配符的情况下显式指定以下方案或对象,否则 Oracle GoldenGate 不会自动复制它们。
-
"SYSIBM" -
"SYSCAT" -
"SYSSTAT" -
"SYSPROC" -
"SYSFUN" -
"SYSIBMADMIN" -
"SYSTOOLS" -
"SYSPUBLIC"
支持的对象名称
有关对象名称中支持的字符的列表,请参阅支持的数据库对象名称。