

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用适用于 Linux、Unix、Windows 的 IBM Db2 和亚马逊 RDS 数据库 (Db2 LUW) 作为来源 AWS DMS
<a name="CHAP_Source.DB2"></a>

您可以使用 () 将数据从适用于 Linux、Unix、Windows 和 Amazon RDS (Db2 LUW) 的 IBM Db AWS Database Migration Service 2 数据库迁移到任何支持的目标数据库。AWS DMS

有关 AWS DMS 支持作为源的 Linux、Unix、Windows 和 RDS 上的 Db2 版本的信息，请参阅[的来源 AWS DMS](CHAP_Introduction.Sources.md)。

可以使用安全套接字层 (SSL) 加密 Db2 LUW 端点与复制实例之间的连接。有关将 SSL 用于 Db2 LUW 终端节点的更多信息，请参阅[将 SSL 与 AWS Database Migration Service](CHAP_Security.SSL.md)。

从 IBM Db2 源数据库 AWS DMS 读取数据时，它会使用 Db2 版本 9.7 及更高版本的默认隔离级别 CURSOR STABILITY (CS)。有关更多信息，请参阅[适用于 Linux、UNIX 和 Windows 的 IBM Db2](https://www.ibm.com/docs/en/db2/12.1.0) 文档。

## 使用 Db2 LUW 作为源时的先决条件 AWS DMS
<a name="CHAP_Source.DB2.Prerequisites"></a>

需要先满足以下先决条件，然后才能将 Db2 LUW 数据库作为源。

要启用持续复制（也称为更改数据捕获 (CDC)），请执行以下操作：
+ 将数据库设置为可恢复，这 AWS DMS 需要捕获更改。如果数据库配置参数 `LOGARCHMETH1` 和/或 `LOGARCHMETH2` 设置为 `ON`，则数据库是可恢复的。

  如果您的数据库是可恢复的，则 AWS DMS 可以在`ARCHIVE LOG`需要时访问 Db2。
+ 确保 DB2 事务日志可用，并有足够的保留期供其处理 AWS DMS。
+ DB2 需要`SYSADM`或`DBADM`授权才能提取事务日志记录。向用户账户授予以下权限：
  + `SYSADM` 或 `DBADM`
  + `DATAACCESS`
**注意**  
对于仅完全加载任务，DMS 用户账户需要 DATAACCESS 权限。
+ 使用 IBM f DB2 or LUW 版本 9.7 作为源时，请按`CurrentLsn`如下方式设置额外连接属性 (ECA)：

  `CurrentLsn=LSN`，这里的 `LSN` 指定要在其中启动复制的日志序列号（LSN）。或者 `CurrentLsn=scan`。
+ 使用 Amazon RDS for Db2 LUW 作为源时，请确保存档日志可供使用。 AWS DMS由于 AWS托管的 Db2 数据库会尽快清除存档日志，因此您应该延长日志的可用时间。例如，要将日志保留时间延长至 24 小时，请运行以下命令：

  ```
  db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '24')"
  ```

  有关 Amazon RDS for Db2 LUW 过程的更多信息，请参阅《Amazon Relational Database Service 用户指南》**中的 [Amazon RDS for Db2 存储过程参考](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-stored-procedures.html)。
+ 如果您使用特 DB2 定的预迁移评估，请授予以下权限：

  ```
  GRANT CONNECT ON DATABASE TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBM.SYSDUMMY1 TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.ENV_INST_INFO TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.DBCFG TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.SCHEMATA TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.COLUMNS TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.TABLES TO USER <DMS_USER>;
  GRANT EXECUTE ON FUNCTION SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID TO <DMS_USER>;
  GRANT EXECUTE ON PACKAGE NULLID.SYSSH200 TO USER <DMS_USER>;
  ```

## 使用 Db2 LUW 作为源代码时的限制 AWS DMS
<a name="CHAP_Source.DB2.Limitations"></a>

AWS DMS 不支持群集数据库。但是，您可以为集群的每个终端节点定义一个单独的 Db2 LUW。例如，您可以使用集群中的任何一个节点创建完全加载迁移任务，然后从每个节点创建单独的任务。

AWS DMS 不支持您的源 Db2 LUW 数据库中的`BOOLEAN`数据类型。

在使用持续复制 (CDC) 时，以下限制将适用：
+ 当包含多个分区的表被截断时， AWS DMS 控制台中显示的 DDL 事件数等于分区数。这是因为 Db2 LUW 为每个分区记录一个单独的 DDL。
+ 已分区表上不支持以下 DDL 操作：
  + ALTER TABLE ADD PARTITION
  + ALTER TABLE DETACH PARTITION
  + ALTER TABLE ATTACH PARTITION
+ AWS DMS 不支持从 DB2高可用性灾难恢复 (HADR) 备用实例进行持续的复制迁移。备用实例无法访问。
+ 不支持 DECFLOAT 数据类型。因此，在持续复制期间，将忽略对 DECFLOAT 列所做的更改。
+ 不支持 RENAME COLUMN 语句。
+ 对多维聚类 (MDC) 表执行更新时，每次更新都会在 AWS DMS 控制台中显示为 INSERT \$1 DELETE。
+ 如果未启用任务设置 **Include LOB columns in replication (在复制中包含 LOB 列)**，则将在持续复制期间暂停任何具有 LOB 列的表。
+ 对于 Db2 LUW 版本 10.5 及更高版本，将忽略包含存储数据的可变长度字符串列。 out-of-row此限制仅适用于对于具有 VARCHAR 和 VARGRAPHIC 等数据类型的列，那些使用扩展行大小创建的表。要解决此限制，请将表移至具有较大页面大小的表格空间。有关更多信息，请参阅[如果我想更改 DB2 表空间的页面大小，该怎么办]( https://www.ibm.com/support/pages/what-can-i-do-if-i-want-change-pagesize-db2-tablespaces )。
+ 对于持续复制，DMS 不支持迁移 LOAD 实用程序在页面级别 DB2 加载的数据。相反，请使用 IMPORT 实用程序，该实用程序使用 SQL 插入。有关更多信息，请参阅 [IMPORT 和 LOAD 实用程序之间的区别]( https://www.ibm.com/docs/en/db2/11.1?topic=utilities-differences-between-import-load-utility)。
+ 在运行复制任务时， DDLs 只有在创建表时使用 DATA CAPTURE CHANGE 属性创建时，DMS 才会捕获 CREATE TABLE。
+ DMS 在使用 Db2 数据库分区特征（DPF）时有以下限制：
  + 在 DPF 环境中，DMS 无法在 Db2 节点之间协调事务。这是由于 IBM DB2 READLOG API 接口中的限制造成的。在 DPF 中，事务可能跨越多个 Db2 节点，具体取决于数据的 DB2 分区方式。因此，您的 DMS 解决方案必须独立地从每个 Db2 节点捕获事务。
  + 通过在多个 DMS 源端点上将 `connectNode` 设置为 `1`，DMS 可以从 DPF 集群中的每个 Db2 节点捕获本地事务。此配置对应于 DB2 服务器配置文件中定义的逻辑节点号`db2nodes.cfg`。
  + 单个 Db2 节点上的本地事务可能是更大的全局事务的一部分。DMS 在目标上独立应用每个本地事务，无需与其他 Db2 节点上的事务进行协调。这种独立的处理可能会增加复杂性，尤其是在分区之间移动行时。
  + 当 DMS 从多个 Db2 节点复制时，无法保证目标上的操作顺序正确，因为 DMS 会独立地为每个 Db2 节点应用操作。您必须确保独立地从每个 Db2 节点捕获本地事务适用于您的特定使用案例。
  + 从 DPF 环境迁移时，建议先运行不带缓存事件的完全加载任务，然后运行仅 CDC 任务。我们建议每个 Db2 节点运行一个任务，从您使用`StartFromContext`端点额外连接属性设置的满载开始时间戳或 LRI（日志记录标识符）开始。有关确定复制开始点的信息，请参阅 *IBM 支持文档*中的[查找复制开始的 LSN 或 LRI 值](https://www.ibm.com/support/pages/db2-finding-lsn-or-lri-value-replication-start)。
+ 对于持续复制 (CDC)，如果您计划从特定时间戳开始复制，则必须将`StartFromContext`额外连接属性设置为所需的时间戳。
+ 目前，DMS 不支持 Db2 pureScale 功能，该功能是 DB2 LUW 的扩展，可用于扩展数据库解决方案。
+ `DATA CAPTURE CHANGES`表选项是 DB2 数据复制过程的关键先决条件。创建表时忽略启用此选项可能会导致数据丢失，特别是对于仅限从较早起点启动的 CDC（更改数据捕获）复制任务。 AWS DMS 将在重启 CDC 或 FULL\$1CDC 任务时默认启用此属性。但是，在任务重新启动之前在源数据库中所做的任何更改都可能被遗漏。

  ```
  ALTER TABLE TABLE_SCHEMA.TABLE_NAME DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
  ```

## 使用 Db2 LUW 作为源时的端点设置 AWS DMS
<a name="CHAP_Source.DB2.ConnectionSettings"></a>

您可以在使用 AWS DMS 控制台创建源端点时指定设置，也可以使用中的`create-endpoint`[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html)命令和

`--ibm-db2-settings '{"EndpointSetting1": "value1","EndpointSetting2": "value2"}'`

JSON 语法。

下表显示了将 Db2 LUW 用作源时可以使用的端点设置。


| 设置名称 | 说明 | 
| --- | --- | 
|  `CurrentLsn`  |  对于持续复制 (CDC)，请使用 `CurrentLsn` 指定要在其中启动复制的日志序列号 (LSN)。  | 
|  `MaxKBytesPerRead`  |  每次读取的最大字节数，以 NUMBER 值表示。默认值为 64 KB。  | 
|  `SetDataCaptureChanges`  |  启用持续复制 (CDC) 作为 BOOLEAN 值。默认值为 true。  | 

## 使用 Db2 LUW 作为源时的额外连接属性 (ECAs) AWS DMS
<a name="CHAP_Source.DB2.ConnectionAttrib"></a>

在使用 AWS DMS 控制台创建源端点时，可以指定额外连接属性 (ECAs)，也可以使用中的`create-endpoint`[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html)命令和

`--extra-connection-attributes 'ECAname1=value1;ECAname2=value2;'`

下表显示了可以 ECAs 与 Db2 LUW 一起用作源的。


| 属性名称 | 说明 | 
| --- | --- | 
|  `ConnectionTimeout`  |  使用此 ECA 设置 Db2 LUW 端点的端点连接超时（以秒为单位）。默认值为 10 秒。 示例：`ConnectionTimeout=30;`  | 
|  `executeTimeout`  |  额外的连接属性，用于设置 DB2 LUW 端点的语句（查询）超时，以秒为单位。默认值为 60 秒。 示例：`executeTimeout=120;`  | 
|  `StartFromContext`  |  对于持续复制（CDC），请使用 `StartFromContext` 指定日志的下限，复制将从此位置开始。`StartFromContext` 接受不同格式的值。有效值包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Source.DB2.html) 要确定日志文件的 LRI/LSN 范围，请按以下示例所示运行`db2flsn`命令。 <pre>db2flsn -db SAMPLE -lrirange 2</pre> 该示例的输出类似于以下内容。 <pre><br />S0000002.LOG: has LRI range 00000000000000010000000000002254000000000004F9A6 to <br />000000000000000100000000000022CC000000000004FB13</pre> 在该输出中，日志文件为 S0000002 .LOG，**StartFromContext**LRI 值为范围末尾的 34 字节。 <pre>0100000000000022CC000000000004FB13</pre>  | 

## IBM Db2 LUW 的源数据类型
<a name="CHAP_Source.DB2.DataTypes"></a>

使用 Db2 LUW 作为源的数据迁移 AWS DMS 支持大多数 Db2 LUW 数据类型。下表显示了使用时支持的 Db2 LUW 源数据类型 AWS DMS 以及 AWS DMS 数据类型的默认映射。有关 Db2 LUW 数据类型的更多信息，请参阅 [Db2 LUW 文档](https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008483.html)。

有关如何查看目标中映射的数据类型的信息，请参阅使用的目标终端节点对应的部分。

有关 AWS DMS 数据类型的更多信息，请参见[AWS Database Migration Service 的数据类型](CHAP_Reference.DataTypes.md)。


|  Db2 LUW 数据类型  |  AWS DMS 数据类型  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s)  | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  如果精度为 16，则 REAL8；如果精度为 34，则为 STRING  | 
|  GRAPHIC (n)  |  WSTRING，用于长度大于 0 且小于或等于 127 个双字节字符的固定长度图形字符串  | 
|  VARGRAPHIC (n)  |  WSTRING，用于长度大于 0 且小于或等于 16352 个双字节字符的可变长度图形字符串  | 
|  LONG VARGRAPHIC (n)  |  CLOB，用于长度大于 0 且小于或等于 16352 个双字节字符的可变长度图形字符串  | 
|  CHARACTER (n)  |  STRING，用于长度大于 0 且小于或等于 255 个双字节字符的固定长度字符串  | 
|  VARCHAR (n)  |  STRING，用于长度大于 0 且小于或等于 32704 个双字节字符的可变长度字符串  | 
|  LONG VARCHAR (n)  |  CLOB，用于长度大于 0 且小于或等于 32704 个双字节字符的可变长度字符串  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  DATETIME  | 
|  BLOB (n)  |  BLOB 最大长度为 2147483647 个字节  | 
|  CLOB (n)  |  CLOB 最大长度为 2147483647 个字节  | 
|  DBCLOB (n)  |  CLOB 最大长度为 1073741824 个双字节字符  | 
|  XML  |  CLOB  | 