# IBM DB2 for iSeries

本节介绍如何在数据任务中设置 IBM DB2 for iSeries 源。在开始数据任务之前，请确保已完成 [先决条件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/IBM4DB2-iseries/prereq-idb2.htm)，设置 [所需的权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/IBM4DB2-iseries/required_permissions_iseries.htm)，并熟悉 [限制和考虑事项](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Global_Common/Content/SharedReplicateHDD/IBM4DB2-iseries/iseries_limitations.htm)。

## 设置连接属性

本节介绍可用的连接属性。除非另有说明，否则所有属性都是必需的。

要打开连接器，请执行以下操作：

1. 在连接中单击创建连接。

2. 选择 IBM DB2 for iSeries 源连接器，然后提供以下设置：

### 数据源

* 数据网关

  选择用于移动您的数据 数据移动网关。

  有关 数据移动网关 的信息，请参阅[Qlik 数据网关 - 数据移动](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。

* 服务器：IBM DB2 for iSeries 服务器的 IP 地址或主机名。

### 帐户属性

* 用户名：访问 IBM DB2 for iSeries 服务器所需的用户名。

* 密码：访问 IBMDB2 for iSeries 服务器所需的密码。

### 数据库属性

* 使用表和架构系统名称： IBM DB2 for iSeries 源 连接器 基于表的 SQL 名称（不限长度）登陆表。如果您的 IBM DB2 for iSeries 数据库不使用 SQL 名称，那么您可能希望保留系统名称。
* 相对记录号 (RRN)： 请参阅下方的 [将 RRN 列添加到目标表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/IBM4DB2-iseries/IBM4DB2-iseries-source.htm#top)。

### CDC 属性

* 日记账名称： 包含源表的日记账的名称。

  另请参阅：[CDC 先决条件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/IBM4DB2-iseries/prereq-idb2.htm#CDC)

* 日志库：日志所在库的名称。

  另请参阅：[CDC 先决条件](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/IBM4DB2-iseries/prereq-idb2.htm#CDC)

* 在任务启动时跳过日志验证：从 IBM DB2 for iSeries 7.3 开始，Qlik Talend Data Integration 会自动验证指定的日志。这包括检查日志是否存在，以及它是否包含选定的要登录的表。当选择多个表进行登陆时，此过程可能需要一些时间。在这种情况下，如果您确定指定的日志存在并且它包含正确的表，则可能需要跳过验证阶段。

* 有关以下选项的信息，请参阅下面的[使用 R4I UDTF 进行更改捕获](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/IBM4DB2-iseries/IBM4DB2-iseries-source.htm#Using)。

  * 启用 UDTF 捕获
    * CDC 阅读器 UDTF 名称
    * UDTF 结果集大小 (MB)

* 检查更改间隔（秒）： 检查源数据库是否有更改的频率。

### 覆盖到代码页的 CCSID 映射

在 CCSID 到字符集映射字段中，用以下格式输入 CCSID 和代码页（用逗号分隔，不带空格）：

CCSID1,codepage1,CCSID2,codepage2,...

字符集（代码页）必须以正确的格式指定（例如 ibm-1148\_P100-1997）。有关有效格式的列表，请参阅 [ICU Converter Explorer](http://demo.icu-project.org/icu-bin/convexp)。

#### 转换为自定义代码页面

如果源数据集使用不正确的 CCSID 定义，并且正确的定义实际上在 UCM 文件中，请执行以下过程。

1. 在 数据移动网关 机器上：

   1. 如果未安装 ICU 包，请打开 shell 提示符并安装 [ICU 包](https://icu.unicode.org/home)。

   2. 将工作目录更改为 &lt;product\_dir&gt;/bin。

      默认 &lt;product\_dir&gt; 为 /opt/qlik/gateway/movement

   3. 创建文件扩展名为 **.ucm** 的映射数据文件。

      信息注释

      如果编辑现有 UCM 文件，还必须更改 `<code_set_name>` 和 `<icu:alias>` 属性的值。如果文件不包含 `<icu:alias>` 属性，则只需更改 `<code_set_name>` 属性的值。

   4. 通过运行以下命令为 UCM 文件创建 CNV 文件：

      `makeconv -v <file_name>.ucm`

      示例：

      `makeconv -v 1047_EX.ucm`

      这将创建一个与 UCM 文件同名的 CNV 文件（例如 1047\_EX.cnv）。

   5. 在 &lt;product\_dir&gt;/bin 下新建一个名为 icudt&lt;XX&gt;l 的子文件夹，其中的 XX 与 libicudata.so.&lt;XX&gt; 文件名中的数字相同。

      例如，如果共享对象文件名为 libicudata.so.69，则创建一个名为 icudt69l 的新子文件夹。

   6. 将 CNV 文件复制到刚才创建的子文件夹中（上例中的 &lt;product\_dir&gt;/bin/icudt69l）。

2. 在连接器对话框的 CCSID 到字符集映射字段中，输入原始源 CCSID 编号，然后输入不带扩展名的 CNV 文件名。

   ：

   1047,1047\_EX

3. 在数据移动网关 机器上，使用以下命令重新启动 数据移动网关 服务：

   sudo systemctl restart repagent

### 内部属性

内部属性用于特殊用例，因此不会在对话框中公开。只有在 Qlik 支持部门的指示下，您才应该使用它们。

使用字段右侧的 the 新建 icon 和 the 取消 icon 按钮可以根据需要添加或删除特性。

### 名称

安全连接的显示名称。

## 将 RRN 列添加到目标表

如果源表没有主键、唯一索引或可以用作唯一索引的列组合，则必须使用相对记录号 (RRN) 进行注册。

选择以下选项之一：

* 将 RRN 列添加到没有主键或唯一索引的目标表。RRN 列将自动成为目标表的主键。

* 将 RRN 列添加到所有目标表

* 不要将 RNN 列添加到目标表

要在自动提交模式下支持使用\* AFTER 图像记录的表的 DELETE 操作，请执行以下操作：

1. 启用将 RRN 列添加到所有目标表选项。

2. 将目标上的新 RRN 列标记为表的唯一主键（使用转换）。

   请注意，如果执行 DELETE 操作，添加 RRN 列而不将其标记为主键将导致表挂起。

当您选择其中一个“添加 RRN 列”选项时，更改表和目标表都将有一个额外的列，即 INTEGER 类型的 ATTREP\_RRN，该列包含每行的唯一值。此列包含对应于每个源表行的 RRN。

信息注释

IBM DB2 for iSeries RRN 值表示保存表数据的文件结构中行的确切位置。当重新组织表时，将重建该表，从而为每一行分配*新*的 RRN。因此，应尽可能避免将RRN用作目标密钥的表的重组。如果这种重组不可避免，则应立即重新加载重组的表，以防止在对目标应用更改时出现不可预测的行为（例如，失败的 DELETE、重复的 INSERT 等）。

## 使用 R4I UDTF 进行更改捕获

默认情况下，从 IBM DB2 for iSeries 捕获的更改在 Data Movement gateway 计算机上使用标准 display\_journal 函数进行筛选。当存在大量更改时，这可能会影响更改处理性能。

在 IBM DB2 for iSeries 上安装 R4I UDTF，可以在 IBM DB2 foriSeries 而不是 Data Movement gateway 计算机上筛选捕获的更改，从而显著提高 CDC 性能。

警告注释R4I UDTF 每个任务最多可以捕获 300 个表。如果每个任务需要捕获 300 多个表，请不要使用此选项。

使用 R4I UDTF 设置更改捕获：

1. 转到 [产品下载](https://community.qlik.com/t5/Downloads/tkb-p/Downloads)。

2. 选择 Qlik Data Integration。

3. 向下滚动产品列表并选择复制。

4. 在下载链接列中，单击 QlikReplicate\_\_R4I.zip 链接开始下载。

5. 在 IBM DB2 for iSeries 服务器上安装 R4I UDTF。

6. 选择启用 UDTF 捕获选项。

7. 如果在 R4I 安装期间更改了默认的 CD C读取器 UDTF 名称，请在 CDC 读出器 UDTF 名称字段中指定新名称。

8. 在 UDTF 结果集大小 (MB) 字段中，可以设置 R4I UDTF 返回的结果集缓冲区的最大大小。较大的结果集通常会提高性能，但也会影响 DB2 内存消耗。因此，如果您想增加结果集的大小，最佳做法是首先在测试环境中运行该任务，因为 DB2 上的内存不足可能会导致目标上的数据不一致（由于捕获了部分记录）。