

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用適用於 Linux、Unix、Windows 和 Amazon RDS 資料庫 (Db2 LUW) 的 IBM Db2 作為 的來源 AWS DMS
<a name="CHAP_Source.DB2"></a>

您可以使用 AWS Database Migration Service ()，將資料從適用於 Linux、Unix、Windows 和 Amazon RDS (Db2 LUW) 的 IBM Db2 資料庫遷移到任何支援的目標資料庫AWS DMS。

如需 AWS DMS 支援 做為來源的 Linux、Unix、Windows 和 RDS 上的 Db2 版本資訊，請參閱 [的來源 AWS DMS](CHAP_Introduction.Sources.md)。

您可以使用 Secure Sockets Layer (SSL) 加密您 Db2 LUW 端點與複寫執行個體之間的連線。如需使用 SSL 搭配 Db2 LUW 端點的詳細資訊，請參閱[搭配 使用 SSL AWS Database Migration Service](CHAP_Security.SSL.md)。

當 從 IBM Db2 來源資料庫 AWS DMS 讀取資料時，它會使用 Db2 9.7 版及更新版本的預設隔離層級 CURSOR 穩定性 (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 DB2 用於 LUW 9.7 版作為來源時，請如下所示，設定額外連線屬性 (ECA)，即 `CurrentLsn`：

  `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)。 *Amazon Relational Database Service *
+ 如果您使用 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 \+ DELETE。
+ 任務設定 **Include LOB columns in replication (在複寫中包含 LOB 資料行)** 啟用時，會在進行中複寫期間暫停任何有 LOB 資料行的資料表。
+ 針對 Db2 LUW 10.5 版和更新版本：忽略資料列不足儲存資料的變數長度字串資料行。此限制僅適用於針對 VARCHAR 和 VARGRAPHIC 等資料類型的資料欄，使用擴大資料列大小建立的資料表。若要解決此限制，請將資料表移至頁面大小較高的資料表空間。如需詳細資訊，請參閱[如果我想要變更 DB2 資料表空間的頁面尺寸，該怎麼辦]( https://www.ibm.com/support/pages/what-can-i-do-if-i-want-change-pagesize-db2-tablespaces )。
+ 對於進行中複寫，DMS 不支援遷移 DB2 LOAD 公用程式在頁面層級載入的資料。請改用使用 SQL 插入的 IMPORT 公用程式。如需詳細資訊，請參閱[匯入與載入公用程式之間的差異]( https://www.ibm.com/docs/en/db2/11.1?topic=utilities-differences-between-import-load-utility)。
+ 執行複寫任務時，只有當使用 DATA CAPTURE CHANGE 屬性建立資料表時，DMS 才會擷取 CREATE TABLE DDL。
+ DMS 使用 Db2 資料庫分割區功能 (DPF) 時有下列限制：
  + DMS 無法在 DPF 環境中跨 Db2 節點協調交易。這是因為 IBM DB2READLOG API 介面中的限制。在 DPF 中，交易可能會跨越多個 Db2 節點，取決於 DB2 分割資料的方式。因此，DMS 解決方案必須獨立擷取每個 Db2 節點的交易。
  + DMS 可以在多個 DMS 來源端點`1`上`connectNode`將 設定為 ，從 DPF 叢集中的每個 Db2 節點擷取本機交易。此組態對應至 DB2 伺服器組態檔案 中定義的邏輯節點號碼`db2nodes.cfg`。
  + 個別 Db2 節點上的本機交易可能是大型全域交易的一部分。DMS 會在目標上獨立套用每個本機交易，而不協調其他 Db2 節點上的交易。這種獨立處理可能會導致複雜性，特別是在分割區之間移動資料列時。
  + 當 DMS 從多個 Db2 節點複寫時，無法保證目標的正確操作順序，因為 DMS 會為每個 Db2 節點獨立套用操作。您必須確保獨立於每個 Db2 節點擷取本機交易適用於您的特定使用案例。
  + 從 DPF 環境遷移時，我們建議您先在沒有快取事件的情況下執行 Full Load 任務，然後執行僅限 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 （變更資料擷取），僅限從較早的起點啟動的複寫任務。在重新啟動 CDC 或 FULL\+CDC 任務時， 預設 AWS DMS 會啟用此屬性。不過，在任務重新啟動之前，在來源資料庫中所做的任何變更都可能會遺失。

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

AWS DMS 不支援從下列 DB2 系統結構描述遷移資料表：
+ `SYSIBM`
+ `SYSIBMADM`
+ `SYSCAT`
+ `SYSSTAT`
+ `SYSPROC`
+ `SYSFUN`
+ `SYSPUBLIC`
+ `SYSTOOLS`

這些結構描述包含無法擷取中繼資料的 DB2 系統目錄資料表 AWS DMS。如果您的資料表映射選取規則包含這些結構描述 - 例如，使用萬用字元模式，例如`%`結構描述名稱 - 遷移任務可能會失敗。

若要避免此問題，請在資料表映射規則中使用下列其中一種方法：
+ 僅指定您要在`include`規則中遷移的使用者結構描述。
+ 在`exclude`規則之前新增 DB2 系統結構描述的明確`include`規則。

下列範例顯示使用萬用字元模式排除 DB2 系統結構描述的資料表映射規則，然後包含所有剩餘的使用者結構描述。

```
	{
	  "rules": [
	    {
	      "rule-type": "selection",
	      "rule-id": "1",
	      "rule-name": "exclude-db2-system-schemas",
	      "object-locator": {
	        "schema-name": "SYS%",
	        "table-name": "%"
	      },
	      "rule-action": "exclude"
	    },
	    {
	      "rule-type": "selection",
	      "rule-id": "2",
	      "rule-name": "include-user-schemas",
	      "object-locator": {
	        "schema-name": "%",
	        "table-name": "%"
	      },
	      "rule-action": "include"
	    }
	  ]
	}
```

**注意：**在資料表映射規則中，`exclude`規則會在`include`規則之前進行評估。在此範例中，`exclude`規則 AWS DMS 會防止 在以 SYS 開頭的結構描述中選取任何資料表，而`include`規則則會選取其餘結構描述中的所有資料表。

## 使用 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 作為來源搭配使用的端點設定。


| 設定名稱 | Description | 
| --- | --- | 
| `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;'}}`

下表顯示您可以搭配 Db2 LUW 做為來源使用的 ECAs。


| 屬性名稱 | 描述 | 
| --- | --- | 
| `ConnectionTimeout` | 使用此 ECA 設定 Db2 LUW 端點的端點連線逾時，以秒為單位。預設值為 10 秒。<br />範例：`ConnectionTimeout=30;` | 
| `executeTimeout` | 設定 DB2 LUW 端點陳述式 （查詢） 逾時的額外連線屬性，以秒為單位。預設值為 60 秒。<br />範例：`executeTimeout=120;` | 
| `StartFromContext` | 對於進行中複寫 (CDC)，使用 `StartFromContext` 指定開始複寫的日誌下限。`StartFromContext` 會接受不同形式的值。有效值包含：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.DB2.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.DB2.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.DB2.html)<br />若要判斷日誌檔的 LRI/LSN 範圍，請如以下範例所示，執行 `db2flsn` 命令。<pre>db2flsn -db {{SAMPLE}} -lrirange 2</pre><br />範例中的輸出與以下內容類似。<pre><br />S0000002.LOG: has LRI range 00000000000000010000000000002254000000000004F9A6 to <br />000000000000000100000000000022CC000000000004FB13</pre><br />在該輸出中，日誌檔案是 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 | 
| 圖像 (n) | WSTRING，適用於長度大於 0 與小於或等於 127 的雙倍位元組字元的固定長度圖片字串 | 
| VARGRAPHIC (n) | WSTRING，適用於長度大於 0 與小於或等於 16,352 的雙倍位元組字元的變動長度圖片字串 | 
| LONG VARGRAPHIC (n) | CLOB，適用於長度大於 0 與小於或等於 16,352 的雙倍位元組字元的變動長度圖片字串 | 
| CHARACTER (n) | STRING，適用於長度大於 0 與小於或等於 255 的雙倍位元組字元的固定長度字串 | 
| VARCHAR (n) | STRING，適用於長度大於 0 與小於或等於 32,704 的雙倍位元組字元的變動長度字串 | 
| LONG VARCHAR (n) | CLOB，適用於長度大於 0 與小於或等於 32,704 的雙倍位元組字元的變動長度字串 | 
| 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<br />長度上限為 2,147,483,647 個位元組 | 
| CLOB(n) | CLOB<br />長度上限為 2,147,483,647 個位元組 | 
| DBCLOB (n) | CLOB<br />最大長度是 1,073,741,824 個雙位元組字元 | 
| XML | CLOB | 