

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 「データ移行のソース」
<a name="CHAP_Source"></a>

AWS Database Migration Service (AWS DMS) は、最も人気のあるデータエンジンの多くをデータレプリケーションのソースとして使用できます。データベースソースには、Amazon EC2 インスタンスまたはオンプレミスのデータベースで実行されているセルフ マネージド エンジンを使用できます。または、Amazon RDS や Amazon S3 などの AWS サービスのデータソースにすることもできます。

有効なソースの一覧については、「[AWS DMSのソース](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.title)」をご参照ください。

**Topics**
+ [のソースとしての Oracle データベースの使用 AWS DMS](CHAP_Source.Oracle.md)
+ [のソースとしての Microsoft SQL Server データベースの使用 AWS DMS](CHAP_Source.SQLServer.md)
+ [のソースとしての Microsoft Azure SQL データベースの使用 AWS DMS](CHAP_Source.AzureSQL.md)
+ [のソースとしての Microsoft Azure SQL マネージドインスタンスの使用 AWS DMS](CHAP_Source.AzureMgd.md)
+ [のソースとして Microsoft Azure Database for PostgreSQL Flexible Server を使用する AWS DMS](CHAP_Source.AzureDBPostgreSQL.md)
+ [Microsoft Azure Database for MySQL Flexible Server を のソースとして使用する AWS DMS](CHAP_Source.AzureDBMySQL.md)
+ [のソースとしての OCI MySQL Heatwave の使用 AWS DMS](CHAP_Source.heatwave.md)
+ [のソースとしての Google Cloud for MySQL の使用 AWS DMS](CHAP_Source.GC.md)
+ [のソースとしての Google Cloud for PostgreSQL の使用 AWS DMS](CHAP_Source.GCPostgres.md)
+ [PostgreSQL データベースを AWS DMS ソースとして使用する](CHAP_Source.PostgreSQL.md)
+ [のソースとしての MySQL 互換データベースの使用 AWS DMS](CHAP_Source.MySQL.md)
+ [のソースとしての SAP ASE データベースの使用 AWS DMS](CHAP_Source.SAP.md)
+ [のソースとしての MongoDB の使用 AWS DMS](CHAP_Source.MongoDB.md)
+ [のソースとしての Amazon DocumentDB (MongoDB 互換) の使用 AWS DMS](CHAP_Source.DocumentDB.md)
+ [のソースとしての Amazon S3 の使用 AWS DMS](CHAP_Source.S3.md)
+ [IBM Db2 for Linux、Unix、Windows、Amazon RDS データベース (Db2 LUW) を のソースとして使用する AWS DMS](CHAP_Source.DB2.md)
+ [IBM Db2 for z/OS データベースを のソースとして使用する AWS DMS](CHAP_Source.DB2zOS.md)

# のソースとしての Oracle データベースの使用 AWS DMS
<a name="CHAP_Source.Oracle"></a>

を使用して、1 つ以上の Oracle データベースからデータを移行できます AWS DMS。ソースとして Oracle データベースを使用すると、 AWS DMSが対応しているどのターゲットにもデータを移行できます。

AWS DMS は、次の Oracle データベースエディションをサポートしています。
+ Oracle Enterprise Edition
+ Oracle Standard Edition
+ Oracle Express Edition
+ Oracle Personal Edition

がソースとして AWS DMS サポートする Oracle データベースのバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「[Oracle エンドポイントでの SSL のサポート](#CHAP_Security.SSL.Oracle)」を参照してください。

AWS DMS では、Oracle 透過的なデータ暗号化 (TDE) を使用して、ソースデータベースに保管中のデータを暗号化できます。Oracle ソースエンドポイントで Oracle TDE を使用する方法については、「[Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS](#CHAP_Source.Oracle.Encryption)」をご参照ください。

AWS は、Oracle エンドポイント (および他のすべてのエンドポイントタイプ) での TLS バージョン 1.2 以降の使用をサポートし、TLS バージョン 1.3 以降を使用することをお勧めします。

Oracle データベースを AWS DMS ソースエンドポイントとして設定するには、次の手順に従います。

1. が Oracle ソースデータベースにアクセス AWS DMS するための適切なアクセス許可を持つ Oracle ユーザーを作成します。

1. 選択した Oracle データベース設定に準拠する Oracle ソース エンドポイントを作成します。全ロードのみのタスクを作成する場合、これ以上設定は必要ありません。

1. 変更データキャプチャ (CDC のみまたは全ロードおよび CDC タスク) を処理するタスクを作成するには、Oracle LogMiner または AWS DMS Binary Reader を選択してデータ変更をキャプチャします。LogMiner または Binary Reader を選択すると、それ以降のアクセス許可と設定オプションのいくつかが決定されます。LogMiner と Binary Reader の比較については、次のセクションをご参照ください。

**注記**  
全ロードタスク、CDC のみのタスク、および全ロードおよび CDC タスクの詳細については、「[[Creating a task] (タスクの作成)](CHAP_Tasks.Creating.md)」をご参照ください。

Oracle ソースデータベースと の操作の詳細については AWS DMS、以下のセクションを参照してください。

**Topics**
+ [CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC)
+ [のセルフマネージド型または AWSマネージド型の Oracle ソースデータベースを設定するためのワークフロー AWS DMSOracle ソースデータベースの設定](#CHAP_Source.Oracle.Workflows)
+ [のソースとしての自己管理型 Oracle データベースの使用 AWS DMS](#CHAP_Source.Oracle.Self-Managed)
+ [のソースとしての AWSマネージド Oracle データベースの使用 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed)
+ [のソースとして Oracle を使用する場合の制限 AWS DMS](#CHAP_Source.Oracle.Limitations)
+ [Oracle エンドポイントでの SSL のサポート](#CHAP_Security.SSL.Oracle)
+ [Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS](#CHAP_Source.Oracle.Encryption)
+ [Oracle を のソースとして使用するためのサポートされている圧縮方法 AWS DMS](#CHAP_Source.Oracle.Compression)
+ [Oracle を のソースとして使用してネストされたテーブルをレプリケートする AWS DMS](#CHAP_Source.Oracle.NestedTables)
+ [Oracle を のソースとして使用する場合の Oracle ASM への REDO の保存 AWS DMS](#CHAP_Source.Oracle.REDOonASM)
+ [のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)
+ [Oracle のソースデータ型](#CHAP_Source.Oracle.DataTypes)

## CDC での Oracle LogMiner または AWS DMS Binary Reader の使用
<a name="CHAP_Source.Oracle.CDC"></a>

では AWS DMS、Oracle の変更データキャプチャ (CDC) をソースとして実行する際に REDO ログを読み取るには、Oracle LogMiner と AWS DMS Binary Reader の 2 つの方法があります。LogMiner は、オンライン REDO ログとアーカイブ REDO ログファイルを読み取るための Oracle API です。Binary Reader は、raw REDO ログファイルを直接読み取り、解析する AWS DMS メソッドです。これらのメソッドには次の特徴があります。


| 機能 | LogMiner | Binary Reader | 
| --- | --- | --- | 
| 設定しやすい | はい | なし | 
| ソースシステムのI/Oと CPU への影響軽減 | いいえ | はい | 
| CDC パフォーマンスの向上 | いいえ | はい | 
| Oracle テーブル クラスターのサポート | はい | なし | 
| すべてのタイプの Oracle ハイブリッド列圧縮（HCC）をサポート | はい |  部分的 バイナリリーダーは CDC のタスクで QUERY LOW をサポートしていません。他のすべての HCC タイプが完全にサポートされています。  | 
| Oracle 12c でのみ LOB カラムのサポート | いいえ (LOB サポートは Oracle 12c の LogMiner では利用不可) | はい | 
| LOB カラムにのみ影響を与える UPDATE ステートメントに対応 | いいえ | はい | 
| Oracle Transparent データ暗号化 (TDE) に対応 |  部分的 Oracle LogMiner を使用する場合、 AWS DMS は Amazon RDS for Oracle の列レベルで TDE 暗号化をサポートしていません。  |  部分的 Binary Reader は、自己管理 Oracle データベースに対してのみ TDE をサポートします。  | 
| すべての Oracle 圧縮法に対応 | はい | なし | 
| XA トランザクションに対応 | いいえ | はい | 
| RAC |  はい パフォーマンス上の理由や DMS の内部制限事項により、推奨されません。  |  はい 強く推奨  | 

**注記**  
デフォルトでは、 は (CDC) に Oracle LogMiner AWS DMS を使用します。  
AWS DMS は、Oracle ソースデータベースを使用する際に透過的なデータ暗号化 (TDE) メソッドをサポートしています。指定した TDE 認証情報が正しくない場合でも、 AWS DMS の移行タスクは失敗しません。これにより、暗号化されたテーブルの継続的なレプリケーションに影響が及ぶ可能性があります。TDE 認証情報の指定の詳細については、「[Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS](#CHAP_Source.Oracle.Encryption)」を参照してください。

で LogMiner を使用する主な利点 AWS DMS は次のとおりです。
+ LogMiner では、暗号化オプションや圧縮オプションなど、ほとんどの Oracle オプションがサポートされています。Binary Reader では、すべての Oracle オプションがサポートされているわけではありません (特に圧縮とほとんどの暗号化のオプション)。
+ LogMiner には、特に Binary Reader の直接アクセスセットアップや、REDO ログが Oracle Automatic Storage Management (ASM) を使用して管理されている場合と比較して、シンプルな設定になっています。
+ LogMiner は、 で使用するテーブルクラスターをサポートしています AWS DMS。Binary Reader はサポートしません。

で Binary Reader を使用する主な利点 AWS DMS は次のとおりです。
+ 大量の変更を含む移行の場合、LogMiner は Oracle ソースデータベースをホストするコンピュータの I/O や CPU にある程度の影響を及ぼすことがあります。Binary Reader では、ログが複数のデータベース クエリを行うのではなく、直接マイニングされるため、I/O や CPU に影響を与える可能性が高くありません。
+ 大量の変更を含む移行の場合、Oracle LogMiner を使用するより Binary Reader を使用した方が CDC のパフォーマンスが通常はかなり高くなります。
+ Binary Reader では、Oracle バージョン 12c における LOB の CDC がサポートされています。LogMiner ではサポートされていません。

通常、次のいずれかの状況に該当しない限り、Oracle データベースの移行には Oracle LogMiner を使用します。
+ ソース Oracle データベースで複数の移行タスクを実行する必要がある。
+ ソース Oracle データベース上の変更のボリュームまたは REDO ログボリュームが多いか、または変更があり、Oracle ASM も使用している場合。

**注記**  
Oracle LogMiner と AWS DMS Binary Reader の使用を切り替える場合は、必ず CDC タスクを再起動してください。

### Oracle ソース データベースでの CDC の設定
<a name="CHAP_Source.Oracle.CDC.Configuration"></a>

Oracle ソース エンドポイントが変更データ キャプチャ (CDC) タスクでデータベースに接続するには、特に追加の接続属性を指定する必要があります。これは、全ロードタスクと CDC タスク、または CDC のみのタスクに当てはまります。指定する追加の接続属性は、REDO ログへのアクセスに使用する方法、Oracle LogMiner または AWS DMS Binary Reader によって異なります。

ソース エンドポイントを作成するときに追加の接続属性を指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります (例: `oneSetting;thenAnother`)。

AWS DMS はデフォルトで LogMiner を使用します。これを使用するために、追加の接続属性を指定する必要はありません。

Binary Reader を使用してREDO ログにアクセスするには、以下の追加の接続属性を加えます。

```
useLogMinerReader=N;useBfile=Y;
```

次の追加の接続属性形式を使用して、Binary Reader で ASM を使用するサーバーにアクセスします。

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
```

ソースエンドポイントの `Password` リクエストパラメータに、Oracle ユーザーパスワードと ASM パスワードの両方をカンマで区切って含める必要があります。

```
oracle_user_password,asm_user_password
```

Oracle ソースが ASM を使用する場合、Binary Reader でハイ パフォーマンスオプションを使用して、スケールが大きいなトランザクション処理を実行できます。これらのオプションには、並列スレッド数 (`parallelASMReadThreads`) および先読みバッファ数 (`readAheadBlocks`) を指定する追加の接続属性が含まれます。これらの属性を一括設定すると、CDC タスクのパフォーマンスを大幅に改善できます。次に示す設定は、ほとんどの ASM 設定で良好な結果を提供します。

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
    parallelASMReadThreads=6;readAheadBlocks=150000;
```

追加の接続属性がサポートする値の詳細については、「[のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)」をご参照ください。

また、 ASM を使用したOracle ソースで CDC タスクのパフォーマンスは、選択した他の設定によって異なります。これらの設定には、 AWS DMS の追加の接続属性と Oracle ソースを設定するための SQL 設定が含まれます。ASM を使用した Oracle ソースの追加接続属性の詳細については、「[のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)」をご参照ください。

また、適切な CDC スタートポイントを選択する必要があります。通常、これを行う場合、CDC を開始する最も早いオープントランザクションをキャプチャするトランザクション処理点を特定します。そうしないと、CDC タスクは以前のオープントランザクションを見逃す可能性があります。Oracle ソースデータベースの場合、Oracle システム変更番号 (SCN) に基づいて CDC ネイティブのスタートポイントを選択して、この最も早いオープントランザクションを識別できます。詳細については、「[CDC 開始ポイントからのレプリケーションの実行](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint)」を参照してください。

自己管理型 Oracle データベースをソースとして使用するための CDC 設定の詳細については、「[Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges)」、「[AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges)」や「[Oracle ASM で Binary Reader の使用時に必要なアカウント権限](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges)」をご参照ください。

マネージド Oracle データベースの CDC をソースとして設定する方法の詳細については、 AWS[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)「」および「」を参照してください[で Amazon RDS Oracle Standby (リードレプリカ) を Binary Reader for CDC のソースとして使用する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy)。

## のセルフマネージド型または AWSマネージド型の Oracle ソースデータベースを設定するためのワークフロー AWS DMS


## Oracle ソースデータベースの設定
<a name="CHAP_Source.Oracle.Workflows"></a>

セルフマネージド型のソースデータベースインスタンスを設定するには、CDC の実行方法に応じて、次のワークフローステップを使用します。


| このワークフロー ステップの場合 | LogMiner を使用して CDC を実行する場合は、これを行います | Binary Reader を使用して CDC を実行する場合は、これを行います | 
| --- | --- | --- | 
| Oracle アカウントの特権を付与します。 | 「[のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges)」を参照してください | 「[のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges)」を参照してください | 
| CDC を使用してレプリケーション用のソースデータベースを準備します。 | 「[を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration)」を参照してください | 「[を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration)」を参照してください | 
| CDC に必要な追加の Oracle ユーザー権限を付与します。 | 「[Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges)」を参照してください | 「[AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges)」を参照してください | 
| ASM を持つ Oracle インスタンスの場合は、 CDC のために ASM へのアクセスに必要な追加のユーザーアカウント権限を付与します。 | 追加のアクションはありません。 は、追加のアカウント権限なしで Oracle ASM AWS DMS をサポートします。 | 「[Oracle ASM で Binary Reader の使用時に必要なアカウント権限](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges)」を参照してください。 | 
| まだ CDC の LogMiner または Binary Reader を使用するようにタスクを設定していない場合は、タスクを設定します。 | 「[CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC)」を参照してください | 「[CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC)」を参照してください | 
| Oracle スタンバイを CDC のソースとして設定します。 | AWS DMS はソースとして Oracle Standby をサポートしていません。 | 「[の Binary Reader for CDC でのソースとしての自己管理型 Oracle スタンバイの使用 AWS DMS](#CHAP_Source.Oracle.Self-Managed.BinaryStandby)」を参照してください。 | 

 AWSマネージド Oracle ソースデータベースインスタンスを設定するには、次のワークフローステップを使用します。


| このワークフロー ステップの場合 | LogMiner を使用して CDC を実行する場合は、これを行います | Binary Reader を使用して CDC を実行する場合は、これを行います | 
| --- | --- | --- | 
| Oracle アカウントの特権を付与します。 | 詳細については、「[AWSの マネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges)」を参照してください。 | 詳細については、「[AWSの マネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges)」を参照してください。 | 
| CDC を使用してレプリケーション用のソースデータベースを準備します。 | 詳細については、「[AWSの マネージド Oracle ソースの設定 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration)」を参照してください。 | 詳細については、「[AWSの マネージド Oracle ソースの設定 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration)」を参照してください。 | 
| CDC に必要な追加の Oracle ユーザー権限を付与します。 | 追加のアカウント権限は必要ありません。 | 詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。 | 
| まだ CDC の LogMiner または Binary Reader を使用するようにタスクを設定していない場合は、タスクを設定します。 | 詳細については、「[CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC)」を参照してください。 | 詳細については、「[CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC)」を参照してください。 | 
| Oracle スタンバイを CDC のソースとして設定します。 | AWS DMS はソースとして Oracle Standby をサポートしていません。 | 詳細については、「[で Amazon RDS Oracle Standby (リードレプリカ) を Binary Reader for CDC のソースとして使用する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy)」を参照してください。 | 

## のソースとしての自己管理型 Oracle データベースの使用 AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed"></a>

*セルフ管理データベース*は自分で構成および制御するデータベースで、ローカルのオンプレミス データベース インスタンスまたは Amazon EC2 上のデータベースのいずれかです。次に、 でセルフマネージド Oracle データベースを使用する際に必要な権限と設定について説明します AWS DMS。

### のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Privileges"></a>

でソースとして Oracle データベースを使用するには AWS DMS、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。

**注記**  
権限を付与する場合、オブジェクトのシノニムではなく、各オブジェクトの実際の名前を使用します。たとえば、下線のある `V_$OBJECT` を使用します。下線のない `V$OBJECT` は使用しません。

```
GRANT CREATE SESSION TO dms_user;
GRANT SELECT ANY TRANSACTION TO dms_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO dms_user;
GRANT SELECT ON V_$LOG TO dms_user;
GRANT SELECT ON V_$LOGFILE TO dms_user;
GRANT SELECT ON V_$LOGMNR_LOGS TO dms_user;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO dms_user;
GRANT SELECT ON V_$DATABASE TO dms_user;
GRANT SELECT ON V_$THREAD TO dms_user;
GRANT SELECT ON V_$PARAMETER TO dms_user;
GRANT SELECT ON V_$NLS_PARAMETERS TO dms_user;
GRANT SELECT ON V_$TIMEZONE_NAMES TO dms_user;
GRANT SELECT ON V_$TRANSACTION TO dms_user;
GRANT SELECT ON V_$CONTAINERS TO dms_user;                   
GRANT SELECT ON ALL_INDEXES TO dms_user;
GRANT SELECT ON ALL_OBJECTS TO dms_user;
GRANT SELECT ON ALL_TABLES TO dms_user;
GRANT SELECT ON ALL_USERS TO dms_user;
GRANT SELECT ON ALL_CATALOG TO dms_user;
GRANT SELECT ON ALL_CONSTRAINTS TO dms_user;
GRANT SELECT ON ALL_CONS_COLUMNS TO dms_user;
GRANT SELECT ON ALL_TAB_COLS TO dms_user;
GRANT SELECT ON ALL_IND_COLUMNS TO dms_user;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dms_user;
GRANT SELECT ON ALL_LOG_GROUPS TO dms_user;
GRANT SELECT ON ALL_TAB_PARTITIONS TO dms_user;
GRANT SELECT ON SYS.DBA_REGISTRY TO dms_user;
GRANT SELECT ON SYS.OBJ$ TO dms_user;
GRANT SELECT ON DBA_TABLESPACES TO dms_user;
GRANT SELECT ON DBA_OBJECTS TO dms_user; -– Required if the Oracle version is earlier than 11.2.0.3.
GRANT SELECT ON SYS.ENC$ TO dms_user; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS.
GRANT SELECT ON GV_$TRANSACTION TO dms_user; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher.
GRANT SELECT ON V_$DATAGUARD_STATS TO dms_user; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.
GRANT SELECT ON V_$DATABASE_INCARNATION TO dms_user;
```

特定のテーブルリストを使用する場合は、レプリケーションテーブルごとに次の追加権限を付与します。

```
GRANT SELECT on any-replicated-table to dms_user;
```

検証機能を使用するための以下の権限を追加で付与します。

```
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO dms_user;
```

LogMiner の代わりに Binary Reader を使用する場合は、次の追加の権限を付与します。

```
GRANT SELECT ON SYS.DBA_DIRECTORIES TO dms_user;
```

ビューを公開するには、次の追加の権限を付与します。

```
GRANT SELECT on ALL_VIEWS to dms_user;
```

ビューを公開するには、ソースエンドポイントに追加の`exposeViews=true`接続属性も追加します。

サーバーレスレプリケーションを使用する場合は、次の追加のアクセス権限を付与します。

```
GRANT SELECT on dba_segments to dms_user;
GRANT SELECT on v_$tablespace to dms_user;
GRANT SELECT on dba_tab_subpartitions to dms_user;
GRANT SELECT on dba_extents to dms_user;
```

サーバーレスレプリケーションの詳細については、「[AWS DMS Serverless の使用](CHAP_Serverless.md)」を参照してください。

Oracle 独自の移行前評価を使用する場合は、以下のアクセス権限を追加で付与します。

```
GRANT SELECT on gv_$parameter  to dms_user;
GRANT SELECT on v_$instance to dms_user;
GRANT SELECT on v_$version to dms_user;
GRANT SELECT on gv_$ASM_DISKGROUP to dms_user;
GRANT SELECT on gv_$database to dms_user;
GRANT SELECT on dba_db_links to dms_user;
GRANT SELECT on gv_$log_History to dms_user;
GRANT SELECT on gv_$log to dms_user;
GRANT SELECT ON DBA_TYPES TO dms_user;
GRANT SELECT ON DBA_USERS to dms_user;
GRANT SELECT ON DBA_DIRECTORIES to dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

Oracle 独自の移行前評価の詳細については、「[Oracle の評価](CHAP_Tasks.AssessmentReport.Oracle.md)」を参照してください。

#### Oracle スタンバイのオープントランザクションを処理するための前提条件
<a name="CHAP_Source.Oracle.Self-Managed.Privileges.Standby"></a>

 AWS DMS バージョン 3.4.6 以降を使用する場合は、次の手順を実行して Oracle スタンバイのオープントランザクションを処理します。

1. プライマリデータベースに `AWSDMS_DBLINK` という名前のデータベースリンクを作成します。 `DMS_USER` は、データベースリンクを使用してプライマリデータベースに接続します。このデータベースリンクは、プライマリデータベースで実行されるオープントランザクションをクエリするためにスタンバイインスタンスから実行されることに注意します。次の例を参照してください。

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. 次の例に示されるとおり、`DMS_USER` を使用したデータベースリンクへの接続が確立されていることを確認します。

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Configuration"></a>

次の手順を実行して、CDC タスクを実行するソースとして自己管理型 Oracle データベースを準備します：
+ [がソースデータベースバージョン AWS DMS をサポートしていることの検証](#CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion).
+ [ARCHIVELOG モードがオンになっていることを確認する](#CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode).
+ [サプリメンタル ロギングの設定](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

#### がソースデータベースバージョン AWS DMS をサポートしていることの検証
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion"></a>

以下のようなクエリを実行して、現在のバージョンの Oracle ソースデータベースが AWS DMSでサポートされていることを確認します。

```
SELECT name, value, description FROM v$parameter WHERE name = 'compatible';
```

ここで `name`、`value`、および `description` は `name` の値に基づいてクエリされるデータベース内の任意の列です。このクエリがエラーなしで実行された場合、 はデータベースの最新バージョン AWS DMS をサポートし、移行を続行できます。クエリでエラーが発生した場合、 AWS DMS はデータベースの最新バージョンをサポートしていません。移行を続行するには、まず Oracle データベースを でサポートされているバージョンに変換します AWS DMS。

#### ARCHIVELOG モードがオンになっていることを確認する
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode"></a>

Oracle は、`ARCHIVELOG` モードと `NOARCHIVELOG` モードの 2 つの異なるモードで実行できます。CDC タスクを実行するには、`ARCHIVELOG` モードでデータベースを実行します。データベースが `ARCHIVELOG` モードにあるかどうかを確認するため、次のクエリを実行します。

```
SQL> SELECT log_mode FROM v$database;
```

もし `NOARCHIVELOG` mode が返されれば、オラクルの命令に従ってデータベースを `ARCHIVELOG` に設定します。

#### サプリメンタル ロギングの設定
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging"></a>

進行中の変更をキャプチャするには、Oracle ソースデータベースで最小限のサプリメンタルロギングを有効にする AWS DMS 必要があります。さらに、データベース内のレプリケーションされた各テーブルでサプリメンタル ロギングを有効にする必要があります。

デフォルトでは、 はレプリケートされたすべてのテーブルに`PRIMARY KEY`サプリメンタルロギング AWS DMS を追加します。 AWS DMS が`PRIMARY KEY`サプリメンタルロギングを追加できるようにするには、レプリケートされたテーブルごとに次の権限を付与します。

```
ALTER on any-replicated-table;
```

追加の接続属性 AWS DMS を使用して、追加されたデフォルトの`PRIMARY KEY`サプリメンタルロギングを無効にすることができます`addSupplementalLogging`。詳細については、「[のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)」を参照してください。

プライマリキー列を参照しない `WHERE` 句を使用してレプリケーション タスクでテーブルを更新する場合は、必ずサプリメンタル ログを有効にしてください。

**サプリメンタル ログをマニュアルでセットアップするには**

1. 次のクエリを実行して、データベースのサプリメンタル ログが有効になっていることを確認します。

   ```
   SELECT supplemental_log_data_min FROM v$database;
   ```

   返される結果が `YES` または `IMPLICIT` の場合は、データベースのサプリメンタル ログは有効です。

   そうなっていなければ、次のコマンドを実行して、データベースのサプリメンタル ログを有効にします。

   ```
   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
   ```

1. 必要なサプリメンタル ログがレプリケートされたテーブルごとに追加されていることを確認します。

   以下の点を考慮してください。
   + `ALL COLUMNS` サプリメンタル ログがテーブルに追加済みなら、その追加は不要です。
   + プライマリキーが存在する場合は、プライマリキーのサプリメンタルロギングを追加します。これを行うには、プライマリキーにサプリメンタル ログを追加する形式を使用するか、サプリメンタル ログをデータベースのプライマリキー列に追加します。

     ```
     ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ```
   + プライマリキーが存在せず、テーブルに一意のインデックスが 1 つある場合、一意のインデックスのすべての列をサプリメンタルログに追加します。

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG GROUP LogGroupName (UniqueIndexColumn1[, UniqueIndexColumn2] ...) ALWAYS;
     ```

     `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` を使用しても、一意のインデックス列はログに追加されません。
   + プライマリキーがなく、テーブルに複数の一意のインデックスがある場合、 はアルファベット順の昇順リストで最初の一意のインデックス AWS DMS を選択します。前の項目と同様に、選択したインデックスの列にサプリメンタル ログを追加する必要があります。

     `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` を使用しても、一意のインデックス列はログに追加されません。
   + プライマリキーが存在せず、一意のインデックスがない場合は、すべての列にサプリメンタルロギングを追加します。

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
     ```

     場合によっては、ターゲットテーブルのプライマリキーまたは一意のインデックスは、ソーステーブルのプライマリキーまたは一意のインデックスと異なります。その場合、ターゲット テーブルのプライマリ キーまたは一意のインデックスを構成するソース テーブル列でサプリメンタル ログを手動で追加します。

     ターゲットテーブルのプライマリキーを変更する場合、ソースプライマリキーまたは一意のインデックスではなく、ターゲットの一意のインデックスの列にサプリメンタルロギングを追加する必要があります。

テーブルにフィルターまたは変換が定義されている場合は、追加のロギングを有効にする必要があります。

以下の点を考慮してください。
+ `ALL COLUMNS` サプリメンタル ログがテーブルに追加済みなら、その追加は不要です。
+ テーブルに一意のインデックスやプライマリ キーがある場合、フィルターまたは変換に関係する列ごとにサプリメンタル ログを追加します。ただし、これらの列がプライマリ キーまたは一意のインデックス列と異なる場合にのみ行ってください。
+ 変換で列が 1 つしか使用されない場合は、この列をサプリメンタル ログ グループに追加しないでください。たとえば、変換 `A+B` の場合は、列 `A` と `B` の両方にサプリメンタルロギングを追加します。ただし、変換 `substring(A,10)` の場合、列 `A` にサプリメンタルロギングを追加しないでください。
+ プライマリ キーや一意のインデックス列、フィルタリングまたは変換されるその他の列の両方にサプリメンタル ログを設定するには、`USER_LOG_GROUP` サプリメンタル ログを追加できます。プライマリ キー/一意のインデックス列、フィルタリングまたは変換されるその他の特定の列の両方にこのサプリメンタル ログを追加します。

  たとえば、`TEST.LOGGING` という名前のテーブルをプライマリ キー `ID` と列 `NAME` によるフィルターでレプリケーションするには、次のようなコマンドを実行して、ロググループのサプリメンタル ログを作成します。

  ```
  ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;
  ```

### Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限
<a name="CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges"></a>

Oracle LogMiner を使用して REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定されている Oracle ユーザーに次の権限を付与します。

```
GRANT EXECUTE on DBMS_LOGMNR to dms_user;
GRANT SELECT on V_$LOGMNR_LOGS to dms_user;
GRANT SELECT on V_$LOGMNR_CONTENTS to dms_user;
GRANT LOGMINING to dms_user; -– Required only if the Oracle version is 12c or higher.
```

### AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限
<a name="CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges"></a>

 AWS DMS Binary Reader を使用して REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。

```
GRANT SELECT on v_$transportable_platform to dms_user;   -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM.
GRANT CREATE ANY DIRECTORY to dms_user;                  -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance does not have file-level access to the redo logs and the redo logs are on non-ASM storage.
GRANT EXECUTE on DBMS_FILE_TRANSFER to dms_user;         -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method.
GRANT EXECUTE on DBMS_FILE_GROUP to dms_user;
```

Binary Reader は、Oracle ディレクトリを含む Oracle ファイル機能で動作します。各 Oracle ディレクトリオブジェクトには、処理する REDO ログファイルが格納されているフォルダの名前が含まれます。これらの Oracle ディレクトリは、ファイルシステムレベルでは認識されません。代わりに、これらは Oracle データベースレベルで作成される論理ディレクトリとなります。これらのビューは、Oracle `ALL_DIRECTORIES` ビューで表示できます。

これらの Oracle ディレクトリ AWS DMS を作成する場合は、前述の`CREATE ANY DIRECTORY`権限を付与します。 は、 `DMS_`プレフィックスを使用してディレクトリ名 AWS DMS を作成します。`CREATE ANY DIRECTORY` 権限を付与しない場合は、対応するディレクトリを手動で作成します。このような場合、Oracle ディレクトリを手動で作成すると、Oracle ソースエンドポイントで指定された Oracle ユーザーがこれらのディレクトリを作成したユーザーではない場合があります。このような場合は、`READ on DIRECTORY` 権限も付与します。

**注記**  
AWS DMS CDC は、自動REDOトランスポートサービスを使用するように設定されていないアクティブデータ保護スタンバイをサポートしていません。

このような場合、Oracle 管理ファイル (OMF) を使用してログを保存することがあります。または、ソース エンドポイントは ADG にあり、CREATE ANY DIRECTORY 権限を付与できません。このような場合は、 AWS DMS レプリケーションタスクを開始する前に、可能なすべてのログの場所を含むディレクトリを手動で作成します。が想定する事前作成されたディレクトリを見つけ AWS DMS られない場合、タスクは停止します。また、 AWS DMS は`ALL_DIRECTORIES`ビューで作成したエントリを削除しないため、手動で削除します。

### Oracle ASM で Binary Reader の使用時に必要なアカウント権限
<a name="CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges"></a>

Binary Reader を使用して Automatic Storage Management (ASM) の REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。

```
SELECT ON v_$transportable_platform
SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.
```

ASM アカウントへのアクセスを検証するには、上記で指定された Oracle バージョンに応じて、コマンド プロンプトを開き、次のいずれかのステートメントを呼び出します。

`SYSDBA` 特権が必要な場合は、以下を使用します。

```
sqlplus asmuser/asmpassword@+asmserver as sysdba
```

`SYSASM` 特権が必要な場合は、以下を使用します。

```
sqlplus asmuser/asmpassword@+asmserver as sysasm
```

### の Binary Reader for CDC でのソースとしての自己管理型 Oracle スタンバイの使用 AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.BinaryStandby"></a>

CDC 用 Binary Reader を使用するときにソースとして Oracle Standby インスタンスを構成するには、次の前提条件からスタートします：
+ AWS DMS は現在、Oracle Active Data Guard スタンバイのみをサポートしています。
+ Oracle Data Guard の構成で次のものが使用されていることを確認します：
  + REDO データの自動転送用 REDO トランスポート サービス。
  + サービスを適用して、スタンバイデータベースに REDO を自動的に適用します。

上記の要件が満たされていることを確認するには、次のクエリを実行します。

```
SQL> select open_mode, database_role from v$database;
```

クエリの出力で、スタンバイデータベースが読み取り専用モードで開かれており、REDO が自動的に適用されていることを確認します。例えば、次のようになります。

```
OPEN_MODE             DATABASE_ROLE
--------------------  ----------------
READ ONLY WITH APPLY  PHYSICAL STANDBY
```

**CDC 用 Binary Reader を使用するときにソースとして Oracle スタンバイインスタンスを設定するには**

1. スタンバイ ログファイルへのアクセスに必要な追加の権限を付与します。

   ```
   GRANT SELECT ON v_$standby_log TO dms_user;
   ```

1.  AWS マネジメントコンソール または AWS CLIを使用して、Oracle スタンバイのソースエンドポイントを作成します。エンドポイントを作成する場合、次の追加の接続属性を指定します。

   ```
   useLogminerReader=N;useBfile=Y;
   ```
**注記**  
では AWS DMS、追加の接続属性を使用して、REDO ログの代わりにアーカイブログから移行するかどうかを指定できます。詳細については、「[のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)」を参照してください。

1. アーカイブログの保存先を設定します。

   ASM を使用しない Oracle ソースの DMS Binary Reader は、Oracle ディレクトリを使用してアーカイブの REDO ログにアクセスします。データベースがアーカイブログの宛先として高速リカバリ領域 (FRA) を使用するように設定されている場合、アーカイブ REDO ファイルの場所は一定ではありません。アーカイブ REDO ログが毎日生成されると、YYYY\$1MM\$1DD 形式のディレクトリ名を使用して、FRA に新しいディレクトリが作成されます。例えば、次のようになります。

   ```
   DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD
   ```

   DMS が新しく作成された FRA ディレクトリ内のアーカイブ REDOファイルにアクセスする必要があり、プライマリの読み取り/書き込みデータベースがソースとして使用されている場合、DMS は次のとおり新しい Oracle ディレクトリを作成するか、既存の Oracle ディレクトリを置き換えます。

   ```
   CREATE OR REPLACE DIRECTORY dmsrep_taskid AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD’;
   ```

   スタンバイデータベースがソースとして使用されている場合、データベースは読み取り専用モードであるため、DMS は Oracle ディレクトリを作成または置換できません。ただし、次の追加手順のいずれかを実行できます。

   1. Oracle が毎日サブディレクトリを作成しない設定の場合、FRA の代わりに実際のパスを使用するように `log_archive_dest_id_1` を変更します。

      ```
      ALTER SYSTEM SET log_archive_dest_1=’LOCATION=full directory path’
      ```

      次に、DMS が使用する Oracle ディレクトリオブジェクトを作成します。

      ```
      CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘full directory path’;
      ```

   1. 追加のアーカイブログの保存先と、その保存先を指す Oracle ディレクトリオブジェクトを作成します。例えば、次のようになります。

      ```
      ALTER SYSTEM SET log_archive_dest_3=’LOCATION=full directory path’; 
      CREATE DIRECTORY dms_archived_log AS ‘full directory path’;
      ```

      次に、タスクのソースエンドポイントに追加の接続属性を追加します。

      ```
      archivedLogDestId=3
      ```

   1. DMS で使用する Oracle ディレクトリオブジェクトを手動で事前作成します。

      ```
      CREATE DIRECTORY dms_archived_log_20210301 AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01’;
      CREATE DIRECTORY dms_archived_log_20210302 AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02’; 
      ...
      ```

   1. 毎日実行され、必要なディレクトリを作成する Oracle スケジューラジョブを作成します。

1. オンラインログの送信先を設定します。

   スタンバイ REDO ログを使用して OS ディレクトリを指す Oracle ディレクトリを作成します。

   ```
   CREATE OR REPLACE DIRECTORY STANDBY_REDO_DIR AS '<full directory path>';
   GRANT READ ON DIRECTORY STANDBY_REDO_DIR TO <dms_user>;
   ```

### での CDC のソースとしての Oracle Cloud Infrastructure (OCI) でのユーザー管理データベースの使用 AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.OCI"></a>

ユーザー管理データベースとは、仮想マシン (VM)、ベアメタル、または Exadata サーバー上に作成された Oracle データベースなど、ユーザーが設定して管理するデータベースです。または、Oracle Cloud Infrastructure (OCI) などの専用インフラストラクチャ上で実行される、ユーザーが設定して管理するデータベースもあります。次の情報は、 AWS DMSの変更データキャプチャ (CDC) のソースとして OCI 上の Oracle ユーザー管理データベースを使用する際に必要なアクセス権限と設定について説明しています。

**OCI でホストされるユーザー管理の Oracleデータベースを変更データキャプチャのソースとして設定するには**

1. OCI 上のユーザーマネージドの Oracle ソースデータベースに必要なユーザーアカウントアクセス権限を付与します。詳細については、「[Account privileges for a self-managed Oracle source endpoint](#CHAP_Source.Oracle.Self-Managed.Privileges)」を参照してください。

1. Binary Reader を使用して REDO ログにアクセスする際に必要なアカウントアクセス権限を付与します。詳細については、「[Account privileges required when using Binary Reader](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges)」を参照してください。

1. Oracle Automatic Storage Management (ASM)で Binary Reader を使用する場合に必要なアカウントアクセス権限を追加します。詳細については、「[Additional account privileges required when using Binary Reader with Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges)」を参照してください。

1. サプリメンタルロギングをセットアップします。詳細については、「[Setting up supplemental logging](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging)」を参照してください。

1. TDE 暗号化を設定します。詳細については、「[Encryption methods when using an Oracle database as a source endpoint](#CHAP_Source.Oracle.Encryption)」を参照してください。

Oracle Cloud Infrastructure (OCI) 上の Oracle ソースデータベースからデータをレプリケートする場合、次の制限が適用されます。

**制限事項**
+ DMS では、Oracle LogMiner を使用した REDO ログへのアクセスをサポートしていません。
+ DMS は Autonomous DB をサポートしていません。

## のソースとしての AWSマネージド Oracle データベースの使用 AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed"></a>

 AWSマネージドデータベースは、Amazon RDS、Amazon Aurora、Amazon S3 などの Amazon サービス上にあるデータベースです。で AWSマネージド Oracle データベースを使用するときに設定する必要がある権限と設定を以下に示します AWS DMS。

### AWSの マネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges"></a>

Oracle ソース エンドポイント定義で指定された Oracle ユーザーアカウントに、以下の権限を付与します。

**重要**  
`dms_user` や `any-replicated-table` などすべてのパラメータ値では、大文字と小文字を区別する識別子を使用して値を指定しない限り、Oracle は値をすべて大文字と見なします。たとえば、`CREATE USER myuser` または `CREATE USER MYUSER` のように引用符を使用しない `dms_user` の値を作成するとします。この場合、Oracle は値をすべて大文字 (`MYUSER`) として識別して格納します。`CREATE USER "MyUser"`や`CREATE USER 'MyUser'`のように引用符を使用すると、Oracle は、指定した大文字と小文字を区別する値を識別して格納します (`MyUser`)。

```
GRANT CREATE SESSION to dms_user;
GRANT SELECT ANY TRANSACTION to dms_user;
GRANT SELECT on DBA_TABLESPACES to dms_user;
GRANT SELECT ON any-replicated-table to dms_user;
GRANT EXECUTE on rdsadmin.rdsadmin_util to dms_user;
 -- For Oracle 12c or higher:
GRANT LOGMINING to dms_user; – Required only if the Oracle version is 12c or higher.
```

さらに、`SELECT` と `EXECUTE` のアクセス許可を次のように Amazon RDS 手順 `rdsadmin.rdsadmin_util.grant_sys_object` を使用して `SYS` オブジェクトに付与します。詳細については、「[SYS オブジェクトへの SELECT または EXECUTE 権限の付与](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html#Appendix.Oracle.CommonDBATasks.TransferPrivileges)」をご参照ください。

```
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','dms_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'dms_user', 'EXECUTE');

-- (as of Oracle versions 12.1 and higher)
exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'dms_user', 'SELECT');

-- (for Amazon RDS Active Dataguard Standby (ADG))
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'dms_user', 'SELECT'); 

-- (for transparent data encryption (TDE))

exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'dms_user', 'SELECT'); 
               
-- (for validation with LOB columns)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'dms_user', 'EXECUTE');
                    
-- (for binary reader)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','dms_user','SELECT'); 
                    
-- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'dms_user', 'SELECT');
```

 AWS DMS で Amazon RDS アクティブデータガードスタンバイ (ADG) の使用の詳細については、「[で Amazon RDS Oracle Standby (リードレプリカ) を Binary Reader for CDC のソースとして使用する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy)」をご参照ください。

での Oracle TDE の使用の詳細については AWS DMS、「」を参照してください[Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS](#CHAP_Source.Oracle.Encryption)。

#### Oracle スタンバイのオープントランザクションを処理するための前提条件
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges.Standby"></a>

 AWS DMS バージョン 3.4.6 以降を使用する場合は、次の手順を実行して Oracle スタンバイのオープントランザクションを処理します。

1. プライマリデータベースに `AWSDMS_DBLINK` という名前のデータベースリンクを作成します。 `DMS_USER` は、データベースリンクを使用してプライマリデータベースに接続します。このデータベースリンクは、プライマリデータベースで実行されるオープントランザクションをクエリするためにスタンバイインスタンスから実行されることに注意します。次の例を参照してください。

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. 次の例に示されるとおり、`DMS_USER` を使用したデータベースリンクへの接続が確立されていることを確認します。

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### AWSの マネージド Oracle ソースの設定 AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Configuration"></a>

 AWSマネージド Oracle データベースを のソースとして使用する前に AWS DMS、Oracle データベースに対して次のタスクを実行します。
+ 自動バックアップを有効化します。自動バックアップの有効化の詳細については、*Amazon RDS ユーザーガイド* の「[自動バックアップの有効化](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.Enabling)」をご参照ください。
+ サプリメンタルロギングをセットアップします。
+ アーカイブを設定します。Amazon RDS for Oracle DB インスタンスの REDO ログをアーカイブすると AWS DMS 、 は Oracle LogMiner または Binary Reader を使用してログ情報を取得できます。

**アーカイブを設定するには**

1. `rdsadmin.rdsadmin_util.set_configuration` コマンドを実行してアーカイブをセットアップします。

   たとえば、アーカイブされた REDO ログを 24 時間保持するには、次のコマンドを実行します。

   ```
   exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
   commit;
   ```
**注記**  
変更を反映するにはコミットが必要です。

1. 指定された保持期間中、アーカイブされた REDO ログのための十分な容量がストレージにあることを確認します。たとえば、保持期間が 24 時間の場合は、通常のトランザクション処理時間における累積アーカイブ REDO ログの合計サイズを計算し、その合計に 24 を掛けます。この計算された 24 時間の合計と、使用可能なストレージ容量を比較し、24 時間のトランザクション処理を処理するのに十分なストレージ領域があるかどうかを判断します。

**サプリメンタルロギングをセットアップするには**

1. データベース レベルでサプリメンタル ログを有効にするには、次のコマンドを実行します。

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
   ```

1. 次のコマンドを実行してプライマリ キー列のサプリメンタル ログを有効にします。

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
   ```

1. (オプション) テーブル レベルでキーレベルのサプリメンタル ログを有効にします。

   キーレベルのサプリメンタル ログを有効にすると、ソースデータベースで多少のオーバーヘッドが生じます。したがって、テーブルのサブセットのみを移行する場合は、テーブルレベルでのサプリメンタル ログを有効にすることをお勧めします。キーレベルのサプリメンタル ログをテーブル レベルで有効にするには、次のコマンドを使用します。

   ```
   alter table table_name add supplemental log data (PRIMARY KEY) columns;
   ```

### の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.CDC"></a>

Binary Reader for CDC を使用して、ソース Amazon RDS for Oracle インスタンスのREDOログにアクセスする AWS DMS ように を設定できます。

**注記**  
Oracle LogMiner を使用するには、最低限必要なユーザーアカウント権限で十分です。詳細については、「[AWSの マネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges)」を参照してください。

 AWS DMS Binary Reader を使用するには、バージョン AWS DMS に応じて、Oracle ソースエンドポイントの追加設定と追加の接続属性を指定します。

Binary Reader のサポートは、Amazon RDS for Oracle の次のバージョンで利用できます。
+ Oracle バージョン 12.1.0.2.v11 以降
+ Oracle バージョン 12.1.0.2.v7 以降
+ Oracle 12.2 – すべてのバージョン
+ Oracle 18.0 – すべてのバージョン
+ Oracle 19.0 – すべてのバージョン

**Binary Reader を使用して CDC を設定するには**

1. Amazon RDS for Oracle ソース データベースにマスターユーザーとしてログインし、次のストアド プロシージャを実行してサーバーレベル ディレクトリを作成します。

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Oracle ユーザーアカウントに、Oracle ソース エンドポイントにアクセスするための以下の権限を付与します。

   ```
   GRANT READ ON DIRECTORY ONLINELOG_DIR TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO dms_user;
   ```

1. Amazon RDS Oracle ソースエンドポイントで、次の追加の接続属性を設定します。
   + RDS Oracle バージョン 11.2 と 12.1 では、次のように設定します。

     ```
     useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;
     oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
     ```
   + RDS Oracle バージョン 12.2、18.0、19.0 では、次のように設定します。

     ```
     useLogminerReader=N;useBfile=Y;
     ```

**注記**  
複数の属性設定には、セミコロン区切り文字 (;) の後に空白を含めることはできません、例えば `oneSetting;thenAnother`。

CDC タスクの設定の詳細については、「[Oracle ソース データベースでの CDC の設定](#CHAP_Source.Oracle.CDC.Configuration)」をご参照ください。

### で Amazon RDS Oracle Standby (リードレプリカ) を Binary Reader for CDC のソースとして使用する AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.StandBy"></a>

 AWS DMSで CDC 用 Binary Reader を使用する場合は、ソースとして Amazon RDS for Oracle スタンバイを使用するための次の前提条件を確認します:
+ Oracle マスターユーザーを使用して、 Binary Reader を設定します。
+  AWS DMS 現在、 が Oracle Active Data Guard Standby のみの使用をサポートしていることを確認します。

その後、CDC 用 Binary Reader を使用するときに、次の手順に従ってソースとして RDS for Oracle スタンバイを使用します。

**CDC 用 Binary Reader を使用するときにソースとして RDS for Oracle スタンバイを設定するには**

1. RDS for Oracle のプライマリインスタンスに管理ユーザーとしてサインインします。

1. Amazon RDS ユーザーガイドに記載されている次のストアドプロシージャを実行して、サーバーレベル ディレクトリを作成します。

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. ステップ 2 で作成したディレクトリを特定します。

   ```
   SELECT directory_name, directory_path FROM all_directories
   WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' )
           OR directory_name LIKE ( 'ONLINELOG_DIR_%' )
   ```

   たとえば、前述のコードでは、次のようなディレクトリの一覧が表示されます。  
![\[Table showing directory names and their corresponding paths for archive and online logs.\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/images/datarep-rds-server-level-directories.png)

1. Oracle スタンバイにアクセスするために使用する Oracle ユーザーアカウントに対する前述のディレクトリに対する `Read` の権限を許可します。

   ```
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_B TO dms_user;
   ```

1. プライマリ インスタンスでアーカイブ ログ スイッチを実行します。これを行うと、`ALL_DIRECTORIES` の変更が Oracle スタンバイにも移植されることを確認します。

1. `ALL_DIRECTORIES` Oracle Standby でクエリを実行して、変更が適用されたことを確認します。

1. マネジメントコンソールまたは AWS Command Line Interface () を使用して、Oracle スタンバイの AWS DMS ソースエンドポイントを作成しますAWS CLI。エンドポイントの作成時に、次の追加の接続属性を指定します。

   ```
   useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
   ```

1. エンドポイントを作成したら、コンソールのエンドポイント**の作成ページでエンドポイント****接続をテスト**するか、 AWS CLI `test-connection` コマンドを使用して接続が確立されていることを確認します。

## のソースとして Oracle を使用する場合の制限 AWS DMS
<a name="CHAP_Source.Oracle.Limitations"></a>

Oracle データベースを AWS DMSのソースとして使用する場合は、以下の制限が適用されます。
+ AWS DMS は、 AWS DMS バージョン 3.5.0 以降の Oracle Extended データ型をサポートしています。
+ AWS DMS は長いオブジェクト名 (30 バイト以上) をサポートしていません。
+ AWS DMS は関数ベースのインデックスをサポートしていません。
+ サプリメンタル ログを管理し、いずれかの列で変換を実行する場合は、すべてのフィールドと列でサプリメンタル ログが有効になっていることを確認してください。サプリメンタル ログの設定の詳細については、以下のトピックをご参照ください：
  + セルフ管理 Oracle ソースデータベースについては、「[サプリメンタル ロギングの設定](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging)」をご参照ください。
  +  AWSマネージド Oracle ソースデータベースについては、「」を参照してください[AWSの マネージド Oracle ソースの設定 AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration)。
+ AWS DMS は、マルチテナントコンテナルートデータベース (CDB\$1ROOT) をサポートしていません。しかし、Binary Reader を使用した PDB をサポートしています。
+ AWS DMS は遅延制約をサポートしていません。
+ AWS DMS バージョン 3.5.3 以降では、安全な LOBs。
+ AWS DMS は、サポートされているすべての Oracle バージョン 11 以降の`rename table table-name to new-table-name`構文をサポートしています。この構文は Oracle バージョン 10 ソースデータベースではサポートされていません。
+ AWS DMS は DDL ステートメント の結果をレプリケートしません`ALTER TABLE ADD column data_type DEFAULT default_value`。ターゲットに `default_value` をレプリケートする代わりに、新しい列を `NULL` に設定します。
+  AWS DMS バージョン 3.4.7 以降を使用する場合、パーティションまたはサブパーティションオペレーションに起因する変更をレプリケートするには、DMS タスクを開始する前に次の操作を行います。
  + パーティション分割されたテーブル構造 (DDL) を手動で作成します。
  + DDL が Oracle ソースと Oracle ターゲットの両方で同じであることを確認します。
  + 追加の接続属性 `enableHomogenousPartitionOps=true` を設定します。

  `enableHomogenousPartitionOps` の詳細については、「[のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)」を参照してください。また、全ロード \$1 CDC タスクでは、DMS はキャッシュした変更の一部としてキャプチャしたデータ変更をレプリケートしないことにも注意します。このようなユースケースでは、Oracle ターゲットでテーブル構造を再作成して、該当テーブルをもう一度ロードします。

   AWS DMS バージョン 3.4.7 より前:

  DMS は、パーティション操作またはサブパーティション操作 (`ADD`、`DROP`、`EXCHANGE`、`TRUNCATE`) によるデータ変更をレプリケートしません。このような更新により、レプリケーション中に次のエラーが発生する可能性があります：
  + `ADD` オペレーションの場合、追加されたデータの更新と削除により、「影響を受ける行は 0 です」という警告が表示されることがあります。
  + `DROP` および `TRUNCATE` オペレーションの場合、新しい挿入によって「重複」エラーが発生する可能性があります。
  + `EXCHANGE` オペレーションは、「影響を受ける行は 0 です」警告と「重複」エラーの両方が発生する可能性があります。

  パーティションオペレーションまたはサブパーティションオペレーションによる変更をレプリケートするには、対象のテーブルをリロードします。新しい空のパーティションを追加した後、新しく追加されたテーブルに対するオペレーションは、通常どおりターゲットへのレプリケーションとなります。
+ AWS DMS 3.4 より前のバージョンでは、ソースで `CREATE TABLE AS`ステートメントを実行した結果生じるターゲットのデータ変更をサポートしていません。ただし、新しいテーブルがターゲットで作成されます。
+ AWS DMS は、テーブルメタデータや `OBJECT_ID`フィールドなど、Oracle `DBMS_REDEFINITION`パッケージによって行われた変更をキャプチャしません。
+ サイズ制限のある LOB モードが有効な場合、Oracle ソース上の空のBLOB/CLOB 列は NULL 値としてレプリケートされます。完全 LOB モードが有効な場合、空の文字列 (' ') としてレプリケートされます。
+ Oracle 11 LogMiner で変更をキャプチャすると、文字列の長さが 1982 より大きい CLOB 列の更新が失われ、ターゲットは更新されません。
+ 変更データキャプチャ (CDC) 中、 AWS DMS はプライマリキーとして定義された数値列へのバッチ更新をサポートしていません。
+ AWS DMS は、特定の`UPDATE`コマンドをサポートしていません。次の例は、サポートされていない `UPDATE` コマンドです。

  ```
  UPDATE TEST_TABLE SET KEY=KEY+1;
  ```

  ここで、`TEST_TABLE` はテーブル名であり、`KEY` は、プライマリキーとして定義された数値列です。
+ AWS DMS は、LONG 列と LONG RAW 列をロードするためのフル LOB モードをサポートしていません。この代わりに、制限付き LOB モードを使用してこのようなデータ型を Oracle ターゲットに移行できます。限定 LOB モードでは、 は、64 KB を超える LONG または LONG RAW 列に設定したデータを 64 KB に AWS DMS 切り捨てます。
+ AWS DMS は、XMLTYPE 列をロードするためのフル LOB モードをサポートしていません。この代わりに、制限付き LOB モードを使用して XMLTYPE 列を Oracle ターゲットに移行できます。制限付き LOB モードでは、DMS はユーザー定義の「最大 LOB サイズ」変数以上のデータは切り捨てます。「最大 LOB サイズ」の最大推奨値は 100 MB です。
+ AWS DMS は、名前にアポストロフィが含まれているテーブルをレプリケートしません。
+ AWS DMS は、マテリアライズドビューからの CDC をサポートします。ただし、DMS はその他のビューからの CDC はサポートしていません。
+ AWS DMS は、オーバーフローセグメントを持つインデックス組織テーブルの CDC をサポートしていません。
+ AWS DMS は、 を `enableHomogenousPartitionOps`に設定して参照によってパーティション分割されたテーブルの `Drop Partition`オペレーションをサポートしていません`true`。
+ Oracle LogMiner を使用して REDO ログにアクセスする場合、 には次の制限 AWS DMS があります。
  + Oracle 12 の場合のみ、 AWS DMS は LOB 列に変更をレプリケートしません。
  + AWS DMS は、Oracle LogMiner の使用中にレプリケーションで XA トランザクションをサポートしていません。
  + Oracle LogMiner はプラグイン可能なデータベース (PDB) への接続をサポートしていません。PDB に接続するには、Binary Reader を使用して REDO ログにアクセスします。
  + SHRINK SPACE 操作はサポートされていません。
+ Binary Reader を使用する場合、 には次の制限 AWS DMS があります。
  + テーブルクラスターはサポートされていません。
  + テーブルレベルでの `SHRINK SPACE` オペレーションのみがサポートされます。このレベルには、テーブル全体、パーティション、サブパーティションが含まれます。
  + キー圧縮によるインデックス構成表への変更はサポートされません。
  + RAW デバイスでのオンライン REDO ログの実装はサポートされていません。
  + RDS for Oracle では、TDE 暗号化キーのウォレットパスワードの取得がサポートされていないため、Binary Reader は、セルフマネージド型 Oracle データベースに対してのみ TDE をサポートします。
+ AWS DMS は、Oracle Automatic Storage Management (ASM) プロキシを使用した Amazon RDS Oracle ソースへの接続をサポートしていません。
+ AWS DMS は仮想列をサポートしていません。
+ AWS DMS は、ROWID 列に基づく`ROWID`データ型またはマテリアライズドビューをサポートしていません。

  AWS DMS は Oracle マテリアライズドビューを部分的にサポートしています。フルロードの場合、DMS は Oracle マテリアライズドビューのフルロードコピーを実行できます。DMS はマテリアライズドビューをベーステーブルとしてターゲットシステムにコピーして、マテリアライズドビューの ROWID 列は無視します。継続的なレプリケーション (CDC) の場合、DMS は変更をマテリアライズドビューのデータへの変更をレプリケート使用としますが、理想的でない結果となる可能性があります。具体的には、マテリアライズドビューが完全に更新されると、DMS はすべての行の個別の削除をレプリケートし、続いてすべての行の個別の挿入をレプリケートします。これはリソースを非常に大量に消費する作業であり、多数の行を含むマテリアライズドビューのパフォーマンスが低下する可能性があります。マテリアライズドビューが高速リフレッシュを実行する継続的なレプリケーションの場合、DMS は高速リフレッシュのデータの変更を処理してレプリケートしようとします。どちらの場合も、DMS はマテリアライズドビュー内の ROWID 列はスキップします。
+ AWS DMS は、グローバル一時テーブルをロードまたはキャプチャしません。
+ レプリケーションを使用する S3 ターゲットでは、ソース行の更新がすべての列の値を取得できるように、どの列でもサプリメンタル ログを有効にします。以下に例 `alter table yourtablename add supplemental log data (all) columns;` を示します。
+ `null` を含む複合一意キーを持つ行の更新はターゲットでレプリケーション不可です。
+ AWS DMS は、同じソースエンドポイントでの複数の Oracle TDE 暗号化キーの使用をサポートしていません。各エンドポイントは、TDE 暗号化キー名「`securityDbEncryptionName`」に対して属性を 1 つ、またこのキーの TDE パスワードが 1 つ持つことができます。
+ Amazon RDS for Oracle からレプリケートする場合、TDE は暗号化されたテーブルスペースと Oracle LogMinerを使用した場合のみサポートされます。
+ AWS DMS は、複数のテーブル名変更オペレーションを連続してすばやくサポートしていません。
+ Oracle 19.0 をソースとして使用する場合、 AWS DMS は次の機能をサポートしていません。
  + データガード DML リダイレクト
  + パーティション分割されたハイブリッドテーブル
  + スキーマのみの Oracle アカウント
+ AWS DMS は、 `BIN$`または タイプのテーブルまたはビューの移行をサポートしていません`DR$`。
+ Oracle 18.x 以降、 AWS DMS は Oracle Express Edition (Oracle Database XE) からの変更データキャプチャ (CDC) をサポートしていません。
+ CHAR 列からデータを移行する場合、DMS は末尾のスペースをすべて切り捨てます。
+ AWS DMS は、アプリケーションコンテナからのレプリケーションをサポートしていません。
+ AWS DMS は Oracle Flashback Database と復元ポイントの実行をサポートしていません。これらのオペレーションは Oracle Redo ログファイルの整合性に影響するためです。
+  AWS DMS バージョン 3.5.3 より前のバージョンでは、並列実行オプションを使用した Direct-load `INSERT`プロシージャは、次の場合にサポートされていません。
  + 255 列を超える非圧縮テーブル
  + 行サイズが 8K 以上
  + Exadata HCC テーブル
  + Big Endian プラットフォームで稼働しているデータベース
+ プライマリキーも一意キーもないソーステーブルでは、ALL COLUMN サプリメンタルロギングを有効にする必要があります。これにより、さらに多くの REDO ログアクティビティが作成され、DMS CDC のレイテンシーが増加する可能性があります。
+ AWS DMS は、ソースデータベース内の非表示の列からデータを移行しません。このような列を移行の範囲に含めるには、`ALTER TABLE` ステートメントを使用して列を表示します。
+ すべての Oracle バージョンで、 AWS DMS は `XMLTYPE`および LOB 列に対する`UPDATE`オペレーションの結果をレプリケートしません。
+ AWS DMS は、時間的有効性の制約があるテーブルからのレプリケーションをサポートしていません。
+ 全ロードタスク中に Oracle ソースが使用できなくなった場合は、データ移行が不完全であっても、再接続を複数回試行した後にタスクを完了済みとしてマーク AWS DMS する場合があります。このシナリオでは、接続が失われる前に移行されたレコードのみがターゲットテーブルに含まれるため、ソースシステムとターゲットシステムの間にデータの不整合が生じる可能性があります。データの完全性を確保するには、全ロードタスクを完全に再起動するか、接続の中断の影響を受ける特定のテーブルを再ロードする必要があります。

## Oracle エンドポイントでの SSL のサポート
<a name="CHAP_Security.SSL.Oracle"></a>

AWS DMS Oracle エンドポイントは、 `none`および SSL モードの SSL V3 `verify-ca` をサポートしています。Oracle エンドポイントで SSL を使用するには、.pem 証明書ファイルの代わりにエンドポイント用の Oracle ウォレットをアップロードします。

**Topics**
+ [Oracle SSL への既存の証明書の使用](#CHAP_Security.SSL.Oracle.Existing)
+ [Oracle SSL への自己署名証明書の使用](#CHAP_Security.SSL.Oracle.SelfSigned)

### Oracle SSL への既存の証明書の使用
<a name="CHAP_Security.SSL.Oracle.Existing"></a>

既存の Oracle クライアントインストールを使用して CA 証明書ファイルから Oracle ウォレットファイルを作成するには、以下の手順を実行します。

**で Oracle SSL の既存の Oracle クライアントインストールを使用するには AWS DMS**

1. 以下のコマンドを実行して、`ORACLE_HOME` システム変数を `dbhome_1` ディレクトリの場所に設定します。

   ```
   prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1                        
   ```

1. `$ORACLE_HOME/lib` を `LD_LIBRARY_PATH` システム変数に追加します。

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib                        
   ```

1. `$ORACLE_HOME/ssl_wallet` に Oracle Wallet のディレクトリを作成します。

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. CA 証明書ファイル `.pem` を `ssl_wallet` ディレクトリに配置します。Amazon RDS を使用する場合は、Amazon RDS によってホストされる `rds-ca-2015-root.pem` ルート CA 証明書ファイルをダウンロードできます。このファイルのダウンロード方法については、*Amazon RDS ユーザーガイド‭* の「[SSL/TLS を使用した DB インスタンス接続の暗号化](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)」をご参照ください。

1. CA 証明書に複数の PEM ファイル (Amazon RDS グローバルバンドルやリージョンバンドルなど) が含まれている場合は、別々のファイルに分割し、次の bash スクリプトを使用して Oracle ウォレットに追加する必要があります。このスクリプトには 2 つのパラメータ入力 (CA 証明書へのパスと、以前に作成した Oracle ウォレットのフォルダへのパス) が必要です。

   ```
   #!/usr/bin/env bash
   
   certnum=$(grep -c BEGIN <(cat $1))
   
   cnt=0
   temp_cert=""
   while read line
   do
   if [ -n "$temp_cert" -a "$line" == "-----BEGIN CERTIFICATE-----" ]
   then
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   temp_cert=""
   fi
   temp_cert+="$line"$'\n'
   done < <(cat $1)
   
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   echo ""
   ```

ここまでの手順を完了したら、`ImportCertificate` API コールで certificate-wallet パラメータを指定してウォレットファイルをインポートできます。Oracle エンドポイントの作成または変更時に SSL モードとして `verify-ca` を選択すると、インポートされたウォレット証明書を使用できます。

**注記**  
 Oracle ウォレットはバイナリファイルです。 AWS DMS はこれらのファイルをそのまま受け入れます。

### Oracle SSL への自己署名証明書の使用
<a name="CHAP_Security.SSL.Oracle.SelfSigned"></a>

Oracle SSL に自己署名証明書を使用するには、`oracle123` の Oracle ウォレットパスワードを次のように仮定して、次のステップを実行します。

**で Oracle SSL の自己署名証明書を使用するには AWS DMS**

1. 自己署名証明書で使用するディレクトリを作成します。

   ```
   mkdir -p /u01/app/oracle/self_signed_cert
   ```

1. 前の手順で作成したディレクトリに移動します。

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. ルートキーを作成します。

   ```
   openssl genrsa -out self-rootCA.key 2048
   ```

1. 前の手順で作成したルートキーを使用して、ルート証明書に自己署名します。

   ```
   openssl req -x509 -new -nodes -key self-rootCA.key 
           -sha256 -days 3650 -out self-rootCA.pem
   ```

   次のような、入力パラメーターを使用します。
   + `Country Name (2 letter code) [XX]`。例: `AU`
   + `State or Province Name (full name) []`。例: `NSW`
   + `Locality Name (e.g., city) [Default City]`。例: `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`。例: `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`。例: `DBeng`
   + `Common Name (e.g., your name or your server's hostname) []`。例: `aws`
   + `Email Address []`、例えば:abcd.efgh@amazonwebservice.com

1. Oracle データベース用の Oracle ウォレットディレクトリを作成します。

   ```
   mkdir -p /u01/app/oracle/wallet
   ```

1. 新しい Oracle ウォレットを作成します。

   ```
   orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
   ```

1. Oracle ウォレットにルート証明書を追加します。

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert 
   -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
   ```

1. Oracle ウォレットの内容のリストを表示します。リストにはルート証明書が含まれます。

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

   たとえば、次のような表示となることがあります。

   ```
   Requested Certificates:
   User Certificates:
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. ORAPKI ユーティリティを使用して証明書署名リクエスト (CSR) を生成します。

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 
   -dn "CN=aws" -keysize 2048 -sign_alg sha256
   ```

1. 以下のコマンドを実行してください。

   ```
   openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem
   ```

   これにより次のような出力が生成されます。

   ```
   Enter Import Password:
   MAC verified OK
   Warning unsupported bag type: secretBag
   ```

1. 共通名として「dms」を指定します。

   ```
   openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr
   ```

   次のような、入力パラメーターを使用します。
   + `Country Name (2 letter code) [XX]`。例: `AU`
   + `State or Province Name (full name) []`。例: `NSW`
   + `Locality Name (e.g., city) [Default City]`。例: `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`。例: `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`。例: `aws`
   + `Common Name (e.g., your name or your server's hostname) []`。例: `aws`
   + `Email Address []`、例えば:abcd.efgh@amazonwebservice.com

   これがステップ 4 と同じでないことを確認してください。たとえば、組織単位名を図のように別の名前に変更することで、これを行うことができます。

   証明書要求とともに送信する追加属性を入力します。
   + `A challenge password []`。例: `oracle123`
   + `An optional company name []`。例: `aws`

1. 証明書の署名を取得します。

   ```
   openssl req -noout -text -in certdms.csr | grep -i signature
   ```

   この投稿の署名キーは `sha256WithRSAEncryption` となります。

1. 次のコマンドを実行して、証明書 (`.crt`) ファイルを生成します。

   ```
   openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key 
   -CAcreateserial -out certdms.crt -days 365 -sha256
   ```

   これにより次のような出力が生成されます。

   ```
   Signature ok
   subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws
   Getting CA Private Key
   ```

1. 証明書をウォレットに追加します。

   ```
   orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
   ```

1. ウォレットを見る。エントリが 2 つあるはずです。次のコードが表示されます。

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

1. `sqlnet.ora` ファイル (`$ORACLE_HOME/network/admin/sqlnet.ora`) を設定します。

   ```
   WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = /u01/app/oracle/wallet/)
        )
      ) 
   
   SQLNET.AUTHENTICATION_SERVICES = (NONE)
   SSL_VERSION = 1.0
   SSL_CLIENT_AUTHENTICATION = FALSE
   SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
   ```

1. Oracle リスナーを停止します。

   ```
   lsnrctl stop
   ```

1. `listener.ora` ファイル (`$ORACLE_HOME/network/admin/listener.ora`) に SSL のエントリを追加します。

   ```
   SSL_CLIENT_AUTHENTICATION = FALSE
   WALLET_LOCATION =
     (SOURCE =
       (METHOD = FILE)
       (METHOD_DATA =
         (DIRECTORY = /u01/app/oracle/wallet/)
       )
     )
   
   SID_LIST_LISTENER =
    (SID_LIST =
     (SID_DESC =
      (GLOBAL_DBNAME = SID)
      (ORACLE_HOME = ORACLE_HOME)
      (SID_NAME = SID)
     )
    )
   
   LISTENER =
     (DESCRIPTION_LIST =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
         (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
         (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
       )
     )
   ```

1. `tnsnames.ora` ファイル (`$ORACLE_HOME/network/admin/tnsnames.ora`) を設定します。

   ```
   <SID>=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   
   <SID>_ssl=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   ```

1. Oracle リスナーを再起動します。

   ```
   lsnrctl start
   ```

1. Oracle リスナーの状態を表示します。

   ```
   lsnrctl status
   ```

1. sqlplus と SSL tnsnames エントリを使用して、localhost からデータベースへの SSL 接続をテストします。

   ```
   sqlplus -L ORACLE_USER@SID_ssl
   ```

1. SSL を使用して正常に接続したことを確認します。

   ```
   SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL;
   
   SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')
   --------------------------------------------------------------------------------
   tcps
   ```

1. 現在のディレクトリを自己署名証明書のあるディレクトリに変更します。

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1.  AWS DMS が使用する新しいクライアント Oracle ウォレットを作成します。

   ```
   orapki wallet create -wallet ./ -auto_login_only
   ```

1. Oracle ウォレットに自己署名証明書を追加します。

   ```
   orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
   ```

1.  AWS DMS が使用する Oracle ウォレットの内容を一覧表示します。リストには自己署名証明書が含まれます。

   ```
   orapki wallet display -wallet ./
   ```

   これにより次のような出力が生成されます。

   ```
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. 先ほど作成した Oracle ウォレットをアップロードします AWS DMS。

## Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS
<a name="CHAP_Source.Oracle.Encryption"></a>

次の表に、Oracle ソースデータベースを使用する際に が AWS DMS サポートする透過的なデータ暗号化 (TDE) メソッドを示します。


| REDO ログのアクセス方法 | TDE テーブルスペース | TDE 列 | 
| --- | --- | --- | 
| Oracle LogMiner | はい  | はい | 
| Binary Reader | はい  | はい | 

AWS DMS は、バイナリリーダーを使用する場合、列レベルとテーブルスペースレベルの両方で Oracle TDE をサポートします。で TDE 暗号化を使用するには AWS DMS、まず TDE 暗号化キーと TDE パスワードが保存されている Oracle ウォレットの場所を特定します。次に、Oracle ソース エンドポイントの正しい TDE 暗号化キーとパスワードを特定します。

**TDE 暗号化の暗号化キーとパスワードを識別して指定するには**

1. 次のクエリを実行して、Oracle データベースホスト上の Oracle 暗号化ウォレットを検索します。

   ```
   SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET;
   
   WRL_PARAMETER
   --------------------------------------------------------------------------------
   /u01/oracle/product/12.2.0/dbhome_1/data/wallet/
   ```

   ここでは `/u01/oracle/product/12.2.0/dbhome_1/data/wallet/` がウォレットの場所です。

1. 次のように、CDB または CDB 以外のソースのマスターキー ID を取得します。

   1. CDB 以外のソースの場合は、次のクエリを実行してマスター暗号化キー ID を取得します。

      ```
      SQL>  select rownum, key_id, activation_time from v$encryption_keys;
      
      ROWNUM KEY_ID                                                 ACTIVATION_TIME
      ------ ------------------------------------------------------ ---------------
           1 AeKask0XZU+NvysflCYBEVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   04-SEP-24 10.20.56.605200 PM +00:00
           2 AV7WU9uhoU8rv8daE/HNnSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   10-AUG-21 07.52.03.966362 PM +00:00
           3 AckpoJ/f+k8xvzJ+gSuoVH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA   14-SEP-20 09.26.29.048870 PM +00:00
      ```

      アクティベーション時間は、過去のいずれかの時点から CDC を開始する予定がある場合に便利です。例えば、上記の結果を使用すると、10-AUG-21 07.52.03 PM から 14-SEP-20 09.26.29 PM までのいずれかの時点から、ROWNUM 2 のマスターキー ID で CDC を開始できます。タスクは、14-SEP-20 09.26.29 PM 以降に生成された REDO に到達すると失敗します。この場合、ソースエンドポイントを変更し、ROWNUM 3 のマスターキー ID を指定してからタスクを再開する必要があります。

   1. CDB ソースの場合、DMS には CDB\$1ROOT マスター暗号化キーが必要です。CDB\$1ROOT に接続し、次のクエリを実行します。

      ```
      SQL> select rownum, key_id, activation_time from v$encryption_keys where con_id = 1;
      
      ROWNUM KEY_ID                                               ACTIVATION_TIME
      ------ ---------------------------------------------------- -----------------------------------
           1 Aa2E/Vwb5U+zv5hCncS5ErMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 29-AUG-24 12.51.19.699060 AM +00:00
      ```

1. コマンド・ラインから、ソース Oracle データベース ホスト上の暗号化ウォレット エントリをリストします。

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list
   Oracle Secret Store entries:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
   ORACLE.SECURITY.ID.ENCRYPTION.
   ORACLE.SECURITY.KB.ENCRYPTION.
   ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

   ステップ 2 (`AWGDC9glSk8Xv+3bVveiVSg`) で確認したマスター キー ID を含むエントリを検索します。このエントリは TDE 暗号化キー名です。

1. 前のステップで検索したエントリの詳細を表示します。

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   Oracle Secret Store Tool : Version 12.2.0.1.0
   Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
   Enter wallet password:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   ウォレット パスワードを入力して結果を確認します。

   ここで、`'='` の右にある値は TDE パスワードです。

1. Oracle ソース エンドポイントの TDE 暗号化キー名を指定するには、`securityDbEncryptionName` 追加の接続属性を設定します。

   ```
   securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

1. Oracle ソース**パスワード**値の一部としてコンソールでこのキーに関連付けられた TDE パスワードを入力します。パスワード値。TDE パスワード値で終わるコンマ区切りのパスワード値をフォーマットするには、次の順序を使用します。

   ```
   Oracle_db_password,ASM_Password,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Oracle データベースの設定に関係なく、この順序でパスワード値を指定します。たとえば、TDE を使用していて Oracle データベースで ASM を使用していない場合、関連するパスワード値をカンマで区切って次の順序で指定します。

   ```
   Oracle_db_password,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

指定した TDE 認証情報が正しくない場合、 AWS DMS 移行タスクは失敗しません。ただしこのタスクでは、進行中のレプリケーションで、ターゲット データベースに対する変更の読み取りまたは適用を実行しません。タスクを開始したら、コンソール移行タスクページで**テーブル統計**を監視し、変更レプリケーションがなされていることを確認します。

タスクの実行中に DBA によって Oracle データベースの TDE 認証情報値が変更された場合、タスクは失敗します。エラーメッセージには、新しい TDE 暗号化キー名が含まれています。新しい値を指定してタスクを再開するには、前の手順を使用します。

**重要**  
OS レベルの`cp`、`mv`、`orapki` や `mkstore`などのコマンドではASM の場所に保存されているウォレットファイルが破損するため、Oracle 自動ストレージ管理(ASM)の場所で作成された TDE ウォレットを操作することはできません。この制限は、ASM の場所に格納された TDE ウォレット ファイルにのみに固有であり、ローカル OS ディレクトリに格納されている TDE ウォレット ファイルは対象外です。  
ASM に格納されている TDE ウォレットを OS レベルのコマンドで操作するには、ローカル キーストアを作成し、次のように ASM キーストアをローカル キーストアにマージします：  
ローカル キーストアを作成します。  

   ```
   ADMINISTER KEY MANAGEMENT create keystore file system wallet location identified by wallet password;
   ```
ASM キーストアをローカル キーストアにマージします。  

   ```
   ADMINISTER KEY MANAGEMENT merge keystore ASM wallet location identified by wallet password into existing keystore file system wallet location identified by wallet password with backup;
   ```
次に、暗号化ウォレット エントリと TDE パスワードを一覧表示するには、ローカル キーストアに対してステップ 3 と 4 を実行します。

## Oracle を のソースとして使用するためのサポートされている圧縮方法 AWS DMS
<a name="CHAP_Source.Oracle.Compression"></a>

次の表に、Oracle ソースデータベースを使用する際に が AWS DMS サポートする圧縮方法を示します。表に示すように、圧縮のサポートは、Oracle データベースのバージョンと、Oracle LogMiner を使用して REDO ログにアクセスするように DMS が設定されているかどうかによって異なります。


| バージョン | Basic | OLTP |  HCC (Oracle 11g R2 より)  | その他 | 
| --- | --- | --- | --- | --- | 
| Oracle 10 | いいえ | 該当なし | 該当なし | いいえ | 
| オラクル 11 以降 — Oracle LogMiner | はい  | はい | はい  | [Yes](はい) - Oracle LogMiner によってサポートされている任意の圧縮方法。 | 
| オラクル 11 以降 — Binary Reader | はい  | はい | [Yes](はい) - 詳細については、次の注をご参照ください。 | はい | 

**注記**  
Oracle ソースエンドポイントが Binary Reader を使用するように設定されている場合、HCC 圧縮方法の Query Low レベルは、全ロードタスクに対してのみサポートされます。

## Oracle を のソースとして使用してネストされたテーブルをレプリケートする AWS DMS
<a name="CHAP_Source.Oracle.NestedTables"></a>

AWS DMS は、ネストされたテーブルまたは定義された型である列を含む Oracle テーブルのレプリケーションをサポートします。この機能を有効にするには、Oracle ソース エンドポイントに以下の接続属性設定を追加します。

```
allowSelectNestedTables=true;
```

AWS DMS は、Oracle ネストされたテーブルからターゲットテーブルを、一意の制約なしでターゲット上の通常の親テーブルと子テーブルとして作成します。ターゲットの正しいデータにアクセスするには、親テーブルと子テーブルを結合します。これを行うには、まず、ターゲットの子テーブルの `NESTED_TABLE_ID` 列に一意でないインデックスを手動で作成します。その後、結合 `ON` 句の `NESTED_TABLE_ID` 列を、子テーブル名に対応する親列とともに使用できます。さらに、このようなインデックスを作成すると、ターゲットの子テーブルデータが によって更新または削除されるときのパフォーマンスが向上します AWS DMS。例については、[ターゲットの親テーブルと子テーブルの結合の例](#CHAP_Source.Oracle.NestedTables.JoinExample)を参照してください。

完全なロードが完了したら、タスクを停止するように設定することをお勧めします。次に、ターゲット上のすべてのレプリケートされた子テーブルに対して一意でないインデックスを作成し、タスクを再開します。

キャプチャされたネストされたテーブルが既存の親テーブルに追加された場合 (キャプチャ済みまたはキャプチャされていない）、 はそれを正しく AWS DMS 処理します。ただし、対応するターゲットテーブルの一意でないインデックスは作成されません。この場合、ターゲットの子テーブルが非常に大きくなると、パフォーマンスが影響を受ける可能性があります。このような場合は、タスクを停止し、インデックスを作成してからタスクを再開することをお勧めします。

ネストされたテーブルがターゲットにレプリケートされたら、DBA は親テーブルと対応する子テーブルに対して結合を実行し、データを平坦化します。

### Oracle ネストされたテーブルをソースとしてレプリケートするための前提条件
<a name="CHAP_Source.Oracle.NestedTables.Prerequisites"></a>

レプリケートされた、すべてのネストされたテーブルについて、親テーブルをレプリケートしてください。テーブル AWS DMS マッピングには、親テーブル (ネストされたテーブル列を含むテーブル) と子テーブル (ネストされたテーブル) の両方を含めます。

### ソースとしてサポートされている Oracle ネストされたテーブル型
<a name="CHAP_Source.Oracle.NestedTables.Types"></a>

AWS DMS は、ソースとして次の Oracle ネストされたテーブルタイプをサポートします。
+ データ型
+ ユーザー定義のオブジェクト

### ソースとしての Oracle ネストされたテーブル AWS DMS のサポートの制限
<a name="CHAP_Source.Oracle.NestedTables.Limitations"></a>

AWS DMS Oracle ネストされたテーブルをソースとしてサポートする場合、 には以下の制限があります。
+ AWS DMS は 1 レベルのテーブルネストのみをサポートします。
+ AWS DMS テーブルマッピングでは、親テーブルと子テーブルの両方がレプリケーション対象として選択されているかどうかはチェックされません。つまり、子のない親テーブル、または親のない子テーブルを選択する可能性があります。

### が Oracle ネストされたテーブルをソースとして AWS DMS レプリケートする方法
<a name="CHAP_Source.Oracle.NestedTables.HowReplicated"></a>

AWS DMS は、次のように親テーブルとネストされたテーブルをターゲットにレプリケートします。
+ AWS DMS はソースと同じ親テーブルを作成します。次に、親のネストされた列を `RAW(16)` として定義し、親のネストされたテーブルへの参照をその `NESTED_TABLE_ID` 列に含めます。
+ AWS DMS は、ネストされたソースと同じ子テーブルを作成しますが、 という名前の列を追加します`NESTED_TABLE_ID`。この列は、対応する親のネストされた列と同じ型と値を持ち、同じ意味を持ちます。

### ターゲットの親テーブルと子テーブルの結合の例
<a name="CHAP_Source.Oracle.NestedTables.JoinExample"></a>

親テーブルを平坦化するには、次の例に示すように、親テーブルと子テーブルの間で結合を実行します。

1. `Type` テーブルを作成します。

   ```
   CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
   ```

1. 前述のように型 `NESTED_TEST_T` 列を持つ親テーブルを作成します。

   ```
   CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
   ```

1. `CHILD.NESTED_TABLE_ID` が `PARENT.NAME` と一致する `NAME_KEY` 子テーブルとの結合を使用してテーブル `NESTED_PARENT_TEST` を平坦化します。

   ```
   SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_
   TABLE_ID = PARENT.NAME;
   ```

## Oracle を のソースとして使用する場合の Oracle ASM への REDO の保存 AWS DMS
<a name="CHAP_Source.Oracle.REDOonASM"></a>

REDO 生成が多い Oracle ソースの場合、REDO を Oracle ASM に保存すると、ASM REDO 読み取りをすべての ASM ノードに分散するように DMS を設定できるため、特に RAC 構成の場合にパフォーマンスが向上します。

この構成を利用するには、`asmServer` 接続属性を使用します。例えば、以下の接続文字列では、DMS REDO 読み取りが 3 つの ASM ノードに分散されます。

```
asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number)))
(CONNECT_DATA=(SERVICE_NAME=+ASM)))
```

NFS を使用して Oracle REDO を保存する場合、適切な DNFS (ダイレクト NFS) クライアントパッチ、特に Oracle のバグ 25224242 に対処するパッチが適用されていることを確認することが重要です。詳細については、Direct NFS クライアント関連のパッチに関する「[Recommended Patches for Direct NFS Client](https://support.oracle.com/knowledge/Oracle Cloud/1495104_1.html)」を参照してください。

さらに、NFS の読み取りパフォーマンスを向上するには、次の例のとおり NFS `fstab` ボリュームの `rsize` と `wsize` in の値を増やすことをお勧めします。

```
NAS_name_here:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev,
timeo=600,rsize=262144,wsize=262144
```

また、`tcp-max-xfer-size`値を次のとおり調整します。

```
vserver nfs modify -vserver vserver -tcp-max-xfer-size 262144
```

## のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Source.Oracle.ConnectionAttrib"></a>

エンドポイントの設定を使用して、追加の接続属性の使用する場合と同様に、ソースの Oracle のデータベースを設定できます。 AWS DMS コンソールを使用するか、`--oracle-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

次の表は、Oracle をソースとして使用できるエンドポイント設定を説明しています。


| 名前 | 説明 | 
| --- | --- | 
| AccessAlternateDirectly |  ソースとして Amazon RDS for Oracle の変更データを Binary Reader でキャプチャするには、この属性を false に設定します。この設定は、DMS インスタンスに対して、指定されたパスプレフィックス置換を使用してファイルへの直接アクセスで REDO ログにアクセスしないように指示します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。 デフォルト値: true  有効な値: true/false 例: `--oracle-settings '{"AccessAlternateDirectly": false}'`  | 
|  `AdditionalArchivedLogDestId`  |  この属性を、プライマリ スタンバイ セットアップで `ArchivedLogDestId` と設定します。この属性は、Oracle Data Guard データベースをソースとして使用する場合のスイッチオーバーに役立ちます。この場合、 は、変更を読み取るためにアーカイブ REDO ログを取得する送信先を知る AWS DMS 必要があります。これは、スイッチオーバー後、前のプライマリがスタンバイインスタンスになるためです。  AWS DMS では Oracle `RESETLOGS`オプションを使用してデータベースを開くことができますが、必要`RESETLOGS`がない限り を使用しないでください。`RESETLOGS` に関する追加情報については [Oracle® データベース Backup およびリカバリ ユーザーガイド](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/rman-data-repair-concepts.html#GUID-1805CCF7-4AF2-482D-B65A-998192F89C2B)の「*RMANデータ修復の概念*」をご参照ください。 有効値: アーカイブ先 ID 例: `--oracle-settings '{"AdditionalArchivedLogDestId": 2}'`  | 
|  `AddSupplementalLogging`  |  Oracle データベースにテーブルレベルのサプリメンタルロギングをセットアップするには、この属性を設定します。この属性は、テーブルのメタデータに応じて、移行タスク用に選択したすべてのテーブルで次のいずれかを有効にします。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.Oracle.html) デフォルト値: false  有効な値: true/false  例: `--oracle-settings '{"AddSupplementalLogging": false}'`  このオプションを使用する場合でも、前述のようにデータベースレベルサプリメンタルロギングを有効にする必要があります。   | 
|  `AllowSelectNestedTables`  |  ネストされたテーブルまたは定義された型である列を含む Oracle テーブルのレプリケーションを有効にするには、この属性を true に設定します。詳細については、「[Oracle を のソースとして使用してネストされたテーブルをレプリケートする AWS DMS](#CHAP_Source.Oracle.NestedTables)」を参照してください。 デフォルト値: false  有効な値: true/false 例: `--oracle-settings '{"AllowSelectNestedTables": true}'`  | 
|  `ArchivedLogDestId`  |  アーカイブされた REDO ログの宛先 ID を指定します。この値は、v\$1archived\$1log ビューの dest\$1id 列の数値と同じにする必要があります。追加の REDO ログの保存先を使用する場合は、`AdditionalArchivedLogDestId` 属性を使用して、追加の宛先 ID を指定するようお勧めします。これにより、最初から適切なログにアクセスされるため、パフォーマンスが向上します。 デフォルト値： 1 有効な値: 数値  例: `--oracle-settings '{"ArchivedLogDestId": 1}'`  | 
|  `ArchivedLogsOnly`  |  このフィールドが Y に設定されている場合、 はアーカイブされた REDO ログ AWS DMS にのみアクセスします。アーカイブされた REDO ログが Oracle ASM にのみ保存されている場合、 AWS DMS ユーザーアカウントに ASM 権限を付与する必要があります。 デフォルト値: N  有効な値: Y/N  例: `--oracle-settings '{"ArchivedLogsOnly": Y}'`  | 
|  `asmUsePLSQLArray` (ECA のみ)  |  BinaryReader でソースの変更をキャプチャする場合、この追加の接続属性 (ECA) を使用する。この設定により、DMS は `parallelASMReadThreads` 属性を使用してスレッド数を制御しながら、単一の読み取りスレッドごとに ASM レベルで 50 件の読み取りをバッファできるようになる。この属性を設定すると、 AWS DMS バイナリリーダーは匿名の PL/SQL ブロックを使用して REDO データをキャプチャし、大きなバッファとしてレプリケーションインスタンスに送り返します。これにより、ソースへの往復回数が低減する。これにより、ソースキャプチャのパフォーマンスは大幅に向上するとはいえ、ASM インスタンスの PGA メモリ消費量が増える。メモリターゲットが十分でない場合、安定性の問題が発生する可能性がある。次の式を使用して、単一の DMS タスクによる ASM インスタンスの PGA メモリの使用量合計を見積もることができる。`number_of_redo_threads * parallelASMReadThreads * 7 MB` デフォルト値: false 有効な値: true/false ECA の例:`asmUsePLSQLArray=true;`  | 
|  `ConvertTimestampWithZoneToUTC`  |  TIMESTAMP WITH TIME ZONE 列と TIMESTAMP WITH LOCAL TIME ZONE 列のタイムスタンプ値を UTC に変換するには、この属性を `true` に設定する。デフォルトでは、この属性の値は「false」で、データはソースデータベースのタイムゾーンを使用してレプリケートされる。 デフォルト値: false 有効な値: true/false 例: `--oracle-settings '{"ConvertTimestampWithZoneToUTC": true}'`  | 
|  `EnableHomogenousPartitionOps`  |  この属性を `true` に設定すると、**Oracle の同種移行のための Oracle パーティションとサブパーティションの DDL 操作をレプリケートできる。 この機能はバージョン 3.4.7 AWS DMS で導入されたことに注意してください。 デフォルト値: false 有効な値: true/false 例: `--oracle-settings '{"EnableHomogenousPartitionOps": true}'`  | 
|  `EnableHomogenousTablespace`  |  同種のテーブルスペースのレプリケーションを有効にし、ターゲットの同じテーブルスペースで既存のテーブルまたはインデックスを作成するには、この属性を設定します。 デフォルト値: false 有効な値: true/false 例: `--oracle-settings '{"EnableHomogenousTablespace": true}'`  | 
|  `EscapeCharacter`  |  この属性はエスケープ文字に設定する。このエスケープ文字を使うと、単一のワイルドカード文字をテーブルマッピング式で通常の文字のように動作させることができる。詳細については、「[テーブルマッピングのワイルドカード](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Wildcards.md)」を参照してください。 デフォルト値: Null  有効値: ワイルドカード文字以外の任意の文字 例: `--oracle-settings '{"EscapeCharacter": "#"}'` `escapeCharacter` はテーブル名にのみ使用できる。スキーマ名や列名でエスケープ文字は使用できない。  | 
|  `ExposeViews`  |  この属性を使ってビューからデータを 1 回プルできます。これを継続的なレプリケーションに使用することはできません。ビューからデータを抽出すると、そのビューはターゲットスキーマのテーブルとして表示されます。 デフォルト値: false 有効な値: true/false 例: `--oracle-settings '{"ExposeViews": true}'`  | 
|  `ExtraArchivedLogDestIds`  |  1 つ以上のアーカイブされた REDO ログに対する 1 つ以上の送信先の ID を指定します。このような ID は、v\$1archived\$1log ビューの dest\$1id 列の値である。この設定は、プライマリからシングルへのセットアップまたはプライマリからマルチスタンバイへのセットアップの ArchivedLogDestId 追加接続属性で使用する。 この属性は、Oracle Data Guard データベースをソースとして使用するときの切り替えに役立ちます。この場合、 は変更を読み取るためにアーカイブ REDO ログを取得する送信先に関する情報 AWS DMS を必要とします。これは、前のプライマリのスイッチオーバー後がスタンバイインスタンスであるため AWS DMS です。 有効値:アーカイブ先 ID 例: `--oracle-settings '{"ExtraArchivedLogDestIds": 1}'`  | 
|  `FailTasksOnLobTruncation`  |  `true` に設定されると、LOB 列の実際のサイズが指定された `LobMaxSize` よりも大きい場合、この属性によりタスクは失敗します。 タスクが制限付き LOB モードに設定され、このオプションが `true` に設定されている場合、LOB データを切り捨てるのではなくタスクが失敗します。 デフォルト値: false  有効な値: ブール値  例: `--oracle-settings '{"FailTasksOnLobTruncation": true}'`  | 
|  `filterTransactionsOfUser` (ECA のみ)  |  LogMiner を使用する場合、Oracle からデータをレプリケートする際に、DMS が指定されたユーザーからのトランザクションを無視できるようにするには、この追加の接続属性 (ECA) を使用する。カンマ区切りのユーザー名の値を渡すことができる。ただし、すべて大文字にする必要がある。 ECA の例:`filterTransactionsOfUser=USERNAME;`  | 
|  `NumberDataTypeScale`  |  数値のスケールを指定します。最大 38 のスケールを選択するか、FLOAT には -1、VARCHAR には -2 を選択できます。デフォルトでは、NUMBER データ型が精度 38、スケール 10 に変換されます。 デフォルト値: 10  有効な値: -2〜38 (VARCHAR では -2、FLOAT の場合は -1) 例: `--oracle-settings '{"NumberDataTypeScale": 12}'`  精度スケールの組み合わせ、-1 (FLOAT) または -2 (VARCHAR) を選択します。DMS は、Oracle がサポートする精度スケールの組み合わせをサポートします。精度が 39 以上の場合は、-2 (VARCHAR) を選択します。Oracle データベースの NumberDataTypeScale 設定は、NUMBER データ型にのみ使用される (明示的な精度と位取りの定義はない)。この設定が正しくない場合、精度が失われる可能性があることに注意してください。   | 
|  `OpenTransactionWindow`  |   CDC のみのタスクでオープントランザクションを確認する時間枠を分単位で指定する。 `OpenTransactionWindow` を 1 以上に設定すると、DMS は `SCN_TO_TIMESTAMP` を使用して SCN 値をタイムスタンプ値に変換します。Oracle Database の制限事項により、CDC の開始点として古すぎる SCN を指定すると、SCN\$1TO\$1TIMESTAMP は `ORA-08181` エラーで失敗し、CDC のみのタスクを開始することはできません。 デフォルト値: 0  有効値: 0～240 の整数 例: `openTransactionWindow=15;`  | 
| OraclePathPrefix | Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、REDO ログにアクセスするために使用されるデフォルトの Oracle ルートを指定します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。デフォルト値： なし 有効な値: /rdsdbdata/db/ORCL\$1A/ 例: `--oracle-settings '{"OraclePathPrefix": "/rdsdbdata/db/ORCL_A/"}'`  | 
| ParallelASMReadThreads |  この属性を設定して、DMS が Oracle 自動ストレージ管理 (ASM) を使用して変更データ キャプチャ (CDC) を実行するように設定するスレッドの数を変更します。2 (デフォルト) から 8 (最大) までの整数値を指定できます。この属性は `ReadAheadBlocks` 属性とともに使用します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。 デフォルト値: 2  有効な値: 2～8 の整数 例: `--oracle-settings '{"ParallelASMReadThreads": 6;}'`  | 
| ReadAheadBlocks |  この属性を設定して、 Oracle Automatic Storage Management (ASM) と ASM 以外の NAS ストレージを使用して CDC を実行するように DMS が設定する先読みブロック数を変更する。1000 (デフォルト) から 2,000,000 (最大値) までの整数値を指定できます。この属性は `ParallelASMReadThreads` 属性とともに使用します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。 デフォルト値: 1000  有効な値: 1,000～2,000,000 の整数 例: `--oracle-settings '{"ReadAheadBlocks": 150000}'`  | 
|  `ReadTableSpaceName`  |  `true` に設定すると、この属性はテーブルスペースのレプリケーションをサポートします。 デフォルト値: false  有効な値: ブール値  例: `--oracle-settings '{"ReadTableSpaceName": true}'`  | 
| ReplacePathPrefix | Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、デフォルトの Oracle ルートを UsePathPrefix の設定に置換して REDO ログにアクセスするように指示します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。デフォルト値: false 有効な値: true/false 例: `--oracle-settings '{"ReplacePathPrefix": true}'`  | 
|  `RetryInterval`  |  システムがクエリを再送するまで待機する時間の秒数を指定します。 デフォルト値: 5  有効な値: 1 以降の数値  例: `--oracle-settings '{"RetryInterval": 6}'`  | 
|  `SecurityDbEncryptionName`  |  Oracle ソースデータベースの列およびテーブルスペースの透過的データ暗号化 (TDE) に使用されるキーの名前を指定します。Oracle ソースエンドポイントでのこの属性とそれに関連付けられたパスワードの設定の詳細については、「[Oracle を のソースとして使用するためのサポートされている暗号化方法 AWS DMS](#CHAP_Source.Oracle.Encryption)」をご参照ください。 デフォルト値: "" 有効な値: 文字列  例: `--oracle-settings '{"SecurityDbEncryptionName": "ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}'`  | 
|  `SpatialSdo2GeoJsonFunctionName`  |  PostgreSQL ターゲットに移行する Oracle バージョン 12.1 以前のソースの場合、この属性を使用して SDO\$1GEOMETRY 形式を GEOJSON 形式に変換します。 デフォルトでは、 は AWS DMS 、ユーザーが存在し、アクセスできる必要がある`SDO2GEOJSON`カスタム関数を AWS DMS 呼び出します。または、`SDOGEOJSON` のオペレーションを模倣する独自のカスタム関数を作成し、代わりにそれを呼び出すように `SpatialSdo2GeoJsonFunctionName` を設定することもできます。 デフォルト値: SDO2GEOJSON 有効な値: 文字列  例: `--oracle-settings '{"SpatialSdo2GeoJsonFunctionName": "myCustomSDO2GEOJSONFunction"}'`  | 
|  `StandbyDelayTime`  |  この属性を使用して、スタンバイ同期の遅延時間を分単位で指定します。ソースが Active Data Guard スタンバイデータベースの場合、この属性を使用して、プライマリ データベースとスタンバイ データベース間のタイムラグを指定します。 では AWS DMS、進行中の変更をレプリケートするためのソースとして Active Data Guard スタンバイインスタンスを使用する Oracle CDC タスクを作成できます。これにより、運用中のアクティブなデータベースに接続する必要がなくなります。 デフォルト値: 0  有効な値: 数値  例: `--oracle-settings '{"StandbyDelayTime": 1}'` **注:** DMS 3.4.6、3.4.7 以降を使用している場合、この接続設定の使用は任意となる。DMS 3.4.6 とバージョン 3.4.7 の最新バージョンでは、DMS がスタンバイ遅延時間を計算できるように`dms_user` に `V_$DATAGUARD_STATS` に対する `select` アクセス権限が必要となる。  | 
| UseAlternateFolderForOnline | Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、指定されたプレフィックス置換を使用してすべてのオンライン REDO ログにアクセスするように指示します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。デフォルト値: false 有効な値: true/false 例: `--oracle-settings '{"UseAlternateFolderForOnline": true}'`  | 
| UseBfile |  Binary Reader ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します。この属性を Y に設定するため、`UseLogminerReader` を N に設定します。また、 Amazon RDS for Oracle でソースとして Binary Reader を使用するには、追加の属性を設定します。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、[CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC) を参照してください 注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は `true` と `false` となる。 デフォルト値: N  有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合) 例: `--oracle-settings '{"UseBfile": Y}'`  | 
|  `UseLogminerReader`  |  LogMiner ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します (デフォルト)。 AWS DMS がバイナリファイルとして REDO ログにアクセスするようにする場合は、このオプションを N に設定します。このオプションを N に設定すると、useBfile=Y という設定も追加されます。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、「[CDC での Oracle LogMiner または AWS DMS Binary Reader の使用](#CHAP_Source.Oracle.CDC)」をご参照ください。 注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は `true` と `false` となる。 デフォルト値: Y  有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合) 例: `--oracle-settings '{"UseLogminerReader": Y}'`  | 
| UsePathPrefix | Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、デフォルトの Oracle ルートを置換して REDO ログにアクセスするために使用されるパスプレフィックスを指定します。詳細については、「[の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC)」を参照してください。デフォルト値： なし 有効な値: /rdsdbdata/log/ 例: `--oracle-settings '{"UsePathPrefix": "/rdsdbdata/log/"}'`  | 

## Oracle のソースデータ型
<a name="CHAP_Source.Oracle.DataTypes"></a>

の Oracle エンドポイントは、ほとんどの Oracle データ型 AWS DMS をサポートしています。次の表は、 の使用時にサポートされる Oracle ソースデータ型 AWS DMS と、 AWS DMS データ型へのデフォルトのマッピングを示しています。

**注記**  
LONG と LONG RAW データ型を除き、Oracle ソースから Oracle ターゲットにレプリケーションする場合 (*均質なレプリケーション*)、ソースとターゲットのすべてのデータ型が同一になります。ただし、LONG データ型は CLOB にマッピングされ、LONG RAW データ型は BLOB にマップされます。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  Oracle のデータ型  |  AWS DMS データ型  | 
| --- | --- | 
|  BINARY\$1FLOAT  |  REAL4  | 
|  BINARY\$1DOUBLE  |  REAL8  | 
|  BINARY  |  BYTES  | 
|  FLOAT (P)  |  精度が 24 以下の場合、REAL4 を使用します。 精度が 24 より高い場合、REAL8 を使用します。  | 
|  NUMBER (P,S)  |  位取りが 0 より大きい場合、NUMERIC を使用する。 スケールが 0 の場合 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.Oracle.html) 位取りが 0 未満の場合、REAL8 を使用する。 | 
|  DATE  |  DATETIME  | 
|  INTERVAL\$1YEAR TO MONTH  |  STRING (間隔 year\$1to\$1month を指定)  | 
|  INTERVAL\$1DAY TO SECOND  |  STRING (間隔 day\$1to\$1second を指定)  | 
|  TIMESTAMP  |  DATETIME  | 
|  タイムスタンプ時間帯あり  |  STRING (timestamp\$1with\$1timezone を指定)  | 
|  タイムスタンプ現地時間帯あり  |  STRING (timestamp\$1with\$1local\$1 timezone を指定)  | 
|  CHAR  |  STRING  | 
|  VARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  RAW  |  BYTES  | 
|  REAL  |  REAL8  | 
|  BLOB  |  BLOB このデータ型を で使用するには AWS DMS、特定のタスクで BLOB データ型の使用を有効にする必要があります。 は、プライマリキーを含むテーブルでのみ BLOB データ型 AWS DMS をサポートします。  | 
|  CLOB  |  CLOB このデータ型を で使用するには AWS DMS、特定のタスクで CLOB データ型の使用を有効にする必要があります。CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。  | 
|  NCLOB  |  NCLOB このデータ型を で使用するには AWS DMS、特定のタスクで NCLOB データ型の使用を有効にする必要があります。CDC 中、 はプライマリキーを含むテーブルでのみ NCLOB データ型 AWS DMS をサポートします。  | 
|  LONG  |  CLOB LONG データ型は、最適化バッチ適用モード (TurboStream CDC モード) ではサポートされません。 このデータ型を で使用するには AWS DMS、特定のタスクで LOBs の使用を有効にします。 CDC または全ロード中、 はプライマリキーを持つテーブルでのみ LOB データ型 AWS DMS をサポートします。 また、 AWS DMS は LONG 列をロードするためのフル LOB モードをサポートしていません。この代わりに、制限付き LOB モードを使用して LONG 列を Oracle ターゲットに移行できる。限定 LOB モードでは、 は、64 KB を超える LONG 列に設定したすべてのデータを 64 KB に AWS DMS 切り捨てます。での LOB サポートの詳細については AWS DMS、「」を参照してください。 [AWS DMS タスクでのソースデータベースの LOB サポートの設定](CHAP_Tasks.LOBSupport.md)  | 
|  LONG RAW  |  BLOB LONG RAW データ型は、最適化バッチ適用モード (TurboStream CDC モード) ではサポートされません。 このデータ型を で使用するには AWS DMS、特定のタスクで LOBs の使用を有効にします。 CDC または全ロード中、 はプライマリキーを持つテーブルでのみ LOB データ型 AWS DMS をサポートします。 また、 AWS DMS は LONG RAW 列をロードするためのフル LOB モードをサポートしていません。この代わりに、制限付き LOB モードを使用して LONG RAW 列を Oracle ターゲットに移行できる。制限付き LOB モードでは、 AWS DMS は 64 KB を超える LONG RAW 列に設定したデータを 64 KB に切り捨てる。での LOB サポートの詳細については AWS DMS、「」を参照してください。 [AWS DMS タスクでのソースデータベースの LOB サポートの設定](CHAP_Tasks.LOBSupport.md)  | 
|  XMLTYPE  |  CLOB  | 
| SDO\$1GEOMETRY | BLOB (Oracle から Oracle への移行の場合)CLOB (Oracle から PostgreSQL への移行の場合) | 

以下のデータ型の列とともにソースとして使用されている Oracle テーブルはサポートされておらず、レプリケートすることができません。これらのデータ型の列をレプリケートすると NULL 列が発生します。
+ BFILE
+ ROWID
+ REF
+ UROWID
+ ユーザー定義のデータタイプ
+ ANYDATA
+ VARRAY

**注記**  
仮想列はサポートされていません。

### Oracle 空間データ型の移行
<a name="CHAP_Source.Oracle.DataTypes.Spatial"></a>

*空間データ*は、空間内のオブジェクトまたは場所のジオメトリ情報を識別します。Oracle データベースでは、空間オブジェクトのジオメトリ説明は型 SDO\$1GEOMETRY のオブジェクトに保存されます。このオブジェクト内では、ジオメトリ説明は、ユーザー定義テーブルの 1 つの列の 1 つの行に格納されます。

AWS DMS は、Oracle ソースから Oracle または PostgreSQL ターゲットへの Oracle タイプ SDO\$1GEOMETRY の移行をサポートします。

を使用して Oracle 空間データ型を移行する場合は AWS DMS、次の考慮事項に注意してください。
+ Oracle ターゲットに移行する場合は、型情報を含む USER\$1SDO\$1GEOM\$1METADATA エントリを手動で転送してください。
+ Oracle ソースエンドポイントから PostgreSQL ターゲットエンドポイントに移行すると、 はターゲット列 AWS DMS を作成します。これらの列には、2D ディメンションとゼロ (0) に等しい空間参照識別子 (SRID) を持つデフォルトのジオメトリおよび地理的型情報があります。例: `GEOMETRY, 2, 0`。
+ PostgreSQL ターゲットに移行する Oracle バージョン 12.1 以前のソースの場合、`SDO2GEOJSON` 関数または `spatialSdo2GeoJsonFunctionName` 追加の接続属性を使用して `SDO_GEOMETRY` オブジェクトを `GEOJSON` 形式に変換します。詳細については、「[のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)」を参照してください。
+ AWS DMS は、フル LOB モードの Oracle 空間列移行のみをサポートします。 AWS DMS は、制限付き LOB モードまたはインライン LOB モードをサポートしていません。LOB モードの詳細については、「[AWS DMS タスクでのソースデータベースの LOB サポートの設定](CHAP_Tasks.LOBSupport.md)」を参照。
+ は Oracle Spatial 列を移行するためのフル LOB モード AWS DMS のみをサポートしているため、列のテーブルにはプライマリキーと一意のキーが必要です。プライマリキーと一意のキーがないテーブルは移行でスキップされる。

# のソースとしての Microsoft SQL Server データベースの使用 AWS DMS
<a name="CHAP_Source.SQLServer"></a>

を使用して、1 つ以上の Microsoft SQL Server データベースからデータを移行します AWS DMS。SQL Server データベースをソースとして使用すると、別の SQL Server データベースまたは AWS DMS サポートされている他のデータベースのいずれかにデータを移行できます。

がソースとして AWS DMS サポートする SQL Server のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

ソース SQL Server データベースは、ネットワーク内のどのコンピュータにもインストールできます。選択したタスクのタイプに応じてソースデータベースに対する適切なアクセス権限のある SQL Server アカウントは、そのデータベースを AWS DMSで使用するために必要です。詳細については、「[SQL Server タスクのアクセス許可](#CHAP_Source.SQLServer.Permissions)」を参照してください。

AWS DMS は、SQL Server の名前付きインスタンスからのデータの移行をサポートしています。ソースエンドポイントを作成するとき、サーバー名では次の表記を使用できます。

```
IPAddress\InstanceName
```

たとえば、正しいソースエンドポイントサーバー名を以下に示します。ここでは、名前の最初の部分はサーバーの IP アドレス、2 番目の部分は SQL Server インスタンス名 (この例では SQLTest) です。

```
10.0.0.25\SQLTest
```

また、SQL Server の名前付きインスタンスがリッスンするポート番号を取得し、それを使用して AWS DMS ソースエンドポイントを設定します。

**注記**  
ポート 1433 は、Microsoft SQL Server のデフォルトです。ただし、SQL Server をスタートするたびに変化する動的ポート、およびファイアウォール経由で SQL Server に接続するために使用される特定の静的ポート番号もよく使用されます。したがって、 AWS DMS ソースエンドポイントを作成するときに、SQL Server の名前付きインスタンスの実際のポート番号を知る必要があります。

SSL を使用して、SQL Server エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。SQL Server エンドポイントで SSL を使用する方法の詳細については、「[での SSL の使用 AWS Database Migration Service](CHAP_Security.SSL.md)」をご参照ください。

SQL Server データベースからの継続的な移行に CDC を使用できます。CDC のソースの SQL Server データベースへの設定方法の詳細については、「[SQL Server からの継続的なレプリケーションのデータ変更をキャプチャする](CHAP_Source.SQLServer.CDC.md)」を参照してください。

SQL Server ソースデータベースと の操作の詳細については AWS DMS、以下を参照してください。

**Topics**
+ [SQL Server を のソースとして使用する場合の制限 AWS DMS](#CHAP_Source.SQLServer.Limitations)
+ [SQL Server タスクのアクセス許可](#CHAP_Source.SQLServer.Permissions)
+ [SQL Server のソースからの継続的なレプリケーション (CDC) を使用するための前提条件](#CHAP_Source.SQLServer.Prerequisites)
+ [SQL Server でサポートされている圧縮方法](#CHAP_Source.SQLServer.Compression)
+ [セルフマネージド型 SQL Server の AlwaysOn 可用性グループの使用](#CHAP_Source.SQLServer.AlwaysOn)
+ [SQL Server を のソースとして使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)
+ [SQL Server のソースデータ型](#CHAP_Source.SQLServer.DataTypes)
+ [SQL Server からの継続的なレプリケーションのデータ変更をキャプチャする](CHAP_Source.SQLServer.CDC.md)

## SQL Server を のソースとして使用する場合の制限 AWS DMS
<a name="CHAP_Source.SQLServer.Limitations"></a>

SQL Server データベースを AWS DMSのソースとして使用する場合は、以下の制限が適用されます。
+ 列のアイデンティティプロパティは、ターゲットデータベース列に移行されません。
+ SQL Server エンドポイントでは、スパース列のあるテーブルの使用はサポートされていません。
+ Windows 認証はサポートされていません。
+ SQL Server の計算済みフィールドの変更はレプリケーションされていません。
+ 一時テーブルはサポートされていません。
+ SQL Server パーティション切り替えはサポートされていません。
+ WRITETEXT および UPDATETEXT ユーティリティを使用する場合、ソースデータベースに適用されたイベントはキャプチャ AWS DMS されません。
+ 次のデータ操作言語 (DML) パターンはサポートされていません。

  ```
  SELECT * INTO new_table FROM existing_table
  ```
+ SQL Server をソースとして使用している場合、列レベルの暗号化はサポートされていません。
+ AWS DMS は、ソースとしての SQL Server 2008 または SQL Server 2008 R2 でのサーバーレベルの監査をサポートしていません。これは、SQL Server 2008 および 2008 R2 に関する既知の問題が原因です。たとえば、次のコマンドを実行すると、 は失敗 AWS DMS します。

  ```
  USE [master]
  GO 
  ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on)
  GO
  ```
+ SQL Server をソースとして使用する場合、GEOMETRY および GEOGRAPHY 型の列は完全 LOB モードではサポートされません。代わりに、制限付き LOB モードを使用するか、インライン LOB モードを使用するように `InlineLobMaxSize` タスク設定を行います。
+ レプリケーションタスクで Microsoft SQL Server のソースデータベースを使用する場合、このタスクを削除しても、SQL Server Replication Publisher 定義は削除されません。Microsoft SQL Server システム管理者がそれらの定義を Microsoft SQL Server から削除する必要があります。
+ スキーマバインドビューと非スキーマバインドビューからのデータの移行は、フルロードのみのタスクでサポートされます。
+ sp\$1rename を使用したテーブルの名前の変更はサポートされていません (たとえば、`sp_rename 'Sales.SalesRegion', 'SalesReg;)`)。
+ sp\$1rename を使用した列の名前の変更はサポートされていません (たとえば、`sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';`)。
+ AWS DMS では、列のデフォルト値を設定および設定解除する変更処理はサポートされていません ( `ALTER TABLE` ステートメントで `ALTER COLUMN SET DEFAULT`句を使用）。
+ AWS DMS は、列の null 可能性を設定する変更処理をサポートしていません ( `ALTER TABLE` ステートメントで `ALTER COLUMN [SET|DROP] NOT NULL`句を使用）。
+ SQL Server 2012 および SQL Server 2014 では、可用性グループで DMS レプリケーションを使用する場合、ディストリビューション データベースを可用性グループに配置できません。SQL 2016 では、マージ、双方向、またはピアツーピアのレプリケーション トポロジで使用されるディストリビューション データベースを除き、ディストリビューション データベースを可用性グループに配置できます。
+ パーティションテーブルの場合、 AWS DMS はパーティションごとに異なるデータ圧縮設定をサポートしていません。
+ SQL Server の空間データ型 (GEOGRAPHY および GEOMETRY) に値を挿入するときは、SRID (空間リファレンス系識別子) プロパティを無視するか、別の数値を指定できます。空間データ型のテーブルをレプリケートする場合、 は SRID をデフォルトの SRID (GEOMETRY の場合は 0、GEOGRAPHY の場合は 4326) AWS DMS に置き換えます。
+ データベースが MS-REPLICATION または MS-CDC 用に設定されていない場合でも、プライマリキーを持たないテーブルをキャプチャできますが、INSERT/DELETE DML イベントのみがキャプチャされます。UPDATE イベント TRUNCATE TABLE イベントは無視されます。
+ Columnstore インデックスはサポートされていません。
+ メモリ最適化テーブル (インメモリ OLTP を使用) はサポートされていません。
+ 複数の列で構成されるプライマリ キーを持つテーブルをレプリケーションする場合、全ロード中にプライマリ キー列の更新はサポートされません。
+ 遅延永続化はサポートされていません。
+ RDS がバックアップを実行する方法が原因で、`readBackupOnly=true` エンドポイント設定 (追加の接続属性) は RDS for SQL Server ソースインスタンスでは機能しません。
+ RDS ユーザーは SQL Server ストアド プロシージャ (`sp_repldone`) を実行するアクセス権がないため、Amazon RDS SQL Server ソースインスタンスで `EXCLUSIVE_AUTOMATIC_TRUNCATION` は動作しません。
+ AWS DMS は切り捨てコマンドをキャプチャしません。
+ AWS DMS は、高速データベースリカバリ (ADR) が有効になっているデータベースからのレプリケーションをサポートしていません。
+ AWS DMS は、単一のトランザクション内でのデータ定義言語 (DDL) およびデータ操作言語 (DML) ステートメントのキャプチャをサポートしていません。
+ AWS DMS は、データ層アプリケーションパッケージ (DACPAC) のレプリケーションをサポートしていません。
+ プライマリキーまたは一意のインデックスが関連し、複数のデータ行を更新する UPDATE ステートメントについては、ターゲットデータベースに変更を適用すると競合が発生する可能性があります。これは例えば、ターゲットデータベースが単一の UPDATE ステートメントではなく INSERT や DELETE のステートメントとして更新を適用する場合に発生する可能性があります。バッチ最適化の適用モードでは、テーブルが無視されることがあります。トランザクション適用モードでは、UPDATE 操作により制約違反が発生する可能性があります。この問題を回避するには、関連するテーブルをもう一度ロードします。または、例外の適用コントロールテーブル (`dmslogs.awsdms_apply_exceptions`) で問題のあるレコードを検出して、ターゲットデータベースで手動で編集することもできます。詳細については、「[変更処理のチューニング設定](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)」を参照してください。
+ AWS DMS では、テーブルとスキーマのレプリケーションはサポートされていません。名前には次のセットの特殊文字が含まれます。

  `\\ -- \n \" \b \r ' \t ;` 
+ データマスキングはサポートされていません。 はマスキングなしでマスクされたデータを AWS DMS 移行します。
+ AWS DMS は、プライマリキーを持つ最大 32,767 個のテーブルと、テーブルごとに最大 1,000 個の列をレプリケートします。これは、 がレプリケートされたテーブルごとに SQL Server レプリケーション記事 AWS DMS を作成し、SQL Server レプリケーション記事にはこれらの制限があるためです。
+ 変更データキャプチャ (CDC) を使用する場合、一意のインデックスを構成するすべての列を `NOT NULL` として定義する必要があります。この要件が満たされない場合、SQL Server システムエラー 22838 が発生します。
+ SQL Server がアクティブトランザクションログからバックアップログにアーカイブしたり、アクティブトランザクションログから切り捨てたりすると、イベントが損失する可能性があります。

バックアップトランザクションログにアクセスするときには、次の制限が適用されます。
+ 暗号化バックアップはサポートされていません。
+ URL または Windows Azure に保存されたバックアップはサポートされていません。
+ AWS DMS doe は、代替共有フォルダからのファイルレベルでのトランザクションログバックアップの直接処理をサポートしていません。
+ Amazon RDS for Microsoft SQL Server 以外の Cloud SQL Server ソースの場合、 はアクティブなトランザクションログでのみ継続的なレプリケーション (CDC) AWS DMS をサポートします。CDC ではバックアップログを使用できません。SQL Server がアクティブトランザクションログからバックアップログにアーカイブしたり、DMS が読み取れるようになる前にアクティブトランザクションログから切り捨てたりすると、イベントが損失する可能性があります。
+ Amazon RDS for Microsoft SQL Server ソースの場合、DMS は CDC でバックアップログにアクセスできないため、 AWS DMS 3.5.2 以前はアクティブなトランザクションログでのみ継続的なレプリケーション (CDC) をサポートしています。RDS for SQL Server がアクティブトランザクションログからバックアップログにアーカイブしたり、DMS が読み取れるようになる前にアクティブトランザクションログから切り捨てたりすると、イベントが損失する可能性があります。この制限は、 AWS DMS バージョン 3.5.3 以降には適用されません。
+ AWS DMS は、ソースとして Amazon RDS Proxy for SQL Server の CDC をサポートしていません。
+ 全ロードタスク中に SQL Server ソースが使用できなくなった場合、データ移行が不完全であっても、 AWS DMS は再接続を複数回試行した後にタスクを完了済みとしてマークすることがあります。このシナリオでは、接続が失われる前に移行されたレコードのみがターゲットテーブルに含まれるため、ソースシステムとターゲットシステムの間にデータの不整合が生じる可能性があります。データの完全性を確保するには、全ロードタスクを完全に再起動するか、接続の中断の影響を受ける特定のテーブルを再ロードする必要があります。

## SQL Server タスクのアクセス許可
<a name="CHAP_Source.SQLServer.Permissions"></a>

**Topics**
+ [全ロードのみのタスクに対する許可](#CHAP_Source.SQLServer.Permissions.FullLoad)
+ [継続的なレプリケーションを使用するタスクのアクセス許可](#CHAP_Source.SQLServer.Permissions.Ongoing)

### 全ロードのみのタスクに対する許可
<a name="CHAP_Source.SQLServer.Permissions.FullLoad"></a>

全ロード専用タスクを実行するには、次の許可が必要です。 AWS DMS は `dms_user` ログインを作成しないことに注意します。SQL Server のログインの作成については、*Microsoft のドキュメント*の「[データベースユーザーの作成](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16)」トピックを参照してください。

```
USE db_name;
                
                CREATE USER dms_user FOR LOGIN dms_user; 
                ALTER ROLE [db_datareader] ADD MEMBER dms_user; 
                GRANT VIEW DATABASE STATE to dms_user;
                GRANT VIEW DEFINITION to dms_user;
                
                USE master;
                
                GRANT VIEW SERVER STATE TO dms_user;
```

### 継続的なレプリケーションを使用するタスクのアクセス許可
<a name="CHAP_Source.SQLServer.Permissions.Ongoing"></a>

セルフマネージド型 SQL Server インスタンスは、`sysadmin` ロールの使用の有無にかかわらず、DMS を使用した継続的なレプリケーション用に設定できます。`sysadmin` ロールを付与できない SQL Server インスタンスの場合、DMS ユーザーに次に説明される権限があることを確認します。

**セルフマネージド型 SQL Server データベースからの継続的なレプリケーションのアクセス許可を設定する**

1. SQL Server Management Studio (SSMS) を使用したパスワード認証を使用して、また `self_managed_user` など、前に「[全ロードのみのタスクに対する許可](#CHAP_Source.SQLServer.Permissions.FullLoad)」で説明したように、新しい SQL Server アカウントを作成します。

1. 以下の `GRANT` コマンドを実行します。

   ```
   GRANT VIEW SERVER STATE TO self_managed_user;
   
   USE msdb;
       GRANT SELECT ON msdb.dbo.backupset TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupmediafamily TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupfile TO self_managed_user;
       
   USE db_name;
       CREATE USER self_managed_user FOR LOGIN self_managed_user;
       ALTER ROLE [db_owner] ADD MEMBER self_managed_user;
       GRANT VIEW DEFINITION to self_managed_user;
   ```

1. 前述のアクセス許可に加えて、ユーザーは以下のいずれかが必要です。
   + ユーザーは `sysadmin` 固定サーバーロールのメンバーである必要があります
   + ソース設定に応じ、[可用性グループ環境の SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールなし](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.ag) または [スタンドアロン SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールなし](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.standalone) で説明されている設定とアクセス許可。

#### クラウド SQL Server データベースからの継続的なレプリケーションのアクセス許可を設定する
<a name="CHAP_Source.SQLServer.Permissions.Cloud"></a>

クラウドでホストされる SQL Serverインスタンスは、Amazon RDS for Microsoft SQL Server、Azure SQL Manged Instance、または DMS でサポートされるその他のマネージド型クラウド SQL Server インスタンス上で実行されるインスタンスです。

SQL Server Management Studio (SSMS) を使用したパスワード認証を使用して、また `rds_user` など、前に「[全ロードのみのタスクに対する許可](#CHAP_Source.SQLServer.Permissions.FullLoad)」で説明したように、新しい SQL Server アカウントを作成します。

以下の付与コマンドを実行します。

```
GRANT VIEW SERVER STATE TO rds_user;
```

Amazon RDS for Microsoft SQL Server ソースの場合、DMS バージョン 3.5.3 以降では、トランザクションログのバックアップからの読み取りがサポートされています。DMS がログのバックアップにアクセスできるようにするには、上記に加えて `master` ユーザー権限、または RDS SQL Server ソースの以下の権限を付与します。

```
USE msdb;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_download TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_read TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_list_current_lsn TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_task_status TO rds_user;
    
USE db_name;
    CREATE USER rds_user FOR LOGIN rds_user;
    ALTER ROLE [db_owner] ADD MEMBER rds_user;
    GRANT VIEW DEFINITION to rds_user;
```

Amazon Azure SQL Managed Instance では、次の権限が付与されます。

```
GRANT SELECT ON msdb.dbo.backupset TO rds_user;
GRANT SELECT ON msdb.dbo.backupmediafamily TO rds_user;
GRANT SELECT ON msdb.dbo.backupfile TO rds_user;
```

## SQL Server のソースからの継続的なレプリケーション (CDC) を使用するための前提条件
<a name="CHAP_Source.SQLServer.Prerequisites"></a>

オンプレミスまたは Amazon EC2 上のセルフマネージド型 SQL Server データベース、または Amazon RDS や Microsoft Azure SQL マネージドインスタンスなどのクラウドデータベースでは、継続的なレプリケーション (変更データキャプチャ、CDC) を使用できます。

 AWS DMSのソースとして SQL Server データベースを使用して継続的なレプリケーションを使用する場合は、次の要件が特別に適用されます。
+ SQL Server を完全バックアップ用に設定し、データのレプリケートの開始前にバックアップを実行する必要があります。
+ 復旧モデルを [**Bulk logged**] または [**Full**] に設定する必要があります。
+ 複数のディスクへの SQL Server のバックアップはサポートされていません。データベースバックアップを異なるディスク上の複数のファイルに書き込むようにバックアップが定義されている場合、 AWS DMS はデータを読み取れず、 AWS DMS タスクは失敗します。
+ セルフ管理 SQL Server ソースの場合、DMS CDC タスクで使用されたソース データベースの SQL Server レプリケーション パブリッシャ定義は、そのタスクを削除しても削除されません。SQL Server システム管理者がそれらの定義をセルフマネージド型ソースの SQL Server から削除する必要があります。
+ CDC 中、 は SQL Server トランザクションログのバックアップを検索して変更を読み取る AWS DMS 必要があります。 AWS DMS は、ネイティブ形式*ではない*サードパーティーのバックアップソフトウェアを使用して作成された SQL Server トランザクションログのバックアップをサポートしていません。ネイティブフォーマット*の*トランザクションログバックアップをサポートするには、サードパーティーのバックアップソフトウェアを使用して作成されている場合は、ソース エンドポイントへの `use3rdPartyBackupDevice=Y` の接続属性を追加します。
+ セルフマネージド型 SQL Server ソースの場合、SQL Server は新しく作成されたテーブルの変更を、公開されるまでキャプチャしない点に注意してください。テーブルが SQL Server ソースに追加されると、 はパブリケーションの作成 AWS DMS を管理します。ただし、この処理には数分かかることがあります。この遅延中に新たに作成されたテーブルに行われたオペレーションは、ターゲットにキャプチャまたはレプリケーションされません。
+ AWS DMS 変更データキャプチャでは、SQL Server で完全なトランザクションログ記録を有効にする必要があります。SQL Server でフルトランザクションログを有効にするには、MS-REPLICATION または CHANGE DATA CAPTURE (CDC) を有効にします。
+ MS CDC キャプチャジョブがこのような変更を処理するまで、SQL Server の **tlog エントリは再利用対象としてマークされません。
+ CDC オペレーションはメモリ最適化テーブルに対してはサポートされていません。この制限は、SQL Server 2014 (この機能が最初に導入されたバージョン) 以降に適用されます。
+ AWS DMS 変更データキャプチャには、Amazon EC2 またはオンプレミス SQL サーバーをソースとするディストリビューションデータベースがデフォルトで必要です。このため、プライマリキーがあるテーブルの MS レプリケーションを設定する際は、ディストリビューターを有効にしていることを確認します。

## SQL Server でサポートされている圧縮方法
<a name="CHAP_Source.SQLServer.Compression"></a>

 AWS DMSでの SQL Server 圧縮方法のサポートについては、次の点に注意します。
+ AWS DMS は、SQL Server バージョン 2008 以降で行/ページ圧縮をサポートしています。
+ AWS DMS は Vardecimal ストレージ形式をサポートしていません。
+ AWS DMS は、スパース列と列構造圧縮をサポートしていません。

## セルフマネージド型 SQL Server の AlwaysOn 可用性グループの使用
<a name="CHAP_Source.SQLServer.AlwaysOn"></a>

SQL Server の Always On 可用性グループは、データベースミラーリングに代わるエンタープライズレベルの代替方法を提供する高可用性と災害復旧ソリューションです。

では AWS DMS、1 つのプライマリまたはセカンダリの可用性グループレプリカから変更を移行できます。

### プライマリ可用性グループレプリカの使用
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**でプライマリ可用性グループをソースとして使用するには AWS DMS、次の手順を実行します。**

1. 可用性レプリカ内のすべての SQL Server インスタンスでディストリビューションオプションを有効にします。詳細については、「[セルフマネージド型 SQL Server での継続的なレプリケーションのセットアップ](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC)」を参照してください。

1.  AWS DMS コンソールで、SQL Server ソースデータベース設定を開きます。**[サーバー名]** には、可用性グループリスナーのために設定したドメインネームサービス (DNS) 名または IP アドレスを指定します。

 AWS DMS タスクを初めて開始すると、開始に通常よりも時間がかかる場合があります。このような速度の低下は、テーブルアーティクルの作成が可用性グループサーバーによりレプリケートされるために発生します。

### セカンダリ可用性グループレプリカの使用
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary"></a>

**でセカンダリ可用性グループをソースとして使用するには AWS DMS、次の手順を実行します。**

1.  AWS DMS ソースエンドポイントユーザーが使用するものと同じ認証情報を使用して、個々のレプリカに接続します。

1.  AWS DMS レプリケーションインスタンスが既存のすべてのレプリカの DNS 名を解決できることを確認し、接続します。次の SQL クエリを使用して、すべてのレプリカの DNS 名を取得できます。

   ```
   select ar.replica_server_name, ar.endpoint_url from sys.availability_replicas ar
   JOIN sys.availability_databases_cluster adc
   ON adc.group_id = ar.group_id AND adc.database_name = '<source_database_name>';
   ```

1. ソースエンドポイントを作成する際、エンドポイントの **[サーバー名]** またはエンドポイントのシークレットの **[サーバーアドレス]** として可用性グループリスナーの DNS 名を指定します。可用性グループリスナーの詳細については、SQL Server ドキュメントの「[可用性グループリスナーとは](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-listener-overview?view=sql-server-ver15)」を参照してください。

   パブリック DNS サーバーまたはオンプレミスの DNS サーバーのいずれかを使用して、可用性グループリスナー、プライマリレプリカ、セカンダリレプリカを解決できます。オンプレミスの DNS サーバーを使用するには、Amazon Route 53 Resolver を設定します。詳細については、「[独自のオンプレミスネームサーバーの使用](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver)」を参照してください。

1. 次の追加の接続属性をソースエンドポイントに追加します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. 可用性グループ内のすべてのレプリカでディストリビューションオプションを有効にします。すべてのノードをディストリビューターリストに追加します。詳細については、「[ディストリビューションを設定するには](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup)」を参照してください。

1. プライマリ読み取り/書き込みレプリカで次のクエリを実行して、データベースの公開を有効にします。このクエリはデータベースに対して 1 回だけ実行します。

   ```
   sp_replicationdboption @dbname = N'<source DB name>', @optname = N'publish', @value = N'true';
   ```



#### 制限事項
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.limitations"></a>

セカンダリ可用性グループレプリカを使用する場合の制限は次のとおりです。
+ AWS DMS は、読み取り専用の可用性グループレプリカをソースとして使用する場合の Safeguard をサポートしていません。詳細については、「[SQL Server を のソースとして使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)」を参照してください。
+ AWS DMS は、読み取り専用の可用性グループレプリカをソースとして使用する場合、`setUpMsCdcForTables`追加の接続属性をサポートしていません。詳細については、「[SQL Server を のソースとして使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)」を参照してください。
+ AWS DMS は、バージョン 3.4.7 以降の継続的なレプリケーション (変更データキャプチャ、CDC) のソースデータベースとして、セルフマネージドセカンダリ可用性グループレプリカを使用できます。Cloud SQL Server のマルチ AZ リードレプリカはサポートされていません。の以前のバージョンを使用する場合は AWS DMS、プライマリ可用性グループレプリカを CDC のソースデータベースとして使用してください。

#### 他のノードへのフェイルオーバー
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.failover"></a>

エンドポイント`ApplicationIntent`の追加の接続属性を に設定すると`ReadOnly`、 AWS DMS タスクは読み取り専用ルーティングの優先度が最も高い読み取り専用ノードに接続します。その後、最も優先度の高い読み取り専用ノードが使用できない場合は、可用性グループ内のその他の読み取り専用ノードにフェイルオーバーします。を設定しない場合`ApplicationIntent`、 AWS DMS タスクは可用性グループのプライマリ (読み取り/書き込み) ノードにのみ接続されます。

## SQL Server を のソースとして使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Source.SQLServer.ConnectionAttrib"></a>

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ソースの SQL Server データベースを設定できます。 AWS DMS コンソールを使用するか、`--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

次の表は、ソースとして SQL Server を使用できるエンドポイント設定を説明しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.SQLServer.html)

## SQL Server のソースデータ型
<a name="CHAP_Source.SQLServer.DataTypes"></a>

SQL Server を のソースとして使用するデータ移行は、ほとんどの SQL Server データ型 AWS DMS をサポートします。次の表は、 の使用時にサポートされる SQL Server ソースデータ型 AWS DMS と AWS DMS 、データ型からのデフォルトのマッピングを示しています。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  SQL Server のデータ型  |  AWS DMS データ型  | 
| --- | --- | 
|  BIGINT  |  INT8  | 
|  BIT  |  BOOLEAN  | 
|  DECIMAL  |  NUMERIC  | 
|  INT  |  INT4  | 
|  MONEY  |  NUMERIC  | 
|  NUMERIC (p,s)  |  NUMERIC   | 
|  SMALLINT  |  INT2  | 
|  SMALLMONEY  |  NUMERIC  | 
|  TINYINT  |  UINT1  | 
|  REAL  |  REAL4  | 
|  FLOAT  |  REAL8  | 
|  DATETIME  |  DATETIME  | 
|  DATETIME2 (SQL Server 2008 以降)  |  DATETIME  | 
|  SMALLDATETIME  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIMEOFFSET  |  WSTRING  | 
|  CHAR  |  STRING  | 
|  VARCHAR  |  STRING  | 
|  VARCHAR(max)  |  CLOB TEXT このデータ型を で使用するには AWS DMS、特定のタスクで CLOB データ型の使用を有効にする必要があります。 SQL Server テーブルの場合、SQL Server の LOB 列の値を変更しない UPDATE ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。 CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR (長さ)  |  WSTRING  | 
|  NVARCHAR (最大)  |  NCLOB NTEXT このデータ型を で使用するには AWS DMS、特定のタスクで SupportLobs の使用を有効にする必要があります。Lob サポートの有効化に関する詳細については、[AWS DMS タスクでのソースデータベースの LOB サポートの設定](CHAP_Tasks.LOBSupport.md) をご参照ください。 SQL Server テーブルの場合、SQL Server の LOB 列の値を変更しない UPDATE ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。 CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。  | 
|  BINARY  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  VARBINARY (最大)  |  BLOB IMAGE SQL Server テーブルの場合、SQL Server の LOB 列の値を変更しない UPDATE ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。 このデータ型を で使用するには AWS DMS、特定のタスクで BLOB データ型の使用を有効にする必要があります。 AWS DMS は、プライマリキーを含むテーブルでのみ BLOB データ型をサポートします。  | 
|  TIMESTAMP  |  BYTES  | 
|  UNIQUEIDENTIFIER  |  STRING  | 
|  HIERARCHYID   |  SQL Server ターゲットエンドポイントにレプリケートする場合は、HIERARCHYID を使用します。 他のすべてのターゲットエンドポイントにレプリケートする場合は、WSTRING (250) を使用します。  | 
|  XML  |  NCLOB SQL Server テーブルの場合、SQL Server の LOB 列の値を変更しない UPDATE ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。 このデータ型を で使用するには AWS DMS、特定のタスクで NCLOB データ型の使用を有効にする必要があります。 CDC 中、 はプライマリキーを含むテーブルでのみ NCLOB データ型 AWS DMS をサポートします。  | 
|  GEOMETRY  |  このデータ型をサポートするターゲットエンドポイントにレプリケートする場合は、GEOMETRY を使用します。 このデータ型をサポートしないターゲットエンドポイントにレプリケートする場合は、CLOB を使用します。  | 
|  GEOGRAPHY  |  このデータ型をサポートするターゲットエンドポイントにレプリケートする場合は、GEOGRAPHY を使用します。 このデータ型をサポートしないターゲットエンドポイントにレプリケートする場合は、CLOB を使用します。  | 

AWS DMS は、次のデータ型のフィールドを含むテーブルをサポートしていません。
+ CURSOR
+ SQL\$1VARIANT
+ TABLE

**注記**  
ユーザー定義のデータ型は、基本型に従ってサポートされます。たとえば、DATETIME をベースとするユーザー定義のデータ型は DATETIME データ型として扱われます。

# SQL Server からの継続的なレプリケーションのデータ変更をキャプチャする
<a name="CHAP_Source.SQLServer.CDC"></a>

このトピックでは、SQL Server ソースで CDC レプリケーションを設定する方法について説明します。

**Topics**
+ [オンプレミスまたは Amazon EC2 上のセルフマネージド型 SQL Server のデータ変更のキャプチャ](#CHAP_Source.SQLServer.CDC.Selfmanaged)
+ [Cloud SQL Server DB インスタンスでの継続的なレプリケーションのセットアップ](#CHAP_Source.SQLServer.Configuration)

## オンプレミスまたは Amazon EC2 上のセルフマネージド型 SQL Server のデータ変更のキャプチャ
<a name="CHAP_Source.SQLServer.CDC.Selfmanaged"></a>

Microsoft SQL Server ソースデータベースからの変更をキャプチャするには、データベースが完全バックアップ用に構成されていることを確認してください。データベースをフルリカバリモードまたは一括ログモードで構成します。

セルフマネージド SQL Server ソースの場合、 は以下 AWS DMS を使用します。

**MS レプリケーション**  
プライマリ キーを持たないテーブルの変更をキャプチャします。ソース SQL Server インスタンスの AWS DMS エンドポイントユーザーに sysadmin 権限を付与することで、これを自動的に設定できます。または、このセクションの手順に従ってソースを準備し、 AWS DMS エンドポイントの sysadmin 権限を持たないユーザーを使用できます。

**MS-CDC**  
プライマリ キーを持たないテーブルの変更をキャプチャします。MS-CDC は、すべてのテーブルのデータベースレベルで個別に有効にします。

継続的なレプリケーション (CDC) に SQL Server データベースをセットアップする場合、次のいずれかの操作を実行できます：
+ sysadmin ロールを使用する継続的なレプリケーションをセットアップします
+ sysadmin ロールを使用しない継続的なレプリケーションをセットアップします。

**注記**  
次のスクリプトを使用して、プライマリキーまたは一意のキーのないすべてのテーブルを検索できます。  

```
USE [DBname]
SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name
FROM sys.tables
WHERE OBJECTPROPERTY(object_id, 'TableHasPrimaryKey') = 0
        AND  OBJECTPROPERTY(object_id, 'TableHasUniqueCnst') = 0
ORDER BY schema_name, table_name;
```

### セルフマネージド型 SQL Server での継続的なレプリケーションのセットアップ
<a name="CHAP_Source.SQLServer.CDC.MSCDC"></a>

このセクションには、sysadmin ロールを使用する場合と使用しない場合の、セルフマネージド型 SQL Server での継続的なレプリケーションの設定に関する情報が記載されています。

**Topics**
+ [セルフマネージド型 SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールを使用](#CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin)
+ [スタンドアロン SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールなし](#CHAP_SupportScripts.SQLServer.standalone)
+ [可用性グループ環境の SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールなし](#CHAP_SupportScripts.SQLServer.ag)

#### セルフマネージド型 SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールを使用
<a name="CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin"></a>

AWS DMS SQL Server の継続的なレプリケーションでは、プライマリキーを持つテーブルにはネイティブ SQL Server レプリケーションを使用し、プライマリキーを持たないテーブルには変更データキャプチャ (CDC) を使用します。

継続的レプリケーションを設定する前に、「[SQL Server のソースからの継続的なレプリケーション (CDC) を使用するための前提条件](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites)」をご参照ください。

プライマリキーを持つテーブルの場合、 AWS DMS は通常、ソースで必要なアーティファクトを設定できます。ただし、セルフ管理 SQL Server ソース インスタンスの場合、最初に、SQL Server のディストリビューションを手動で設定する必要があります。これを行うと、sysadmin アクセス許可を持つ AWS DMS ソースユーザーは、プライマリキーを持つテーブルのパブリケーションを自動的に作成できます。

ディストリビューションがすでに設定されているかどうかを確認するには、以下のコマンドを実行します。

```
sp_get_distributor
```

列ディストリビューションの結果が `NULL` の場合、ディストリビューションは設定されていません。ディストリビューションを設定するには、次の手順を使用します。<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup"></a>

**ディストリビューションを設定するには**

1. SQL Server Management Studio (SSMS) ツールを使用して SQL Server ソースデータベースに接続します。

1. **[Replication]** (レプリケーション) フォルダのコンテキスト (右クリック) メニューを開き、**[Configure Distribution]** (ディストリビューション設定) を選択します。ディストリビューションの構成ウィザードが開きます。

1. ウィザードに従ってデフォルト値を入力し、ディストリビューションを作成します。<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup.CDC"></a>

**CDC をセットアップするには**

AWS DMS バージョン 3.4.7 以降では、読み取り専用レプリカを使用していない場合、データベースとすべてのテーブルの MS CDC を自動的に設定できます。この機能を使用するには、`SetUpMsCdcForTables` ECA を true に設定します。ECA の詳細については、「[エンドポイント設定](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.ConnectionAttrib)」を参照してください。

3.4.7 より AWS DMS 前のバージョン、またはソースとしての読み取り専用レプリカの場合は、次の手順を実行します。

1. プライマリ キーがないテーブルの場合、データベースの MS-CDC をセットアップします。そのためには、sysadmin ロールが割り当てられたアカウントを使用し、次のコマンドを実行します。

   ```
   use [DBname]
   EXEC sys.sp_cdc_enable_db
   ```

1. 次に、ソーステーブルごとに MS-CDC を設定します。一意キーはあるがプライマリ キーがないテーブルごとに、次のクエリを実行して MS-CDC を設定します。

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

1. プライマリ キーと一意キーの両方がないテーブルごとに、次のクエリを実行して MS-CDC を設定します。

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

特定のテーブルの MS-CDC をセットアップする方法の詳細については、[ SQL Server のドキュメント](https://msdn.microsoft.com/en-us/library/cc627369.aspx)をご参照ください。

#### スタンドアロン SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールなし
<a name="CHAP_SupportScripts.SQLServer.standalone"></a>

このセクションでは、ユーザーアカウントで sysadmin アクセス権限を必要としないスタンドアロン SQL Server データベースソースの継続的なレプリケーションをセットアップする方法について説明します。

**注記**  
このセクションのステップを実行すると、システム管理者以外の DMS ユーザーには、以下を実行するアクセス許可が付与されます。  
オンライントランザクションログファイルからの変更の読み取り
トランザクションログのバックアップファイルから変更を読み取るためのディスクアクセス
DMS が使用するパブリケーションの追加または変更
パブリケーションへの記事の追加

1. [SQL Server からの継続的なレプリケーションのデータ変更をキャプチャする](#CHAP_Source.SQLServer.CDC) の説明に従って、レプリケーション向けに Microsoft SQL Server をセットアップします。

1. ソースデータベースで MS-REPLICATION を有効にします。これは手動で実行することも、sysadmin ユーザーとしてタスクを 1 回実行することによっても行うことができます。

1. 次のスクリプトを使用して、ソースデータベースに `awsdms` スキーマを作成します。

   ```
   use master
   go
   create schema awsdms
   go
   
   
   -- Create the table valued function [awsdms].[split_partition_list] on the Master database, as follows:
   USE [master]
   GO
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   go
   
   if (object_id('[awsdms].[split_partition_list]','TF')) is not null
   
   drop function [awsdms].[split_partition_list];
   
   go
   
   create function [awsdms].[split_partition_list]
   
   (
   
   @plist varchar(8000), --A delimited list of partitions
   
   @dlm nvarchar(1) --Delimiting character
   
   )
   
   returns @partitionsTable table --Table holding the BIGINT values of the string fragments
   
   (
   
   pid bigint primary key
   
   )   
   
   as
   
   begin
   
   declare @partition_id bigint;
   
   declare @dlm_pos integer;
   
   declare @dlm_len integer;
   
   set @dlm_len = len(@dlm);
   
   while (charindex(@dlm,@plist)>0)
   
   begin
   
   set @dlm_pos = charindex(@dlm,@plist);
   
   set @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
   
   insert into @partitionsTable (pid) values (@partition_id)
   
   set @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
   
   end
   
   set @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
   
   insert into @partitionsTable (pid) values ( @partition_id );
   
   return
   
   end
   
   GO
   ```

1. 次のスクリプトを使用して Master データベースに `[awsdms].[rtm_dump_dblog]` プロシージャを作成します。

   ```
   use [MASTER]
   
   go
   
   if (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null drop procedure [awsdms].[rtm_dump_dblog];
   go
   
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   GO
   
   
   
   CREATE procedure [awsdms].[rtm_dump_dblog]
   
   (
   
   @start_lsn varchar(32),
   
   @seqno integer,
   
   @filename varchar(260),
   
   @partition_list varchar(8000), -- A comma delimited list: P1,P2,... Pn
   
   @programmed_filtering integer,
   
   @minPartition bigint,
   
   @maxPartition bigint
   
   )
   
   as begin
   
   declare @start_lsn_cmp varchar(32); -- Stands against the GT comparator
   
   SET NOCOUNT ON -- – Disable "rows affected display"
   
   set @start_lsn_cmp = @start_lsn;
   
   if (@start_lsn_cmp) is null
   
   set @start_lsn_cmp = '00000000:00000000:0000';
   
   if (@partition_list is null)
   
   begin
   
   RAISERROR ('Null partition list waspassed',16,1);
   
   return
   
   end
   
   if (@start_lsn) is not null
   
   set @start_lsn = '0x'+@start_lsn;
   
   if (@programmed_filtering=0)
   
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1]
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   else
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1] -- After Image
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   
   SET NOCOUNT OFF -- Re-enable "rows affected display"
   
   end
   
   GO
   ```

1. 次のスクリプトを使用して、Master データベースに証明書を作成します。

   ```
   Use [master]
   Go
   
   CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert] ENCRYPTION BY PASSWORD = N'@5trongpassword'
   
   WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions';
   ```

1. 次のスクリプトを使用して、証明書からログインを作成します。

   ```
   Use [master]
   Go
   
   CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE [awsdms_rtm_dump_dblog_cert];
   ```

1. 次のスクリプトを使用して、ログインを sysadmin サーバーロールに追加します。

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
   ```

1. 次のスクリプトを使用して、証明書を使って署名を [master].[awsdms].[rtm\$1dump\$1dblog] に追加します。

   ```
   Use [master]
   GO
   ADD SIGNATURE
   TO [master].[awsdms].[rtm_dump_dblog] BY CERTIFICATE [awsdms_rtm_dump_dblog_cert] WITH PASSWORD = '@5trongpassword';
   ```
**注記**  
ストアドプロシージャを再作成する場合は、署名を再度追加する必要があります。

1. 次のスクリプトを使用して、マスターデータベースに [awsdms].[rtm\$1position\$11st\$1timestamp] を作成します。

   ```
   use [master]
       if object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
       DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
       go
       create procedure [awsdms].[rtm_position_1st_timestamp]
       (
       @dbname                sysname,      -- Database name
       @seqno                 integer,      -- Backup set sequence/position number within file
       @filename              varchar(260), -- The backup filename
       @1stTimeStamp          varchar(40)   -- The timestamp to position by
       ) 
       as begin
   
       SET NOCOUNT ON       -- Disable "rows affected display"
   
       declare @firstMatching table
       (
       cLsn varchar(32),
       bTim datetime
       )
   
       declare @sql nvarchar(4000)
       declare @nl                       char(2)
       declare @tb                       char(2)
       declare @fnameVar                 nvarchar(254) = 'NULL'
   
       set @nl  = char(10); -- New line
       set @tb  = char(9)   -- Tab separator
   
       if (@filename is not null)
       set @fnameVar = ''''+@filename +''''
   
       set @sql='use ['+@dbname+'];'+@nl+
       'select top 1 [Current LSN],[Begin Time]'+@nl+
       'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @fnameVar+','+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default)'+@nl+
       'where operation=''LOP_BEGIN_XACT''' +@nl+
       'and [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
   
       --print @sql
       delete from  @firstMatching 
       insert into @firstMatching  exec sp_executesql @sql    -- Get them all
   
       select top 1 cLsn as [matching LSN],convert(varchar,bTim,121) as [matching Timestamp] from @firstMatching;
   
       SET NOCOUNT OFF      -- Re-enable "rows affected display"
   
       end
       GO
   ```

1. 次のスクリプトを使用して、Master データベースに証明書を作成します。

   ```
   Use [master]
   Go
   CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
   ENCRYPTION BY PASSWORD = '@5trongpassword'
   WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
   ```

1. 次のスクリプトを使用して、証明書からログインを作成します。

   ```
   Use [master]
   Go
   CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert];
   ```

1. 次のスクリプトを使用して、sysadmin ロールにログインを追加します。

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
   ```

1. 次のスクリプトに従い、証明書を使用して [master].[awsdms].[rtm\$1position\$11st\$1timestamp] に署名を追加します。

   ```
   Use [master]
       GO
       ADD SIGNATURE
       TO [master].[awsdms].[rtm_position_1st_timestamp]
       BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
       WITH PASSWORD = '@5trongpassword';
   ```

1. 次のスクリプトを使用して、新しいストアドプロシージャへの実行アクセス権を DMS ユーザーに付与します。

   ```
   use master
   go
   GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dms_user;
   ```

1. 次の各データベースに、次の権限とロールを持つユーザーを作成します。
**注記**  
dmsnosysadmin ユーザーアカウントは、各レプリカで同じ SID を使用して作成する必要があります。次の SQL クエリは、各レプリカの dmsnosysadmin アカウントの SID 値を確認するのに役立ちます。ユーザー作成の詳細については、「[Microsoft SQL Server ドキュメント](https://learn.microsoft.com/en-us/sql/)」の「[CREATE USER (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql)」を参照してください。Azure SQL Database の SQL ユーザーアカウントの作成の詳細については、「[アクティブな地理的レプリケーション](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview)」を参照してください。

   ```
   use master
   go
   grant select on sys.fn_dblog to [DMS_user]
   grant view any definition to [DMS_user]
   grant view server state to [DMS_user]--(should be granted to the login).
   grant execute on sp_repldone to [DMS_user]
   grant execute on sp_replincrementlsn to [DMS_user]
   grant execute on sp_addpublication to [DMS_user]
   grant execute on sp_addarticle to [DMS_user]
   grant execute on sp_articlefilter to [DMS_user]
   grant select on [awsdms].[split_partition_list] to [DMS_user]
   grant execute on [awsdms].[rtm_dump_dblog] to [DMS_user]
   ```

   ```
   use msdb
   go
   grant select on msdb.dbo.backupset to self_managed_user
   grant select on msdb.dbo.backupmediafamily to self_managed_user
   grant select on msdb.dbo.backupfile to self_managed_user
   ```

   ソースデータベースで次のスクリプトを実行します。

   ```
   use Source_DB
       Go
       EXEC sp_addrolemember N'db_owner', N'DMS_user'
   ```

1. 最後に、追加の接続属性 (ECA) をソースの SQL Server エンドポイントに追加します。

   ```
   enableNonSysadminWrapper=true;
   ```

#### 可用性グループ環境の SQL Server での継続的なレプリケーションのセットアップ: sysadmin ロールなし
<a name="CHAP_SupportScripts.SQLServer.ag"></a>

このセクションでは、ユーザーアカウントに sysadmin 権限を必要としない可用性グループ環境で、SQL Server データベースソースの継続的なレプリケーションをセットアップする方法について説明します。

**注記**  
このセクションのステップを実行すると、システム管理者以外の DMS ユーザーには、以下を実行するアクセス許可が付与されます。  
オンライントランザクションログファイルからの変更の読み取り
トランザクションログのバックアップファイルから変更を読み取るためのディスクアクセス
DMS が使用するパブリケーションの追加または変更
パブリケーションへの記事の追加

**可用性グループ環境で sysadmin ユーザーを使用せずに継続的なレプリケーションをセットアップするには**

1. [SQL Server からの継続的なレプリケーションのデータ変更をキャプチャする](#CHAP_Source.SQLServer.CDC) の説明に従って、レプリケーション向けに Microsoft SQL Server をセットアップします。

1. ソースデータベースで MS-REPLICATION を有効にします。これは手動で実行することも、sysadmin ユーザーを使用してタスクを 1 回実行することによっても行うことができます。
**注記**  
MS-REPLICATION ディストリビューターをローカルとして設定するか、関連するリンクサーバーを経由して sysadmin 以外のユーザーがアクセスできるように設定する必要があります。

1. **[Exclusively use sp\$1repldone within a single task]** エンドポイントオプションが有効になっている場合は、MS-REPLICATION Log Reader ジョブは停止します。

1. 各レプリカで次のステップを実行します。

   1. master データベースに `[awsdms]` [awsdms] スキーマを作成します。

      ```
      CREATE SCHEMA [awsdms]
      ```

   1. Masterデータベースに `[awsdms].[split_partition_list]` テーブル値関数を作成します。

      ```
      USE [master]
      GO
      
      SET ansi_nulls on
      GO
        
      SET quoted_identifier on
      GO
      
      IF (object_id('[awsdms].[split_partition_list]','TF')) is not null
        DROP FUNCTION [awsdms].[split_partition_list];
      GO
      
      CREATE FUNCTION [awsdms].[split_partition_list] 
      ( 
        @plist varchar(8000),    --A delimited list of partitions    
        @dlm nvarchar(1)    --Delimiting character
      ) 
      RETURNS @partitionsTable table --Table holding the BIGINT values of the string fragments
      (
        pid bigint primary key
      ) 
      AS 
      BEGIN
        DECLARE @partition_id bigint;
        DECLARE @dlm_pos integer;
        DECLARE @dlm_len integer;  
        SET @dlm_len = len(@dlm);
        WHILE (charindex(@dlm,@plist)>0)
        BEGIN 
          SET @dlm_pos = charindex(@dlm,@plist);
          SET @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
          INSERT into @partitionsTable (pid) values (@partition_id)
          SET @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
        END 
        SET @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
        INSERT into @partitionsTable (pid) values (  @partition_id  );
        RETURN
      END
      GO
      ```

   1. Masterデータベースに `[awsdms].[rtm_dump_dblog]` プロシージャを作成します。

      ```
      USE [MASTER] 
      GO
      
      IF (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null
        DROP PROCEDURE [awsdms].[rtm_dump_dblog]; 
      GO
      
      SET ansi_nulls on
      GO 
      
      SET quoted_identifier on 
      GO
                                          
      CREATE PROCEDURE [awsdms].[rtm_dump_dblog]
      (
        @start_lsn            varchar(32),
        @seqno                integer,
        @filename             varchar(260),
        @partition_list       varchar(8000), -- A comma delimited list: P1,P2,... Pn
        @programmed_filtering integer,
        @minPartition         bigint,
        @maxPartition         bigint
      ) 
      AS 
      BEGIN
      
        DECLARE @start_lsn_cmp varchar(32); -- Stands against the GT comparator
      
        SET NOCOUNT ON  -- Disable "rows affected display"
      
        SET @start_lsn_cmp = @start_lsn;
        IF (@start_lsn_cmp) is null
          SET @start_lsn_cmp = '00000000:00000000:0000';
      
        IF (@partition_list is null)
          BEGIN
            RAISERROR ('Null partition list was passed',16,1);
            return
            --set @partition_list = '0,';    -- A dummy which is never matched
          END
      
        IF (@start_lsn) is not null
          SET @start_lsn = '0x'+@start_lsn;
      
        IF (@programmed_filtering=0)
          SELECT
            [Current LSN],
            [operation],
            [Context],
            [Transaction ID],
            [Transaction Name],
            [Begin Time],
            [End Time],
            [Flag Bits],
            [PartitionID],
            [Page ID],
            [Slot ID],
            [RowLog Contents 0],
            [Log Record],
            [RowLog Contents 1] -- After Image
          FROM
            fn_dump_dblog (
              @start_lsn, NULL, N'DISK', @seqno, @filename,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default)
          WHERE 
            [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND       
                [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
              )
            OR
            ([operation] = 'LOP_HOBT_DDL')
          )
          ELSE
            SELECT
              [Current LSN],
              [operation],
              [Context],
              [Transaction ID],
              [Transaction Name],
              [Begin Time],
              [End Time],
              [Flag Bits],
              [PartitionID],
              [Page ID],
              [Slot ID],
              [RowLog Contents 0],
              [Log Record],
              [RowLog Contents 1] -- After Image
            FROM
              fn_dump_dblog (
                @start_lsn, NULL, N'DISK', @seqno, @filename,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default)
            WHERE [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
              )
              OR
              ([operation] = 'LOP_HOBT_DDL')
            )
            SET NOCOUNT OFF -- Re-enable "rows affected display"
      END
      GO
      ```

   1. Master データベースに次のとおり証明書を作成します。

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions'
      ```

   1. CSR から次のとおり証明書を作成します。

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE
        [awsdms_rtm_dump_dblog_cert];
      ```

   1. sysadmin サーバーロールにログイン情報を追加します。

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
      ```

   1. この証明書を使用して署名を [master].[awsdms].[rtm\$1dump\$1dblog] プロシージャに追加します。

      ```
      USE [master]
      GO
      
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_dump_dblog]
        BY CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**注記**  
ストアドプロシージャを再作成する場合は、署名を再度追加する必要があります。

   1. Masterデータベースに `[awsdms].[rtm_position_1st_timestamp]` プロシージャを作成します。

      ```
      USE [master]
      IF object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
        DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
      GO
      CREATE PROCEDURE [awsdms].[rtm_position_1st_timestamp]
      (
        @dbname                sysname,      -- Database name
        @seqno                 integer,      -- Backup set sequence/position number within file
        @filename              varchar(260), -- The backup filename
        @1stTimeStamp          varchar(40)   -- The timestamp to position by
      ) 
      AS 
      BEGIN
        SET NOCOUNT ON       -- Disable "rows affected display"
      
        DECLARE @firstMatching table
        (
          cLsn varchar(32),
          bTim datetime
        )
        DECLARE @sql nvarchar(4000)
        DECLARE @nl                       char(2)
        DECLARE @tb                       char(2)
        DECLARE @fnameVar                 sysname = 'NULL'
      
        SET @nl  = char(10); -- New line
        SET @tb  = char(9)   -- Tab separator
      
        IF (@filename is not null)
          SET @fnameVar = ''''+@filename +''''
        SET @filename = ''''+@filename +''''
        SET @sql='use ['+@dbname+'];'+@nl+
          'SELECT TOP 1 [Current LSN],[Begin Time]'+@nl+
          'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @filename +','+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default)'+@nl+
          'WHERE operation=''LOP_BEGIN_XACT''' +@nl+
          'AND [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
      
          --print @sql
          DELETE FROM @firstMatching 
          INSERT INTO @firstMatching  exec sp_executesql @sql    -- Get them all
          SELECT TOP 1 cLsn as [matching LSN],convert(varchar,bTim,121) AS[matching Timestamp] FROM @firstMatching;
      
          SET NOCOUNT OFF      -- Re-enable "rows affected display"
      
      END
      GO
      ```

   1. Master データベースに次のとおり証明書を作成します。

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
      ```

   1. CSR から次のとおり証明書を作成します。

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE
        [awsdms_rtm_position_1st_timestamp_cert];
      ```

   1. sysadmin サーバーロールにログイン情報を追加します。

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
      ```

   1. この証明書を使用して、署名を `[master].[awsdms].[rtm_position_1st_timestamp]` プロシージャに追加します。

      ```
      USE [master]
      GO
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_position_1st_timestamp]
        BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**注記**  
ストアドプロシージャを再作成する場合は、署名を再度追加する必要があります。

   1. 次の各データベースに次のアクセス権限またはロールを持つユーザーを作成します。
**注記**  
dmsnosysadmin ユーザーアカウントは、各レプリカで同じ SID を使用して作成する必要があります。次の SQL クエリは、各レプリカの dmsnosysadmin アカウントの SID 値を確認するのに役立ちます。ユーザー作成の詳細については、「[Microsoft SQL Server ドキュメント](https://learn.microsoft.com/en-us/sql/)」の「[CREATE USER (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql)」を参照してください。Azure SQL Database の SQL ユーザーアカウントの作成の詳細については、「[アクティブな地理的レプリケーション](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview)」を参照してください。

      ```
      SELECT @@servername servername, name, sid, create_date, modify_date
        FROM sys.server_principals
        WHERE name = 'dmsnosysadmin';
      ```

   1. 各レプリカの master データベースに対するアクセス権限を付与します。

      ```
      USE master
      GO 
      
      GRANT select on sys.fn_dblog to dmsnosysadmin;
      GRANT view any definition to dmsnosysadmin;
      GRANT view server state to dmsnosysadmin -- (should be granted to the login).
      GRANT execute on sp_repldone to dmsnosysadmin;
      GRANT execute on sp_replincrementlsn to dmsnosysadmin;
      GRANT execute on sp_addpublication to dmsnosysadmin;
      GRANT execute on sp_addarticle to dmsnosysadmin;
      GRANT execute on sp_articlefilter to dmsnosysadmin;
      GRANT select on [awsdms].[split_partition_list] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_dump_dblog] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dmsnosysadmin;
      ```

   1. 各レプリカの msdb データベースに対するアクセス権限を付与します。

      ```
      USE msdb
      GO
      GRANT select on msdb.dbo.backupset TO self_managed_user
      GRANT select on msdb.dbo.backupmediafamily TO self_managed_user
      GRANT select on msdb.dbo.backupfile TO self_managed_user
      ```

   1. `db_owner` ロールをソースデータベースの `dmsnosysadmin` に追加します。データベースは同期しているため、プライマリレプリカにのみロールを追加します。

      ```
      use <source DB>
      GO 
      EXEC sp_addrolemember N'db_owner', N'dmsnosysadmin'
      ```

## Cloud SQL Server DB インスタンスでの継続的なレプリケーションのセットアップ
<a name="CHAP_Source.SQLServer.Configuration"></a>

このセクションでは、クラウドでホストされている SQL Server のデータベースインスタンスで CDC をセットアップする方法について説明します。クラウドでホストされる SQL Serverインスタンスは、Amazon RDS for SQL Server、Azure SQL Manged Instance、またはその他のマネージド型 Cloud SQL Server インスタンス上で実行されるインスタンスです。各データベースタイプでの継続的なレプリケーションの制限については、「[SQL Server を のソースとして使用する場合の制限 AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations)」を参照してください。

継続的レプリケーションを設定する前に、[SQL Server のソースからの継続的なレプリケーション (CDC) を使用するための前提条件](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites) をご参照ください。

セルフ管理 SQL Server ソースとは異なり、Amazon RDS for SQL Server では MS レプリケーションはサポートされません。したがって、 AWS DMS では、プライマリキーの有無にかかわらず、テーブルに MS-CDC を使用する必要があります。

Amazon RDS は、ソース SQL Server インスタンスの継続的な変更に が AWS DMS 使用するレプリケーションアーティファクトを設定するための sysadmin 権限を付与しません。次の手順に従って、(管理ユーザーアクセス権限を使用して) Amazon RDS インスタンスの MS-CDC をオンにする必要があります。

**Cloud SQL Server DB インスタンスで MS-CDC を有効にするには**

1. 次のクエリのいずれかをデータベース レベルで実行します。

   RDS for SQL Server DB インスタンスの場合は、次のクエリを使用します。

   ```
   exec msdb.dbo.rds_cdc_enable_db 'DB_name'
   ```

   Azure SQL マネージド DB インスタンスの場合は、次のクエリを使用します。

   ```
   USE DB_name 
   GO 
   EXEC sys.sp_cdc_enable_db 
   GO
   ```

1. プライマリ キーがあるテーブルごとに、次のクエリを実行して MS-CDC を有効にします。

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

   一意キーはあるがプライマリ キーがないテーブルごとに、次のクエリを実行して MS-CDC を有効にします。

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

    プライマリキーと一意キーの両方がないテーブルごとに、次のクエリを実行して MS-CDC を有効にします。

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

1. 保持期間を設定します。
   + DMS バージョン 3.5.3 以降を使用してレプリケートする RDS for SQL Server インスタンスの場合、保持期間がデフォルト値の 5 秒に設定されていることを確認します。DMS 3.5.2 以前から DMS 3.5.3 以降にアップグレードまたは移動する場合、新しいまたはアップグレードされたインスタンスでタスクが実行された後にポーリング間隔の値を変更します。以下のスクリプトでは、保持期間を 5 秒に設定しています。

     ```
     use dbname
     EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 5
     exec sp_cdc_stop_job 'capture'
     exec sp_cdc_start_job 'capture'
     ```
   + パラメータ `@pollinginterval` は秒単位で測定され、推奨値 86399 に設定されます。つまり、`@pollinginterval = 86399` の場合、トランザクションログは 86,399 秒 (約 1 日) の変更を保持します。手順 `exec sp_cdc_start_job 'capture'` によって設定が開始されます。
**注記**  
SQL Server の一部のバージョンでは、`pollinginterval` が 3599 秒以上に設定されている場合、値はデフォルトの 5 秒にリセットされます。この場合、 が T ログエントリ AWS DMS を読み取る前に、T ログエントリが消去されます。この既知の問題の影響を受ける SQL Server のバージョンを確認するには、「[このマイクロソフト KB 記事](https://support.microsoft.com/en-us/topic/kb4459220-fix-incorrect-results-occur-when-you-convert-pollinginterval-parameter-from-seconds-to-hours-in-sys-sp-cdc-scan-in-sql-server-dac8aefe-b60b-7745-f987-582dda2cfa78)」をご参照ください。

     マルチ AZ で Amazon RDS を使用している場合は、フェイルオーバー時に適切な値を持つようにセカンダリも設定してください。

     ```
     exec rdsadmin..rds_set_configuration 'cdc_capture_pollinginterval' , <5 or preferred value>
     ```

**AWS DMS レプリケーションタスクが 1 時間以上停止しても保持期間を維持するには**
**注記**  
DMS 3.5.3 以降を使用して RDS for SQL Server ソースをレプリケートする場合、以下の手順は必要ありません。

1. 次のコマンドを使用して、トランザクションログを切り捨てるジョブを停止します。

   ```
   exec sp_cdc_stop_job 'capture'
   ```

1.  AWS DMS コンソールでタスクを検索し、タスクを再開します。

1. **[Monitoring]** (モニタリング) タブを選択し、`CDCLatencySource` メトリクスを選択します。

1. `CDCLatencySource` メトリクスが 0 (ゼロ) に等しく、そのままの場合、次のコマンドを使用して、トランザクション ログ切り捨てジョブを再開します。

   ```
   exec sp_cdc_start_job 'capture'
   ```

必ず SQL Server トランザクションログを切り捨てるジョブをスタートしてください。そうしないと、SQL Server インスタンスのストレージがいっぱいになる可能性があります。

### RDS for SQL Server を のソースとして使用する場合の推奨設定 AWS DMS
<a name="CHAP_Source.SQLServer.Configuration.Settings"></a>

#### AWS DMS 3.5.3 以降
<a name="CHAP_Source.SQLServer.Configuration.Settings.353"></a>

**注記**  
RDS for SQL Server のログのバックアップ機能の初回リリースは、DMS バージョン 3.5.3 のリリース後に作成または変更されたエンドポイントに対して、デフォルトで有効になっています。既存のエンドポイントに対してこの機能を使用するには、変更を加えずにエンドポイントを変更します。

AWS DMS バージョン 3.5.3 では、ログバックアップからの読み取りがサポートされています。DMS は、主にアクティブトランザクションログからの読み取りに依存してイベントをレプリケートします。DMS がアクティブなログから読み取れるようになる前にトランザクションがバックアップされた場合、タスクは RDS バックアップにオンデマンドでアクセスし、アクティブトランザクションログに追いつくまで後続のバックアップログから読み取ります。DMS がログのバックアップにアクセスできるようにするには、RDS 自動バックアップ保持期間を少なくとも 1 日に設定します。自動バックアップ保持期間の設定の詳細については、「*Amazon RDS ユーザーガイド*」の「[バックアップの保存期間](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupRetention)」を参照してください。

ログのバックアップにアクセスする DMS タスクは、RDS インスタンス上のストレージを利用します。タスクは、レプリケーションに必要なログのバックアップにのみアクセスすることに注意してください。Amazon RDS は、ダウンロードしたこれらのバックアップを数時間で削除します。この削除は、Amazon S3 に保持されている Amazon RDS バックアップや Amazon RDS `RESTORE DATABASE` 機能には影響しません。DMS を使用してレプリケートする予定の場合、RDS for SQL Server ソースに追加のストレージを割り当てることをお勧めします。必要なストレージ量を見積もる方法の 1 つは、DMS がレプリケーションを開始または再開するバックアップを特定し、RDS `tlog backup` メタデータ関数を使用して後続のすべてのバックアップのファイルサイズを合計することです。`tlog backup` 関数の詳細については、「*Amazon RDS ユーザーガイド*」の「[利用可能なトランザクションログのバックアップの一覧表示](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER.SQLServer.AddlFeat.TransactionLogAccess.html#USER.SQLServer.AddlFeat.TransactionLogAccess.Listing)」を参照してください。

または、Amazon RDS インスタンスの CloudWatch `FreeStorageSpace` メトリクスに基づいてストレージの自動スケーリングを有効にしたり、ストレージのスケーリングをトリガーしたりすることができます。

SQL Server インスタンスのストレージがいっぱいになる可能性があるため、トランザクションログのバックアップをあまりに遠すぎる時点から開始または再開しないことを強くお勧めします。このような場合は、フルロードを開始することをお勧めします。トランザクションログのバックアップからのレプリケートは、アクティブトランザクションログからの読み取りよりも遅くなります。詳細については、「[RDS for SQL Server のトランザクションログのバックアップ処理](CHAP_Troubleshooting_Latency_Source_SQLServer.md#CHAP_Troubleshooting_Latency_Source_SQLServer_backup)」を参照してください。

ログのバックアップにアクセスするには、追加の権限が必要であることに注意してください。詳細については、「[クラウド SQL Server データベースからの継続的なレプリケーションのアクセス許可を設定する](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Permissions.Cloud)」の説明を参照してください。タスクのレプリケートを開始する前に、これらの権限が付与されていることを確認してください。

#### For AWS DMS 3.5.2 以下
<a name="CHAP_Source.SQLServer.Configuration.Settings.352"></a>

Amazon RDS for SQL Server をソースとして使用する場合、MS-CDC キャプチャジョブはパラメータ `maxscans` と `maxtrans` に依存しています。このようなパラメータは、MS-CDC キャプチャがトランザクションログに対して実行するスキャンの最大数と、スキャンごとに処理されるトランザクション数を制御します。

データベースでは、トランザクション数が `maxtrans*maxscans` の場合、`polling_interval` 値を増やすとアクティブなトランザクションログレコードが蓄積されてしまう可能性があります。これにより、トランザクションログのサイズが増大する可能性があります。

 AWS DMS は MS-CDC キャプチャジョブに依存しないことに注意してください。MS-CDC キャプチャジョブは、トランザクションログエントリを処理済みとしてマークします。これにより、トランザクションログのバックアップジョブはトランザクションログからエントリを削除できます。

トランザクションログのサイズと MS-CDC ジョブの正常な実行はモニタリングすることをお勧めします。MS-CDC ジョブが失敗すると、トランザクションログが過度に増加し、 AWS DMS レプリケーションが失敗する可能性があります。MS-CDC キャプチャジョブのエラーは、ソースデータベースの `sys.dm_cdc_errors` 動的管理ビューを使用してモニタリングできます。トランザクションログのサイズのモニタリングには、`DBCC SQLPERF(LOGSPACE)` 管理コマンドを使用します。

**MS-CDC によるトランザクション ログの増加に対処するには**

1. データベース`Log Space Used %`の AWS DMS が からレプリケートされていることを確認し、継続的に増加していることを確認します。

   ```
   DBCC SQLPERF(LOGSPACE)
   ```

1. トランザクションログのバックアッププロセスをブロックしている要因を特定します。

   ```
   Select log_reuse_wait, log_reuse_wait_desc, name from sys.databases where name = db_name();
   ```

   `log_reuse_wait_desc` 値が `REPLICATION` と等しい場合、ログバックアップの保持は MS-CDC のレイテンシーが原因です。

1. `maxtrans` と `maxscans` パラメータの値を増やして、キャプチャジョブが処理するイベント数を増やします。

   ```
   EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@maxtrans = 5000, @maxscans = 20 
   exec sp_cdc_stop_job 'capture'
   exec sp_cdc_start_job 'capture'
   ```

この問題に対処するには、 `maxscans` と の値を、ソースデータベースからレ AWS DMS プリケートするテーブルに対して生成されるイベントの平均数と`maxtrans*maxscans`等しく`maxtrans`なるように設定します。

このようなパラメータを推奨値よりも高く設定すると、キャプチャジョブはトランザクションログ内のすべてのイベントを処理します。このようなパラメータを推奨値より低く設定すると、MS-CDC のレイテンシーが増加し、トランザクションログが増大します。

ワークロードの変化により生成されるイベントの数が変化するため、`maxtrans` と `maxscans`の適切な値を特定することが困難である場合があります。この場合、MS-CDC のレイテンシーのモニタリングを設定することをお勧めします。詳細については、SQL Server ドキュメントの「[プロセスを監視する](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/administer-and-monitor-change-data-capture-sql-server?view=sql-server-ver15#Monitor)」を参照してください。その後、モニタリング結果に基づいて`maxtrans` と `maxscans` を動的に設定します。

 AWS DMS タスクを再開または続行するために必要なログシーケンス番号 (LSNs) がタスクで見つからない場合、タスクは失敗し、完全な再ロードが必要になることがあります。

**注記**  
 AWS DMS を使用して RDS for SQL Server ソースからデータをレプリケートする場合、Amazon RDS インスタンスの停止開始イベント後にレプリケーションを再開しようとするとエラーが発生することがあります。これは、SQL Server エージェントプロセスが停止または開始のイベントの後に再起動する際、キャプチャジョブプロセスを再起動するためです。これにより、MS-CDC のポーリング間隔がバイパスされます。  
このため、MS-CDC キャプチャジョブ処理よりもトランザクションボリュームが低いデータベースでは、 が停止した場所から AWS DMS 再開する前に、データが処理またはレプリケートおよびバックアップとしてマークされ、次のエラーが発生する可能性があります。  

```
[SOURCE_CAPTURE ]E: Failed to access LSN '0000dbd9:0006f9ad:0003' in the backup log sets since BACKUP/LOG-s are not available. [1020465] (sqlserver_endpoint_capture.c:764)
```
この問題を軽減するには、`maxtrans` と `maxscans` の値を上記の推奨のとおりに設定します。

# のソースとしての Microsoft Azure SQL データベースの使用 AWS DMS
<a name="CHAP_Source.AzureSQL"></a>

では AWS DMS、Microsoft Azure SQL Database を SQL Server と同じ方法でソースとして使用できます。 は、オンプレミスまたは Amazon EC2 インスタンスで実行されている SQL Server でサポートされているデータベースバージョンのリストをソースとして AWS DMS サポートします。

詳細については、「[のソースとしての Microsoft SQL Server データベースの使用 AWS DMS](CHAP_Source.SQLServer.md)」を参照してください。

**注記**  
AWS DMS は、Azure SQL Database での変更データキャプチャオペレーション (CDC) をサポートしていません。

# のソースとしての Microsoft Azure SQL マネージドインスタンスの使用 AWS DMS
<a name="CHAP_Source.AzureMgd"></a>

では AWS DMS、Microsoft Azure SQL Managed Instance をソースとして使用できます。これは、SQL Server AWS DMS がサポートするのとほぼ同じ方法で使用できます。ソースとして、オンプレミスまたは Amazon EC2 インスタンスで実行されている SQL Server でサポートされているデータベースバージョンのリストと同じです。

詳細については、「[のソースとしての Microsoft SQL Server データベースの使用 AWS DMS](CHAP_Source.SQLServer.md)」を参照してください。

# のソースとして Microsoft Azure Database for PostgreSQL Flexible Server を使用する AWS DMS
<a name="CHAP_Source.AzureDBPostgreSQL"></a>

では AWS DMS、Microsoft Azure Database for PostgreSQL Flexible Server を PostgreSQL とほぼ同じ方法でソースとして使用できます。

がソースとして AWS DMS サポートする Microsoft Azure Database for PostgreSQL Flexible Server のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

## 論理レプリケーションとデコードのための Microsoft Azure for PostgreSQL フレキシブルサーバーのセットアップ
<a name="CHAP_Source.AzureDBPostgreSQL.setup"></a>

データベースの移行中に、Microsoft Azure Database for PostgreSQL フレキシブルサーバーの論理レプリケーションとデコード機能を使用できます。

論理デコードには、DMS は `test_decoding` または `pglogical` プラグインのどちらかを使用します。`pglogical` プラグインがソースのPostgreSQL データベースで利用できる場合、DMS は `pglogical` を使用してレプリケーションスロットを作成します。それ以外の場合は、`test_decoding` プラグインを使用します。

Microsoft Azure for PostgreSQL フレキシブルサーバーを DMS のソースエンドポイントとして設定するには、次の手順を実行します。

1. ポータルの [Server Parameters] ページを開きます。

1. `wal_level` サーバーパラメータを `LOGICAL` に設定します。

1. `pglogical` の拡張機能を使用する場合は、`shared_preload_libraries` パラメータと `azure.extensions` パラメータを `pglogical` に設定します。

1. `max_replication_slots` パラメータは、同時に実行する予定の DMS タスクの最大数に設定します。Microsoft Azure でのこのパラメータのデフォルト値は 10 です。このパラメータの最大値は PostgreSQL インスタンスの使用可能なメモリにより異なります。メモリ 1 GB あたり 2～8 のレプリケーションスロットを使用できます。

1. `max_wal_senders` パラメータを 1 以上の値に設定します。`max_wal_senders` パラメータは、実行可能な同時タスクの数を設定します。デフォルト値は 10 です。

1. `max_worker_processes` パラメータ値を 16 以上に設定します。この設定以外の場合は、次のようなエラーが表示されることがあります。

   ```
   WARNING: out of background worker slots.
   ```

1. 変更を保存します。サーバーを再起動して変更を適用します。

1. PostgreSQL インスタンスが接続するリソースからのネットワークトラフィックを許可していることを確認します。

1. 次のコマンドを使用して、既存のユーザーにレプリケーションのアクセス許可を付与するか、レプリケーションのアクセス許可を持つ新しいユーザーを作成します。
   + 次のコマンドを使用して、既存のユーザーにレプリケーションのアクセス許可を付与します。

     ```
     ALTER USER <existing_user> WITH REPLICATION;
     ```
   + 次のコマンドを使用して、レプリケーションのアクセス許可を持つ新しいユーザーを作成します。

     ```
     CREATE USER aws_dms_user PASSWORD 'aws_dms_user_password';
     GRANT azure_pg_admin to aws_dms_user;
     ALTER ROLE aws_dms_user REPLICATION LOGIN;
     ```

PostgreSQL を使用した論理レプリケーションの詳細については、次のトピックを参照してください。
+ [論理レプリケーションを使用した変更データ キャプチャ (CDC) の有効化](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [ネイティブ CDC スタートポイントを使用して PostgreSQL ソース エンドポイントの CDC ロードを設定するには](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ 「[Azure Database for PostgreSQL のドキュメント](https://learn.microsoft.com/en-us/azure/postgresql/)」の「[Azure Database for PostgreSQL - フレキシブル サーバーでの論理レプリケーションと論理デコード](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-logical)」

# Microsoft Azure Database for MySQL Flexible Server を のソースとして使用する AWS DMS
<a name="CHAP_Source.AzureDBMySQL"></a>

を使用すると AWS DMS、Microsoft Azure Database for MySQL Flexible Server を MySQL とほぼ同じ方法でソースとして使用できます。

がソースとして AWS DMS サポートする Microsoft Azure Database for MySQL Flexible Server のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

でカスタマー管理の MySQL 互換データベースを使用する方法の詳細については AWS DMS、「」を参照してください[のソースとしてのセルフマネージド MySQL 互換データベースの使用 AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged)。

## のソースとして Azure MySQL を使用する場合の制限 AWS Database Migration Service
<a name="CHAP_Source.AzureDBMySQL.limitations"></a>
+ Azure MySQL Flexible Server System 変数の defaut 値は `sql_generate_invisible_primary_key`であり`ON`、サーバーは、明示的なプライマリキーなしで作成されたテーブルに、生成された非表示のプライマリキー (GIPK) を自動的に追加します。 AWS DMS は、GIPK 制約のある MySQL テーブルの継続的なレプリケーションをサポートしていません。

# のソースとしての OCI MySQL Heatwave の使用 AWS DMS
<a name="CHAP_Source.heatwave"></a>

では AWS DMS、MySQL とほぼ同じ方法で OCI MySQL Heatwave MySQL をソースとして使用できます。OCI MySQL Heatwave をソースとして使用するには、いくつかの追加の設定変更が必要です。

がソースとして AWS DMS サポートする OCI MySQL Heatwave のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

## 論理レプリケーションのための OCI MySQL Heatwave のセットアップ
<a name="CHAP_Source.heatwave.setup"></a>

OCI MySQL Heatwave インスタンスを DMS のソースエンドポイントとして設定するには、次を実行します。

1. OCI Console にサインインして、左上隅にあるメインのハンバーガーメニュー (≡) を開きます。

1. **[データベース]**、**[DB Systems]** の順に選択します。

1. **[設定]** メニューを開きます。

1. **[設定を作成]** を選択します。

1. 設定名 (など) を入力します。例えば、**dms\$1configuration** と入力します。

1. 現在作業中の OCI MySQL Heatwave インスタンスのシェイプを選択します。シェイプは、インスタンスの **[DB system configuration:Shape]** セクションの下にある **[DB system configuration]** プロパティタブで確認できます。

1. **[User variables]** セクションで、`binlog_row_value_options` システム変数を選択します。デフォルト値は `PARTIAL_JSON` です。この値を消去します。

1. **[サーバーの作成]** ボタンを選択します。

1. OCI MySQLHeatwave インスタンスを開き、**[編集]** ボタンをクリックします。

1. **[設定]** セクションで、**[Change configuration]** ボタンをクリックして、ステップ 4 で作成したシェープの設定を選択します。

1. 変更が有効になると、インスタンスの論理レプリケーションの準備が整います。

# のソースとしての Google Cloud for MySQL の使用 AWS DMS
<a name="CHAP_Source.GC"></a>

を使用すると AWS DMS、MySQL とほぼ同じ方法で Google Cloud for MySQL をソースとして使用できます。

がソースとして AWS DMS サポートする GCP MySQL のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

詳細については、「[のソースとしての MySQL 互換データベースの使用 AWS DMS](CHAP_Source.MySQL.md)」を参照してください。

**注記**  
ソースとしての GCP MySQL 8.0 のサポートは AWS DMS 、バージョン 3.4.6 で利用できます。  
AWS DMS は、MySQL インスタンス`verify-full`の GCP の SSL モードをサポートしていません。  
GCP MySQL セキュリティ設定`Allow only SSL connections`は、サーバー証明書とクライアント証明書の両方の検証が必要なため、サポートされていません。 はサーバー証明書の検証 AWS DMS のみをサポートします。  
AWS DMS は、`binlog_checksum`データベースフラグのデフォルトの GCP CloudSQL for MySQL 値 `CRC32` をサポートします。

# のソースとしての Google Cloud for PostgreSQL の使用 AWS DMS
<a name="CHAP_Source.GCPostgres"></a>

を使用すると AWS DMS、セルフマネージド PostgreSQL データベースとほぼ同じ方法で、Google Cloud for PostgreSQL をソースとして使用できます。

がソースとして AWS DMS サポートする GCP PostgreSQL のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

詳細については、「[PostgreSQL データベースを AWS DMS ソースとして使用する](CHAP_Source.PostgreSQL.md)」を参照してください。

## 論理レプリケーションとデコードのための Google Cloud for PostgreSQL のセットアップ
<a name="CHAP_Source.GCPostgres.setup"></a>

データベースの移行中に、Google Cloud SQL for PostgreSQL の論理レプリケーションとデコード機能を使用できます。

論理デコードには、DMS は 次のプラグインのどちらかを使用します。
+ `test_decoding`
+ `pglogical`

`pglogical` プラグインがソースのPostgreSQL データベースで利用できる場合、DMS は `pglogical` を使用してレプリケーションスロットを作成します。それ以外の場合は、`test_decoding` プラグインを使用します。

での論理デコードの使用については、次の点に注意してください AWS DMS。

1. Google Cloud SQL for PostgreSQL の場合、`cloudsql.logical_decoding` フラグを `on` に設定して、論理デコード機能を有効にします。

1. `pglogical` を有効にするには、`cloudsql.enable_pglogical` フラグを `on` に設定して、データベースを再起動します。

1. 論理デコード機能を使用するには、`REPLICATION` 属性を持つ PostgreSQL ユーザーを作成します。`pglogical` 拡張機能を使用する場合、ユーザーには `cloudsqlsuperuser` ロールが必要です。`cloudsqlsuperuser` ロールを持つユーザーを作成するには次を実行します。

   ```
   CREATE USER new_aws_dms_user WITH REPLICATION
   IN ROLE cloudsqlsuperuser LOGIN PASSWORD 'new_aws_dms_user_password';
   ```

   既存のユーザーにこの属性を設定するには、次を実行します。

   ```
   ALTER USER existing_user WITH REPLICATION;
   ```

1. `max_replication_slots` パラメータは、同時に実行する予定の DMS タスクの最大数に設定します。Google Cloud SQL では、このパラメータのデフォルト値は 10 です。このパラメータの最大値は PostgreSQL インスタンスの使用可能なメモリにより異なります。メモリ 1 GB あたり 2～8 のレプリケーションスロットを使用できます。

PostgreSQL を使用した論理レプリケーションの詳細については、次のトピックを参照してください。
+ [論理レプリケーションを使用した変更データ キャプチャ (CDC) の有効化](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [ネイティブ CDC スタートポイントを使用して PostgreSQL ソース エンドポイントの CDC ロードを設定するには](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ 「[CLOUD SQL FOR POSTGRESQL のドキュメント](https://cloud.google.com/sql/docs/postgres)」の「[論理レプリケーションとデコードを設定する](https://cloud.google.com/sql/docs/postgres/replication/configure-logical-replication)」

# PostgreSQL データベースを AWS DMS ソースとして使用する
<a name="CHAP_Source.PostgreSQL"></a>

を使用して、1 つ以上の PostgreSQL データベースからデータを移行できます AWS DMS。PostgreSQL データベースをソースとして使用する場合、別の PostgreSQL データベースまたはサポートされているその他の データベースのいずれかにデータを移行できます。

がソースとして AWS DMS サポートする PostgreSQL のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

AWS DMS は、次のタイプのデータベースに対して PostgreSQL をサポートしています。
+  オンプレミスのデータベース
+ Amazon EC2 インスタンスでのデータベース
+ Amazon RDS DB インスタンス上のデータベース
+ Amazon Aurora PostgreSQL 互換エディションに基づく DB インスタンス上のデータベース
+ Amazon Aurora PostgreSQL 互換 Serverless エディションを基盤とする DB インスタンス上のデータベース

**注記**  
DMS は Amazon Aurora PostgreSQL—Serverless V1 についてはフルロードのソースとしてのみサポートしています。ただし、Amazon Aurora PostgreSQL—Serverless V2 は、フルロード、フルロード \$1 CDC、CDC のみのタスクのソースとして使用することができます。

Secure Sockets Layer (SSL) を使用して、PostgreSQL エンドポイントとレプリケーション インスタンスとの接続を暗号化できます。PostgreSQL エンドポイントで SSL を使用する方法の詳細については、「[での SSL の使用 AWS Database Migration Service](CHAP_Security.SSL.md)」をご参照ください。

ソースとして PostgreSQL を使用する場合の追加セキュリティ要件として、指定されるユーザーアカウントは PostgreSQL データベースの登録済みユーザーでなければなりません。

PostgreSQL データベースを AWS DMS ソースエンドポイントとして設定するには、次の手順を実行します。
+ PostgreSQL ソースデータベース AWS DMS へのアクセスを提供する適切なアクセス許可を持つ PostgreSQL ユーザーを作成します。
**注記**  
PostgreSQL ソースデータベースが自己管理型の場合は詳細については、「[でのソースとしてのセルフマネージド PostgreSQL データベースの使用 AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites)」をご参照ください。
PostgreSQL ソースデータベースが Amazon RDS によって管理されている場合詳細については、「[DMS ソースとしての AWSマネージド PostgreSQL データベースの使用](#CHAP_Source.PostgreSQL.RDSPostgreSQL)」をご参照ください。
+ 選択した PostgreSQL データベース設定に準拠する PostgreSQL ソース エンドポイントを作成します。
+ テーブルを移行するタスクまたはタスクのセットを作成します。

  全ロードのみのタスクを作成する場合、これ以上エンドポイントの設定は必要ありません。

  変更データキャプチャのタスク(CDC のみ、または全ロードおよび CDC タスク)を作成する前に、「[セルフマネージド PostgreSQL データベースを AWS DMS ソースとして使用して CDC を有効にする](#CHAP_Source.PostgreSQL.Prerequisites.CDC)」または「[で AWS管理された PostgreSQL DB インスタンスで CDC を有効にする AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC)」をご参照ください。

**Topics**
+ [でのソースとしてのセルフマネージド PostgreSQL データベースの使用 AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites)
+ [DMS ソースとしての AWSマネージド PostgreSQL データベースの使用](#CHAP_Source.PostgreSQL.RDSPostgreSQL)
+ [論理レプリケーションを使用した変更データ キャプチャ (CDC) の有効化](#CHAP_Source.PostgreSQL.Security)
+ [ネイティブ CDC スタートポイントを使用して PostgreSQL ソース エンドポイントの CDC ロードを設定するには](#CHAP_Source.PostgreSQL.v10)
+ [を使用した PostgreSQL から PostgreSQL への移行 AWS DMS](#CHAP_Source.PostgreSQL.Homogeneous)
+ [を使用した Babelfish for Amazon Aurora PostgreSQL からの移行 AWS DMS](#CHAP_Source.PostgreSQL.Babelfish)
+ [PostgreSQL ソースデータベースからの AWS DMS アーティファクトの削除](#CHAP_Source.PostgreSQL.CleanUp)
+ [DMS ソースとして PostgreSQL データベースを使用する場合の追加設定](#CHAP_Source.PostgreSQL.Advanced)
+ [PostgreSQL のソースとしてのリードレプリカ](#CHAP_Source.PostgreSQL.ReadReplica)
+ [`MapBooleanAsBoolean` PostgreSQL エンドポイント設定の使用](#CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting)
+ [DMS ソースとして PostgreSQL を使用する場合のエンドポイント設定と追加の接続属性 (ECA)](#CHAP_Source.PostgreSQL.ConnectionAttrib)
+ [DMS のソースとして PostgreSQL データベースを使用する場合の制限](#CHAP_Source.PostgreSQL.Limitations)
+ [PostgreSQL のソースデータ型](#CHAP_Source-PostgreSQL-DataTypes)

## でのソースとしてのセルフマネージド PostgreSQL データベースの使用 AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites"></a>

セルフマネージド PostgreSQL データベースをソースとして使用すると、別の PostgreSQL データベース、または でサポートされている他のターゲットデータベースのいずれかにデータを移行できます AWS DMS。データベースソースには、オンプレミスのデータベースまたは Amazon EC2 インスタンスで実行されているセルフ管理エンジンを使用できます。DB インスタンスは、全ロードタスクと継続的レプリケーションの変更データキャプチャ (CDC) タスクの両方に使用できます。

### セルフマネージド PostgreSQL データベースを AWS DMS ソースとして使用するための前提条件
<a name="CHAP_Source.PostgreSQL.Prerequisites.SelfManaged"></a>

自己管理 PostgreSQL ソースデータベースからデータを移行する前に、次の操作を行います：
+ バージョン 9.4.x 以降の PostgreSQL データベースを使用していることを確認する。
+ 全ロードと CDC タスクまたは CDC のみのタスクの場合は、PostgreSQL ソースデータベースに指定されたユーザーアカウントにスーパーユーザー許可を付与します。ユーザー アカウントはソース内のレプリケーション固有機能にアクセスするには、スーパーユーザー許可が必要です。テーブルを正常に移行するため、DMS ユーザーアカウントには、すべての列に対する SELECT のアクセス許可が必要です。列に対するアクセス許可がない場合、DMS は通常の DMS データ型マッピングを使用してターゲットテーブルを作成するため、メタデータの相違やタスクの失敗につながります。
+  AWS DMS レプリケーションサーバーの IP アドレスを設定`pg_hba.conf`ファイルに追加し、レプリケーションとソケット接続を有効にします。以下に例を示します。

  ```
              # Replication Instance
              host all all 12.3.4.56/00 md5
              # Allow replication connections from localhost, by a user with the
              # replication privilege.
              host replication dms 12.3.4.56/00 md5
  ```

  PostgreSQL の `pg_hba.conf` の設定ファイルはクライアント認証を制御します。(HBA はホストベースの認証を表します) ファイルは従来、データベースクラスターのデータディレクトリに保存されています。
+ を使用して論理レプリケーションのソースとしてデータベースを設定する場合は、 AWS DMS 「」を参照してください。 [セルフマネージド PostgreSQL データベースを AWS DMS ソースとして使用して CDC を有効にする](#CHAP_Source.PostgreSQL.Prerequisites.CDC)

**注記**  
一部の AWS DMS トランザクションは、DMS エンジンが再度使用する前にしばらくアイドル状態になります。PostgreSQL バージョン 9.6 以降で `idle_in_transaction_session_timeout` パラメータを使用すると、アイドル状態のトランザクションでタイムアウトやエラーが生じる場合があります。 AWS DMSを使用する際、アイドル状態のトランザクションを終了しないでください。

### セルフマネージド PostgreSQL データベースを AWS DMS ソースとして使用して CDC を有効にする
<a name="CHAP_Source.PostgreSQL.Prerequisites.CDC"></a>

AWS DMS は、論理レプリケーションを使用した変更データキャプチャ (CDC) をサポートします。セルフ管理 PostgreSQL ソースデータベースの論理レプリケーションを有効にするには、`postgresql.conf` の設定ファイルで以下のパラメータと値を設定します:
+ `wal_level = logical` を設定します。
+ `max_replication_slots` を 1 より大きい値に設定します。

  `max_replication_slots` 値は、実行するタスクの数に従って設定してください。たとえば、5 つのタスクを実行するには、少なくとも 5 つのスロットを設定する必要があります。スロットは、タスクが開始するとすぐに自動的に開き、タスクが実行されなくなった場合でも開いたままです。開いているスロットは手動で削除してください。DMS でレプリケーションスロットを作成した場合、タスクを削除すると、DMS は自動的にレプリケーションスロットを削除することに注意してください。
+ `max_wal_senders` を 1 より大きい値に設定します。

  `max_wal_senders` パラメータは、実行可能な同時タスクの数を設定します。
+ `wal_sender_timeout` パラメータは、指定されたミリ秒数が過ぎても非アクティブなレプリケーション接続を終了します。オンプレミスの PostgreSQL データベースのデフォルトは 60,000 ミリ秒 (60 秒)。値を 0 (ゼロ) に設定するとタイムアウトメカニズムが無効になる。この設定は DMS では有効。

  `wal_sender_timeout` をゼロ以外の値に設定すると、CDC での DMS タスクには最低 10,000 ミリ秒 (10 秒) が必要となり、値が 10,000 ミリ秒未満になると失敗する。DMS レプリケーションインスタンスのマルチ AZ フェイルオーバー中に遅延が発生しないように、この値は 5 分未満にする。

一部のパラメータは静的であり、サーバースタート時にのみ設定できます。設定ファイル (セルフマネージドデータベースの場合) または DB パラメータグループ (RDS for PostgreSQL データベース) への変更は、サーバーが再起動されるまで無視されます。詳細については、[PostgreSQL ドキュメント](https://www.postgresql.org/docs/current/intro-whatis.html)をご参照ください。

CDC を有効にすることに関する詳細については、「[論理レプリケーションを使用した変更データ キャプチャ (CDC) の有効化](#CHAP_Source.PostgreSQL.Security)」をご参照ください。

## DMS ソースとしての AWSマネージド PostgreSQL データベースの使用
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL"></a>

 AWSマネージド PostgreSQL DB インスタンスをソースとして使用できます AWS DMS。 AWSが管理する PostgreSQL ソースを使用して、全ロードタスクと変更データキャプチャ (CDC) タスクの両方を実行できます。

### AWSマネージド PostgreSQL データベースを DMS ソースとして使用するための前提条件
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.Prerequisites"></a>

 AWSマネージド PostgreSQL ソースデータベースからデータを移行する前に、次の操作を行います。
+ PostgreSQL DB インスタンスに必要な最小限のアクセス許可を持つ AWS ユーザーアカウントをPostgreSQL ソースエンドポイントのユーザーアカウントとして使用することをお勧めします AWS DMS。管理アカウントの使用はお勧めしません。このアカウントには `rds_superuser` ロールと `rds_replication` ロールが必要です。`rds_replication` ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権許可付与します。

  使用するアカウントの管理ユーザーアカウントで複数のオブジェクトを作成します。その作成についての詳細は、「[マスター ユーザーアカウントを使用せず Amazon RDS for PostgreSQL データベースの移行](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser)」をご参照ください。
+ ソースデータベースが仮想プライベートクラウド (VPC) にある場合は、データベースが常駐する DB インスタンスへのアクセス権を提供する VPC セキュリティグループを選択します。これは、DMS レプリケーション インスタンスがソース DB インスタンスに正常に接続するために必要です。データベースと DMS レプリケーション インスタンスが同じ VPC 内にある場合は、適切なセキュリティグループを独自のインバウンド ルールに追加します。

**注記**  
一部の AWS DMS トランザクションは、DMS エンジンが再度使用する前にしばらくアイドル状態になります。PostgreSQL バージョン 9.6 以降で `idle_in_transaction_session_timeout` パラメータを使用すると、アイドル状態のトランザクションでタイムアウトやエラーが生じる場合があります。 AWS DMSを使用する際、アイドル状態のトランザクションを終了しないでください。

### で AWS管理された PostgreSQL DB インスタンスで CDC を有効にする AWS DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC"></a>

AWS DMS DB インスタンスが論理レプリケーションを使用するように設定されている場合、 は Amazon RDS PostgreSQL データベースで CDC をサポートします。次の表は、各マネージド PostgreSQL バージョンの論理レプリケーションの互換性をまとめ AWSたものです。


|  PostgreSQL バージョン  |  AWS DMS フルロードのサポート   |  AWS DMS CDC サポート  | 
| --- | --- | --- | 
|  Aurora PostgreSQL バージョン 2.1 (PostgreSQL 10.5 以前と互換)  |  はい  |  なし  | 
|  PostgreSQL 10.6 と互換性のある Aurora PostgreSQL バージョン 2.2 (またはそれ以降)   |  はい   |  はい  | 
|  PostgreSQL 10.21 と互換性のある RDS for PostgreSQL (またはそれ以降)  |  はい   |  はい  | 

**RDS PostgreSQL DB インスタンスに対して論理レプリケーションを有効にするには**

1. PostgreSQL DB インスタンスの AWS マスターユーザーアカウントを PostgreSQL ソースエンドポイントのユーザーアカウントとして使用します。マスターユーザーアカウントには、CDC を設定するために必要なロールがあります。

   マスター ユーザーアカウント以外のアカウントを使用する場合は、使用するアカウントのマスター ユーザーアカウントから複数のオブジェクトを作成する必要があります。詳細については、「[マスター ユーザーアカウントを使用せず Amazon RDS for PostgreSQL データベースの移行](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser)」を参照してください。

1. DB CLUSTER パラメータグループの `rds.logical_replication` パラメータを 1 に設定します。この静的パラメータを有効にするには、DB インスタンスを再起動する必要があります。このパラメータを適用する一環として、 AWS DMS は `wal_level`、`max_wal_senders`、`max_replication_slots`、`max_connections` の各パラメータを設定します。これらのパラメータの変更によって先書きログ (WAL) の生成が増える可能性があるため、論理レプリケーションスロットを使用する場合にのみ `rds.logical_replication` を設定してください。

1. `wal_sender_timeout` パラメータは、指定されたミリ秒数が過ぎても非アクティブなレプリケーション接続を終了します。 AWSマネージド PostgreSQL データベースのデフォルトは 30,000 ミリ秒 (30 秒) です。値を 0 (ゼロ) に設定するとタイムアウトメカニズムが無効になる。この設定は DMS では有効です。

   `wal_sender_timeout` をゼロ以外の値に設定すると、CDC での DMS タスクには最低 10,000 ミリ秒 (10 秒) が必要となり、値が 0～10,000 ミリ秒の場合は失敗します。DMS レプリケーションインスタンスのマルチ AZ フェイルオーバー中に遅延が発生しないように、この値は 5 分未満にします。

1.  DB クラスター パラメータグループで `max_worker_processes` パラメータの値が、`max_logical_replication_workers`、`autovacuum_max_workers`、`max_parallel_workers`の合計値以上となるようにしてください。多数のバックグラウンド ワーカー プロセスが、スモールインスタンスではアプリケーション ワークロードに影響を与える可能性があります。したがって、`max_worker_processes` をデフォルト値より大きく設定した場合は、データベースのパフォーマンスをモニタリングしてください。

1.  Aurora PostgreSQL を CDC のソースとして使用する場合は、`synchronous_commit` を `ON` に設定します。

**CDC に PostgreSQL MultiAZ DB クラスターリードレプリカを使用するには (継続的なレプリケーション)**

1. DB CLUSTER パラメータグループの `rds.logical_replication` と `sync_replication_slots` のパラメータを 1 に設定します。この静的パラメータを有効にするには、DB インスタンスを再起動する必要があります。

1. 次のコマンドを実行して、ライターに `awsdms_ddl_audit` テーブルを作成し、`objects_schema` を使用するスキーマの名前に置き換えます。

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. 次のコマンドを実行して、`awsdms_intercept_ddl` 関数を作成し、`objects_schema` を使用するスキーマの名前に置き換えます。

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. 次のコマンドを実行してイベントトリガー `awsdms_intercept_ddl` を作成します。

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

   これらのイベントにアクセスするすべてのユーザーおよびロールに必要な DDL 許可があることを確認します。例えば、次のようになります。

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

1. ライターでレプリケーションスロットを作成します。

   ```
   SELECT * FROM pg_create_logical_replication_slot('dms_read_replica_slot', 'test_decoding', false, true);
   ```

1. レプリケーションスロットがリーダーで使用可能であることを確認します。

   ```
   select * from pg_catalog.pg_replication_slots where slot_name = 'dms_read_replica_slot';
   
   slot_name            |plugin       |slot_type|datoid|database|temporary|active|active_pid|xmin|catalog_xmin|restart_lsn|confirmed_flush_lsn|wal_status|safe_wal_size|two_phase|inactive_since               |conflicting|invalidation_reason|failover|synced|
   ---------------------+-------------+---------+------+--------+---------+------+----------+----+------------+-----------+-------------------+----------+-------------+---------+-----------------------------+-----------+-------------------+--------+------+
   dms_read_replica_slot|test_decoding|logical  |     5|postgres|false    |false |          |    |3559        |0/180011B8 |0/180011F0         |reserved  |             |true     |2025-02-10 15:45:04.083 +0100|false      |                   |false   |false |
   ```

1. リードレプリカの DMS ソースエンドポイントを作成し、追加の接続属性を使用して論理レプリケーションスロット名を設定します。

   ```
   slotName=dms_read_replica_slot;
   ```

1. CDC/FL\$1CDC タスクを作成して開始します。
**注記**  
CDC/FL\$1CDC 移行の場合、DMS はタスク開始時刻を CDC 開始位置と見なします。レプリケーションスロットからの古い LSN はすべて無視されます。

### マスター ユーザーアカウントを使用せず Amazon RDS for PostgreSQL データベースの移行
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser"></a>

場合によっては、ソースとして使用している Amazon RDS PostgreSQL DB インスタンス用マスター ユーザーアカウントを使用しない場合があります。このような場合は、データ定義言語 (DDL) イベントをキャプチャするために複数のオブジェクトを作成します。マスターアカウント以外のアカウントでこれらのオブジェクトを作成し、マスターユーザーアカウントでトリガーを作成します。

**注記**  
ソースエンドポイントで `CaptureDdls` エンドポイント設定を `false` に設定すると、ソースデータベース上で次のテーブルおよびトリガーを作成する必要はありません。

これらのオブジェクトを作成するには、以下の手順を実行します。

**オブジェクトを作成するには**

1. オブジェクトが作成されるスキーマを選択します。デフォルトのスキーマは `public` です。スキーマが存在し、`OtherThanMaster` アカウントからアクセス可能であることを確認します。

1. マスターアカウント以外のユーザーアカウントを使用して PostgreSQL DB インスタンス、ここでは `OtherThanMaster` アカウントにログインします。

1. 以下のコマンドを実行し、以下のコード内の `objects_schema` を使用するスキーマの名前に置き換えて `awsdms_ddl_audit` テーブルを作成します。

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. 以下のコマンドを実行して `awsdms_intercept_ddl` 関数を作成します。コード内の `objects_schema` は、使用するスキーマの名前に置き換えてください。

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. `OtherThanMaster` アカウントからログアウトし、`rds_superuser` ロールが割り当てられたアカウントを使用してログインします。

1. 以下のコマンドを実行してイベントトリガー `awsdms_intercept_ddl` を作成します。

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end 
   EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

1. これらのイベントにアクセスするすべてのユーザーおよびロールに必要な DDL 許可があることを確認します。例えば、次のようになります。

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

前の手順を完了したら、`OtherThanMaster` アカウントを使用して AWS DMS ソースエンドポイントを作成できます。

**注記**  
これらのイベントは、`CREATE TABLE`、`ALTER TABLE`、および `DROP TABLE` ステートメントによってトリガーされます。

## 論理レプリケーションを使用した変更データ キャプチャ (CDC) の有効化
<a name="CHAP_Source.PostgreSQL.Security"></a>

PostgreSQL のネイティブ論理レプリケーション機能を使用して、PostgreSQL DB ソース用データベース移行中に変更データ キャプチャ (CDC) を有効にすることができます。この機能は、セルフ管理 PostgreSQL および Amazon RDS for PostgreSQL SQL DB インスタンスで使用できます。この方法では、ダウンタイムが短縮され、ターゲットデータベースがソース PostgreSQL データベースと同期しやすくなります。

AWS DMS は、プライマリキーを持つ PostgreSQL テーブルの CDC をサポートします。テーブルにプライマリキーがない場合、先書きログ (WAL) にはデータベース行の前イメージが含まれません。この場合、DMS はテーブルを更新できません。ここでは、追加の構成設定を使用し、回避策としてテーブルレプリカ アイデンティティを使用できます。ただし、この方法では追加のログが生成される可能性があります。注意深いテストの後にのみ、回避策としてテーブルレプリカ アイデンティティ を使用することをお勧めします。詳細については、「[DMS ソースとして PostgreSQL データベースを使用する場合の追加設定](#CHAP_Source.PostgreSQL.Advanced)」を参照してください。

**注記**  
REPLICA IDENTITY FULL は論理デコードプラグインではサポートされていますが、pglogical プラグインではサポートされていません。詳細については、「[pglogical ドキュメント](https://github.com/2ndQuadrant/pglogical#primary-key-or-replica-identity-required)」を参照してください。

全ロードタスク、CDC および CDC のみのタスクの場合、 は論理レプリケーションスロット AWS DMS を使用して、ログがデコードされるまでレプリケーション用の WAL ログを保持します。全ロードおよび CDC タスクまたは CDC タスクの再起動(再開ではない)によって、レプリケーション スロットが再作成されます。

**注記**  
論理デコードの場合、DMS は test\$1decoding または pglogical プラグインのいずれかを使用します。pglogical プラグインがソース PostgreSQL データベースで使用できる場合、DMS は pglogical を使用してレプリケーション スロットを作成し、それ以外の場合は test\$1decoding プラグインが使用されます。test\$1decoding プラグインの詳細については、「[PostgreSQL のドキュメント](https://www.postgresql.org/docs/9.4/test-decoding.html)」を参照してください。  
データベースパラメータ `max_slot_wal_keep_size` がデフォルト以外の値に設定されており、レプリケーションスロットの `restart_lsn` の値が現在の LSN よりも大きい場合、必要な WAL ファイルが削除されるため、DMS タスクは失敗します。

### pgglogical プラグインの設定
<a name="CHAP_Source.PostgreSQL.Security.Pglogical"></a>

PostgreSQL 拡張機能として実装された pglogical プラグインは、選択的データ レプリケーション用論理レプリケーションシステムとモデルです。次の表に、pglogical プラグインをサポートするソース PostgreSQL データベースバージョンを挙げます。


|  PostgreSQL ソース   |  plogical のサポート  | 
| --- | --- | 
|  セルフ管理 PostgreSQL 9.4 以降  |  はい  | 
|  Amazon RDS PostgreSQL 9.5 以降  |  いいえ  | 
|  Amazon RDS PostgreSQL 9.6 以降  |  はい  | 
|  Aurora PostgreSQL 1.x から 2.5.x まで  |  いいえ  | 
|  Aurora PostgreSQL 2.6 以上  |  はい  | 
|  Aurora PostgreSQL 3.3 以上  |  はい  | 

で使用する pglogical を設定する前に AWS DMS、まず PostgreSQL ソースデータベースで変更データキャプチャ (CDC) の論理レプリケーションを有効にします。
+ *セルフ管理* PostgreSQL ソースデータベースにおいて CDC での論理レプリケーションの有効化について詳しくは、「[セルフマネージド PostgreSQL データベースを AWS DMS ソースとして使用して CDC を有効にする](#CHAP_Source.PostgreSQL.Prerequisites.CDC)」をご参照ください。
+ *AWSが管理する*PostgreSQL ソースデータベースでの CDC 用論理レプリケーションの有効化については、「[で AWS管理された PostgreSQL DB インスタンスで CDC を有効にする AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC)」をご参照ください。

PostgreSQL ソースデータベースで論理レプリケーションを有効にした後、次のステップに従って、DMS で使用する pglogical を設定します。

**で PostgreSQL ソースデータベースの論理レプリケーションに pglogical プラグインを使用するには AWS DMS**

1. PostgreSQL ソースデータベースに pglogical 拡張機能を作成します：

   1. 正しいパラメータを設定します：
      + セルフ管理 PostgreSQL データベースの場合は、データベースパラメータ `shared_preload_libraries= 'pglogical'` を設定します。
      + Amazon RDS と Amazon Aurora PostgreSQL 互換エディションの PostgreSQL で、パラメーター `shared_preload_libraries` を同じ RDS パラメーターグループ内の `pglogical` に設定します。

   1. PostgreSQL ソースデータベースを再起動します。

   1. PostgreSQL データベースで、コマンド `create extension pglogical;` を実行します。

1. pglogical が正常にインストールされたことを確認するには、次のコマンドを実行します：

   `select * FROM pg_catalog.pg_extension`

PostgreSQL ソースデータベースエンドポイントの変更データキャプチャを実行する AWS DMS タスクを作成できるようになりました。

**注記**  
PostgreSQL ソースデータベースで pglogical を有効にしないとき、 AWS DMS はデフォルトで `test_decoding` プラグインを使用します。pglogical が論理デコードに対して有効になっている場合、 はデフォルトで pglogical AWS DMS を使用します。ただし、代わりに `test_decoding` のプラグインを使用する追加の接続属性 `PluginName` を設定することもできます。

## ネイティブ CDC スタートポイントを使用して PostgreSQL ソース エンドポイントの CDC ロードを設定するには
<a name="CHAP_Source.PostgreSQL.v10"></a>

エンドポイントを作成するときに、`slotName` の追加の接続属性を既存の論理レプリケーション スロットの名前に設定することで、ソースとして PostgreSQL によりネイティブ CDC スタートポイントを有効にします。この論理レプリケーションスロットは、エンドポイントの作成時点からの継続的な変更を保持するため、以前の時点からのレプリケーションをサポートします。

PostgreSQL は、 AWS DMS が論理レプリケーションスロットから変更を正常に読み取った後にのみ破棄される WAL ファイルにデータベースの変更を書き込みます。論理レプリケーションスロットを使用すると、ログに記録された変更がレプリケーションエンジンによって消費される前に削除されないように保護できます。

ただし、変更率と消費率によっては、論理レプリケーションスロットに保持されている変更により、ディスク使用率が高くなることがあります。論理レプリケーション スロットを使用する場合は、ソース PostgreSQL インスタンスにスペース使用アラームを設定することをお勧めします。追加の `slotName` 接続属性の設定についての詳細は、「[DMS ソースとして PostgreSQL を使用する場合のエンドポイント設定と追加の接続属性 (ECA)](#CHAP_Source.PostgreSQL.ConnectionAttrib)」をご参照ください。

次の手順では、このアプローチについて詳しく説明します。

**ネイティブ CDC 開始ポイントを使用して PostgreSQL ソースエンドポイントの CDC ロードを設定するには**

1. 開始点として使用する以前のレプリケーションタスク (親タスク) によって使用されていた論理レプリケーションスロットを特定します。次に、ソースデータベースの `pg_replication_slots` ビューにクエリを実行して、このスロットにアクティブな接続がないことを確認します。その場合は、先に進む前に解決して終了します。

   次のステップでは、論理レプリケーションスロットが `abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef` であると仮定します。

1. 次の追加接続属性設定を含む新しいソースエンドポイントを作成します。

   ```
   slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
   ```

1. コンソール AWS CLI または AWS DMS API を使用して、新しい CDC 専用タスクを作成します。たとえば、CLI を使用して、次の `create-replication-task` コマンドを実行できます。

   ```
   aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test 
   --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 
   --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 
   --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE 
   --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" 
   --replication-task-settings "file://task-pg.json"
   ```

   前述のコマンドでは、次のオプションが設定されています。
   + `source-endpoint-arn` は、ステップ 2 で作成した新しい値に設定されます。
   + `replication-instance-arn` オプションは、ステップ 1 の親タスクと同じ値に設定されます。
   + `table-mappings` および `replication-task-settings` オプションは、ステップ 1 の親タスクと同じ値に設定されます。
   + `cdc-start-position` はオプションはスタート位置の値に設定されます。この開始位置を調べるには、ソースデータベースの `pg_replication_slots` ビューにクエリを実行するか、ステップ 1 で親タスクのコンソール詳細を表示します。詳細については、「[CDC ネイティブのスタートポイントの決定](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint.Native)」を参照してください。

    AWS DMS コンソールを使用して新しい CDC 専用タスクを作成するときにカスタム CDC 開始モードを有効にするには、次の手順を実行します。
   + **[タスク設定]** セクションの **[ソーストランザクションの CDC 開始モード]** では、**[カスタム CDC 開始モードを有効にする]** を選択する。
   + **[ソーストランザクションのカスタム CDC 開始点]** では、**[ログシーケンス番号を指定する]** を選択する。システム変更番号を指定するか、**[復旧チェックポイントを指定する]** を選択して、復旧チェックポイントを指定する。

   この CDC タスクが実行されると、指定された論理レプリケーションスロットが存在しない場合、 はエラーを AWS DMS レイズします。また、`cdc-start-position` の有効な設定を使用してタスクが作成されていない場合、エラーを返します。

pglogical プラグインでネイティブ CDC スタートポイントを使用し、新しいレプリケーション スロットを使用する場合は、CDC タスクを作成する前に、次のステップを実行してください。

**別の DMS タスクの一部として以前に作成されていない新しいレプリケーション スロットを使用するには**

1. 次に示すように、レプリケーション スロットを作成します：

   ```
   SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
   ```

1. データベースがレプリケーションスロットを作成した後、次のとおりスロットの **restart\$1lsn** と **confirmed\$1flush\$1lsn** の値を取得してメモしておきます。

   ```
   select * from pg_replication_slots where slot_name like 'replication_slot_name';
   ```

   レプリケーションスロットの後に作成された CDC タスクのネイティブな CDC 開始点は、**confirmed\$1flush\$1lsn** 値以前にできないことに注意します。

   **restart\$1lsn** と **confirmed\$1flush\$1lsn** の値の詳細については、「[pg\$1replication\$1slots](https://www.postgresql.org/docs/14/view-pg-replication-slots.html)」を参照してください。

1. pglogical ノードを作成します。

   ```
   SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
   ```

1. `pglogical.create_replication_set` 関数を使用して 2 つのレプリケーションセットを作成します。最初のレプリケーションセットは、プライマリキーを持つテーブルの更新と削除を追跡します。2 番目のレプリケーションセットは挿入のみを追跡し、最初のレプリケーションセットと同じ名前にプレフィックス「i」が追加されています。

   ```
   SELECT pglogical.create_replication_set('replication_slot_name', false, true, true, false);
   SELECT pglogical.create_replication_set('ireplication_slot_name', true, false, false, true);
   ```

1. レプリケーション集合にテーブルを追加します。

   ```
   SELECT pglogical.replication_set_add_table('replication_slot_name', 'schemaname.tablename', true);
   SELECT pglogical.replication_set_add_table('ireplication_slot_name', 'schemaname.tablename', true);
   ```

1. ソース エンドポイントを作成するときに、次の追加接続属性 (ECA) を設定します。

   ```
   PluginName=PGLOGICAL;slotName=slot_name;
   ```

新しいレプリケーション スロットを使用して PostgreSQL ネイティブのスタートポイントを使用して CDC のみのタスクを作成できるようになりました。pglogical プラグインの詳細については、「[pglogical 3.7 ドキュメント](https://www.enterprisedb.com/docs/pgd/3.7/pglogical/)」を参照してください。

## を使用した PostgreSQL から PostgreSQL への移行 AWS DMS
<a name="CHAP_Source.PostgreSQL.Homogeneous"></a>

PostgreSQL 以外のデータベースエンジンから PostgreSQL データベースに移行する場合、 AWS DMS はほとんどの場合、最適な移行ツールです。一方、PostgreSQL データベースから PostgreSQL データベースに移行する場合、PostgreSQL ツールがより効果的な場合があります。

### PostgreSQL ネイティブ ツールを使用してデータを移行する
<a name="CHAP_Source.PostgreSQL.Homogeneous.Native"></a>

以下の条件では、`pg_dump` などの PostgreSQL データベース移行ツールを使用することをお勧めします。
+ ソース PostgreSQL データベースからターゲット PostgreSQL データベースに移行する同種移行である。
+ データベース全体を移行する。
+ ネイティブツールで最小のダウンタイムでデータを移行できる。

pg\$1dump ユーティリティでは、COPY コマンドを使用して、PostgreSQL データベースのスキーマとデータダンプを作成します。pg\$1dump によって生成されるダンプ スクリプトは、同じ名前のデータベースにデータをロードし、テーブル、インデックス、外部キーを再作成します。`pg_restore` コマンドと `-d` パラメータを使用して、データを別の名前でデータベースに復元できます。

EC2 で実行されている PostgreSQL ソースデータベースから Amazon RDS for PostgreSQL ターゲットにデータを移行する場合は、pglogical プラグインを使用できます。

PostgreSQL データベースを Amazon RDS for PostgreSQL や Amazon Aurora (PostgreSQL 互換エディション) にインポートする詳しい方法については、「[https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html)」をご参照ください。

### DMS を使用した PostgreSQL から PostgreSQL へのデータの移行
<a name="CHAP_Source.PostgreSQL.Homogeneous.DMS"></a>

 AWS DMS は、例えば、オンプレミスのソース PostgreSQL データベースからターゲット Amazon RDS for PostgreSQL または Aurora PostgreSQL インスタンスにデータを移行できます。通常、PostgreSQL のコアまたは基本のデータ型は正常に移行されます。

**注記**  
パーティションテーブルを PostgreSQL ソースから PostgreSQL ターゲットにレプリケーションする場合、DMS タスクの選択条件の一部として親テーブルを言及する必要はありません。親テーブルに言及すると、ターゲット上の子テーブルでデータが複製され、PK 違反が発生する可能性があります。テーブルマッピングの選択基準で子テーブルのみを選択すると、親テーブルに自動代入されます。

ソースデータベースでサポートされているが、ターゲットでサポートされていないデータ型は正常に移行されない場合があります。データ型が不明な場合、 は一部のデータ型を文字列として AWS DMS ストリーミングします。XML や JSON などの一部のデータ型は、小さなファイルの場合は正常に移行されますが、大きなドキュメントの場合は失敗することがあります。

データ型の移行を実行するときは、以下について注意してください：
+ 場合によっては、PostgreSQL NUMERIC (p, s) データ型で精度とスケールが指定されない場合があります。DMS バージョン 3.4.2 以前では、DMS はデフォルトでは 28 の精度と 6 のスケール (NUMERIC (28,6)) を使用します。たとえば、ソースからの値 0.611111104488373 は、PostgreSQL ターゲットの 0.611111 に変換されます。
+ ARRAY データ型を持つテーブルにはプライマリ キーが必要です。ARRAY データ型にプライマリ キーがないテーブルは、全ロード中に中断されます。

次の表は、ソース PostgreSQL のデータ型と、これらのデータ型が正常に移行されるかどうかを示しています。


| データ型 | 正常に移行 | 部分的に移行 | 移行しない | コメント | 
| --- | --- | --- | --- | --- | 
| INTEGER | X |  |  |  | 
| SMALLINT | X |  |  |  | 
| BIGINT | X |  |  |  | 
| NUMERIC/DECIMAL(p,s) |  | X |  | この場合、0<p<39 と 0<s | 
| NUMERIC/DECIMAL |  | X |  | この場合、p>38 または p=s=0 | 
| REAL | X |  |  |  | 
| DOUBLE | X |  |  |  | 
| SMALLSERIAL | X |  |  |  | 
| SERIAL | X |  |  |  | 
| BIGSERIAL | X |  |  |  | 
| MONEY | X |  |  |  | 
| CHAR |  | X |  | 精度の指定なし | 
| CHAR(n) | X |  |  |  | 
| VARCHAR |  | X |  | 精度の指定なし | 
| VARCHAR(n) | X |  |  |  | 
| TEXT | X |  |  |  | 
| BYTEA | X |  |  |  | 
| TIMESTAMP | X |  |  | 正と負の無限大値はそれぞれ '9999-12-31 23:59:59 'と '4713-01-01 00:00:00 BC' に切り捨てられます。 | 
| TIMESTAMP WITH TIME ZONE |  | X |  |  | 
| DATE | X |  |  |  | 
| TIME | X |  |  |  | 
| TIME WITH TIME ZONE | X |  |  |  | 
| INTERVAL |  | X |  |  | 
| BOOLEAN | X |  |  |  | 
| ENUM |  |  | X |  | 
| CIDR | X |  |  |  | 
| INET |  |  | X |  | 
| MACADDR |  |  | X |  | 
| TSVECTOR |  |  | X |  | 
| TSQUERY |  |  | X |  | 
| XML |  | X |  |  | 
| POINT | X |  |  | PostGIS 空間データ型 | 
| LINE |  |  | X |  | 
| LSEG |  |  | X |  | 
| BOX |  |  | X |  | 
| PATH |  |  | X |  | 
| POLYGON | X |  |  | PostGIS 空間データ型 | 
| CIRCLE |  |  | X |  | 
| JSON |  | X |  |  | 
| 配列 | X |  |  | プライマリ キーが必要です | 
| COMPOSITE |  |  | X |  | 
| RANGE |  |  | X |  | 
| LINESTRING | X |  |  | PostGIS 空間データ型 | 
| MULTIPOINT | X |  |  | PostGIS 空間データ型 | 
| MULTILINESTRING | X |  |  | PostGIS 空間データ型 | 
| MULTIPOLYGON | X |  |  | PostGIS 空間データ型 | 
| GEOMETRYCOLLECTION | X |  |  | PostGIS 空間データ型 | 

### PostGIS 空間データ型の移行
<a name="CHAP_Source.PostgreSQL.DataTypes.Spatial"></a>

*空間データ*は、空間内のオブジェクトまたは位置のジオメトリ情報を識別します。PostgreSQL オブジェクトリレーショナルデータベースは、PostGIS 空間データ型をサポートしています。

PostgreSQL 空間データオブジェクトを移行する前に、PostGIS プラグインがグローバルレベルで有効になっていることを確認してください。これにより、 は PostgreSQL ターゲット DB インスタンスの正確なソース空間データ列 AWS DMS を作成します。

PostgreSQL から PostgreSQL への同種移行の場合、 は PostGIS の幾何学的および地理的 (地理的座標) データオブジェクトタイプとサブタイプの移行 AWS DMS をサポートします。
+  POINT 
+  LINESTRING 
+  POLYGON 
+  MULTIPOINT 
+  MULTILINESTRING 
+  MULTIPOLYGON 
+  GEOMETRYCOLLECTION 

## を使用した Babelfish for Amazon Aurora PostgreSQL からの移行 AWS DMS
<a name="CHAP_Source.PostgreSQL.Babelfish"></a>

を使用して、Babelfish for Aurora PostgreSQL ソーステーブルをサポートされている任意のターゲットエンドポイントに移行できます AWS DMS。

DMS コンソール、API、または CLI コマンドを使用して AWS DMS ソースエンドポイントを作成する場合、ソースを **Amazon Aurora PostgreSQL** に設定し、データベース名を に設定します**babelfish\$1db**。**エンドポイント設定**セクションで、**DatabaseMode** が **Babelfish** に設定され、**BabelfishDatabaseName** がソースの Babelfish T-SQL データベースの名前に設定されていることを確認してください。Babelfish TCP ポート **1433** を使用する代わりに、Aurora PostgreSQL TCP ポート **5432** を使用します。

DMS で適切なデータ型とテーブルメタデータを使用するには、データを移行する前にテーブルを作成する必要があります。移行を実行する前にターゲットにテーブルを作成しないと、DMS は誤ったデータ型とアクセス権限を使用してテーブルを作成する可能性があります。

### 移行タスクへの変換ルールの追加
<a name="CHAP_Source.PostgreSQL.Babelfish.Transform"></a>

Babelfish のソースの移行タスクを作成する場合、DMS が事前に作成されたターゲットテーブルを使用するようにする変換ルールを含める必要があります。

Babelfish for PostgreSQL クラスターを定義する際にマルチデータベース移行モードを設定した場合は、スキーマ名を T-SQL スキーマに変更する変換ルールを追加します。例えば、T-SQL のスキーマ名が `dbo` で、Babelfish for PostgreSQL スキーマ名が `mydb_dbo` の場合、変換ルールを使用してスキーマ名を `dbo` に変更します。PostgreSQL スキーマ名を見つけるには、「*Amazon Aurora ユーザーガイド*」の「[Babelfish のアーキテクチャ](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-architecture.html)」を参照してください。

単一のデータベースモードを使用する場合、データベーススキーマの名前を変更するための変換ルールを使用する必要はありません。PostgreSQL スキーマ名は、T-SQL データベース内のスキーマ名に 1 対 1 でマッピングされています。

次の変換ルールの例は、スキーマ名を `mydb_dbo` から `dbo` に戻す方法を示しています。

```
{
    "rules": [
        {
            "rule-type": "transformation",
            "rule-id": "566251737",
            "rule-name": "566251737",
            "rule-target": "schema",
            "object-locator": {
                "schema-name": "mydb_dbo"
            },
            "rule-action": "rename",
            "value": "dbo",
            "old-value": null
        },
        {
            "rule-type": "selection",
            "rule-id": "566111704",
            "rule-name": "566111704",
            "object-locator": {
                "schema-name": "mydb_dbo",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

### Babelfish テーブルで PostgreSQL のソースエンドポイントを使用する場合の制限
<a name="CHAP_Source.PostgreSQL.Babelfish.Limitations"></a>

Babelfish テーブルで PostgreSQL のソースエンドポイントを使用する場合、次の制限が適用されます。
+ DMS は、Babelfish バージョン 16.2/15.6 以降、および DMS バージョン 3.5.3 以降の移行のみをサポートします。
+ DMS は、Babelfish テーブル定義の変更をターゲットエンドポイントにレプリケートしません。この制限を回避するには、まずターゲットにテーブル定義の変更を適用し、次に Babelfish ソースでテーブル定義を変更することです。
+ BYTEA データ型を使用して Babelfish テーブルを作成する場合、DMS は SQL Server をターゲットとして移行するときに、`varbinary(max)` データ型に変換します。
+ DMS は、バイナリデータ型の完全 LOB モードをサポートしていません。代わりにバイナリデータ型には制限付き LOB モードを使用します。
+ DMS は、Babelfish のデータ検証をソースとしてサポートしていません。
+ **[ターゲットテーブル作成モード]** タスク設定では、**[何もしない]** モードまたは **[切り捨て]** モードのみを使用します。**[ターゲット上のテーブルを削除]** モードは使用しないでください。**[ターゲット上のテーブルを削除]** を使用する場合、DMS は誤ったデータ型でテーブルを作成することがあります。
+ 継続的なレプリケーション (CDC またはフルロードと CDC) を使用する場合、`PluginName` 追加の接続属性 (ECA) を `TEST_DECODING` に設定します。
+ DMS は、Babelfish のパーティション化されたテーブルのレプリケーション (CDC またはフルロードおよび CDC) をソースとしてはサポートしていません。

## PostgreSQL ソースデータベースからの AWS DMS アーティファクトの削除
<a name="CHAP_Source.PostgreSQL.CleanUp"></a>

DDL イベントをキャプチャするために、 は移行タスクの開始時に PostgreSQL データベースにさまざまなアーティファクト AWS DMS を作成します。タスクが完了したら、これらのアーティファクトを削除できます。

アーティファクトを削除するには、以下のステートメントを発行します (示されている順序で)。ここに、`{AmazonRDSMigration}` は、アーティファクトが作成されたスキーマです。スキーマを削除する場合でも、細心の注意を払ってください。運用中のスキーマ (特に公開スキーマ) は絶対に削除しないでください。

```
drop event trigger awsdms_intercept_ddl;
```

イベントトリガーは特定のスキーマに属していません。

```
drop function {AmazonRDSMigration}.awsdms_intercept_ddl()
drop table {AmazonRDSMigration}.awsdms_ddl_audit
drop schema {AmazonRDSMigration}
```

## DMS ソースとして PostgreSQL データベースを使用する場合の追加設定
<a name="CHAP_Source.PostgreSQL.Advanced"></a>

PostgreSQL データベースからデータを移行するときは、2 つの方法で詳細設定を追加できます。
+ 追加接続属性に値を追加して、DDL イベントをキャプチャし、運用中の DDL データベースアーティファクトが作成されたスキーマを指定します。詳細については、「[DMS ソースとして PostgreSQL を使用する場合のエンドポイント設定と追加の接続属性 (ECA)](#CHAP_Source.PostgreSQL.ConnectionAttrib)」を参照してください。
+ 接続文字列パラメータを上書きできます。これを行うには、次のいずれかのオプションを選択します：
  + 内部 AWS DMS パラメータを指定します。このようなパラメータが必要になることはめったにないため、ユーザー インターフェイスには表示されません。
  + 特定のデータベースクライアントのパススルー (パススルー) 値を指定します。 は、データベースクライアントに渡される接続スティングにパススルーパラメータ AWS DMS を含めます。
+ PostgreSQL バージョン 9.4 以降でテーブルレベルのパラメータ `REPLICA IDENTITY` を使用すると、ログ先行書き込み (WAL) に書き込まれる情報を制御できる。特に、更新または削除される行を識別する WAL に対してそうします。`REPLICA IDENTITY FULL` は行のすべての列の古い値を記録します。不必要に余分な量の WAL が `FULL` により生成されるため、`REPLICA IDENTITY FULL` はテーブルごとに慎重に使用してください。詳細については、「[ALTER TABLE-REPLICA IDENTITY](https://www.postgresql.org/docs/devel/sql-altertable.html)」を参照。

## PostgreSQL のソースとしてのリードレプリカ
<a name="CHAP_Source.PostgreSQL.ReadReplica"></a>

PostgreSQL リードレプリカを の CDC ソースとして使用 AWS DMS して、プライマリデータベースの負荷を軽減します。この機能は PostgreSQL 16.x から使用でき、 AWS DMS バージョン 3.6.1 以降が必要です。CDC 処理にリードレプリカを使用すると、プライマリデータベースに対する運用上の影響が軽減されます。

**注記**  
Amazon RDS PostgreSQL バージョン 16.x では、3-AZ (TAZ) 設定でのリードレプリカの論理レプリケーションに制限があります。TAZ デプロイで完全リードレプリカの論理レプリケーションをサポートするには、PostgreSQL バージョン 17.x 以降を使用する必要があります。

### 前提条件
<a name="CHAP_Source.PostgreSQL.ReadReplica.prereq"></a>

の CDC ソースとしてリードレプリカを使用する前に AWS DMS、プライマリデータベースインスタンスとそのリードレプリカの両方で論理レプリケーションを有効にして、リードレプリカに論理デコードを作成する必要があります。次のアクションを実行します。
+ プライマリデータベースインスタンスとそのリードレプリカの両方で論理レプリケーションを有効化します (その他必要なデータベースパラメータを含む)。詳細については、[AWS「マネージド PostgreSQL データベースを DMS ソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.RDSPostgreSQL)」を参照してください。
+ CDC 専用タスクの場合は、プライマリ (ライター) インスタンスにレプリケーションスロットを作成します。詳細については、「[ネイティブ CDC スタートポイントを使用して PostgreSQL ソース エンドポイントの CDC ロードを設定するには](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10)」を参照してください。リードレプリカがレプリケーションスロットの作成をサポートしていないため、このアクションが必要になります。
+ PostgreSQL バージョン 16 の場合、スロットはリードレプリカで手動で作成する必要があります。
+ PostgreSQL バージョン 17 以降では、レプリケーションスロットをプライマリに作成する必要があります。これはリードレプリカと自動的に同期されます。
+ Full Load \$1 CDC または CDC のみのタスクを使用する場合、 AWS DMS はプライマリインスタンスで論理レプリケーションスロットを自動的に管理できますが、リードレプリカでは管理できません。PostgreSQL バージョン 16 リードレプリカの場合、タスクを再起動 (再開ではない) する前に、レプリケーションスロットを手動で削除して再作成する必要があります。この手順を行わない場合、タスクが失敗する、CDC の開始位置が不正になるなどの可能性があります。PostgreSQL バージョン 17 以降では、プライマリインスタンスからの論理スロット同期によってこのプロセスは自動化されます。

前提条件を完了したら、 AWS DMS エンドポイント設定でリードレプリカソース`SlotName`のレプリケーションを使用してソースエンドポイントを設定し、ネイティブ CDC 開始ポイントを使用して AWS DMS タスクを設定できます。詳細については、「[PostgreSQL を DMS エンドポイントとして使用する場合のエンドポイント設定および追加の接続属性 (ECA)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib)」および「[ネイティブ CDC 開始点を使用して PostgreSQL ソースの CDC ロードを設定する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10)」を参照してください。

## `MapBooleanAsBoolean` PostgreSQL エンドポイント設定の使用
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting"></a>

PostgreSQL エンドポイント設定を使用して、ブール値を PostgreSQL ソースから Amazon Redshift ターゲットにブール値としてマッピングできます。ブール型はデフォルトで varchar (5) として移行されます。次の例のとおり、`MapBooleanAsBoolean` を指定すると、PostgreSQL がブール型をブール型として移行できるようになります。

```
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
```

この設定を有効にするには、ソースエンドポイントとターゲットエンドポイントの両方でこの設定を設定する必要があることに注意します。

MySQL には BOOLEAN 型がないため、BOOLEAN データを MySQL に移行する場合は、この設定ではなく変換ルールを使用します。

## DMS ソースとして PostgreSQL を使用する場合のエンドポイント設定と追加の接続属性 (ECA)
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib"></a>

エンドポイント設定と追加の接続属性 (ECA) を使用して、ソースの PostgreSQL データベースを設定することができます。エンドポイント設定は、 AWS DMS コンソールを使用するか、`--postgre-sql-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに指定します。

次の表は、PostgreSQL をソースとして使用できるエンドポイント設定と ECA を説明しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.PostgreSQL.html)

## DMS のソースとして PostgreSQL データベースを使用する場合の制限
<a name="CHAP_Source.PostgreSQL.Limitations"></a>

PostgreSQL を AWS DMSのソースとして使用する場合は、以下の制限が適用されます。
+ AWS DMS は、Amazon RDS for PostgreSQL 10.4 または Amazon Aurora PostgreSQL 10.4 をソースまたはターゲットとして使用することはできません。
+ キャプチャされたテーブルにはプライマリキーが必要です。テーブルにプライマリキーがない場合、 はそのテーブルの DELETE および UPDATE レコードオペレーション AWS DMS を無視します。回避策については、「[Enabling change data capture (CDC) using logical replication](#CHAP_Source.PostgreSQL.Security)」を参照してください。

  **注:** プライマリキーまたは一意のインデックスなしでの移行はお勧めしません。この場合、「いいえ」Batch 適用機能、フル LOB 機能、データ検証、Redshift ターゲットへの効率的なレプリケートができないなどの追加の制限が適用されます。
+ AWS DMS は、プライマリキーセグメントを更新しようとする試みを無視します。この場合、ターゲットは、その更新によってどの行も更新されないと識別します。ただし、PostgreSQL でのプライマリキーの更新結果は予測できないため、どのレコードも例外テーブルには書き込まれません。
+ AWS DMS は、**タイムスタンプからプロセスの変更を開始する**実行オプションをサポートしていません。
+ AWS DMS は、パーティションまたはサブパーティションオペレーション (`ADD`、`DROP`、または ) に起因する変更をレプリケートしません`TRUNCATE`。
+ 大文字と小文字の組み合わせが異なる同じ名前 (table1、TABLE1、Table1) を持つ複数のテーブルをレプリケートすると、予測できない動作が生じることがあります。この問題のため、 AWS DMS はこのタイプのレプリケーションをサポートしていません。
+ ほとんどの場合、 は tables の CREATE、ALTER、DROP DDL ステートメントの変更処理 AWS DMS をサポートします。 は、テーブルが内部関数またはプロシージャ本文ブロックまたは他のネストされたコンストラクトに保持されている場合、この変更処理をサポート AWS DMS しません。

  たとえば、以下の変更はキャプチャされません。

  ```
  CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void
  LANGUAGE plpgsql
  AS $$
  BEGIN
  create table attu.distributors1(did serial PRIMARY KEY,name
  varchar(40) NOT NULL);
  END;
  $$;
  ```
+ 現在のところ、PostgreSQL ソースの `boolean` データ型は、一貫性のない値を持つ `bit` データ型として SQLServer ターゲットに移行されます。回避策として、列`VARCHAR(1)`のデータ型を使用してテーブルを事前に作成します (または、 でテーブル AWS DMS を作成します）。次に、ダウンストリーム処理で「F」を False、「T」を True として扱います。
+ AWS DMS は、TRUNCATE オペレーションの変更処理をサポートしていません。
+ OID LOB データ型は、ターゲットに移行されません。
+ AWS DMS は、同種移行のみの PostGIS データ型をサポートしています。
+ 使用するソースがオンプレミスあるいは Amazon EC2 インスタンス上の PostgreSQL データベースの場合、test\$1decoding 出力プラグインがソースのエンドポイントにインストールされていることを確認してください。このプラグインは、PostgreSQL contrib パッケージで提供されています。test-decoding プラグインの詳細については、「[PostgreSQL のドキュメント](https://www.postgresql.org/docs/10/static/test-decoding.html)」をご参照ください。
+ AWS DMS では、列のデフォルト値を設定および設定解除する変更処理はサポートされていません (ALTER TABLE ステートメントの ALTER COLUMN SET DEFAULT 句を使用）。
+ AWS DMS は、列の nullability を設定する変更処理をサポートしていません (ALTER TABLE ステートメントで ALTER COLUMN [SET\$1DROP] NOT NULL 句を使用）。
+ 論理レプリケーションが有効な場合、トランザクションあたりのメモリに保持される変更の最大数は 4 MB です。その後、変更がディスクにこぼれます。その結果、`ReplicationSlotDiskUsage`が増加し、トランザクションが完了または停止し、ロールバックが完了するまで `restart_lsn` は進みません。長いトランザクションであるため、ロールバックに時間がかかることがあります。従って、論理レプリケーションが有効になっている場合は、トランザクションまたは多くのサブトランザクションの長期実行を避けてください。代わりに、トランザクションをいくつかの小さなトランザクションに分割します。

  Aurora PostgreSQL バージョン 13 以降では、`logical_decoding_work_mem` パラメータを調整して DMS がいつ変更データをディスクに書き出すかを制御することができます。詳細については、「[Aurora PostgreSQL のスピルファイル](CHAP_Troubleshooting_Latency_Source_PostgreSQL.md#CHAP_Troubleshooting_Latency_Source_PostgreSQL_Spill)」を参照してください。
+ ARRAY データ型を持つテーブルにはプライマリ キーが必要です。ARRAY データ型にプライマリ キーがないテーブルは、全ロード中に中断されます。
+ AWS DMS は、テーブルのパーティショニングまたはテーブル[の継承に関連するテーブル](https://www.postgresql.org/docs/15/ddl-inherit.html)メタデータの移行をサポートしていません。がパーティション分割されたテーブルまたは継承を使用するテーブル AWS DMS を検出すると、次の動作が観察されます。
  + AWS DMS は、ソースデータベースのパーティション化または継承に関連する親テーブルと子テーブルの両方を識別してレポートします。
  + **ターゲットでのテーブルの作成**: ターゲットデータベースで、 はテーブルを標準 (非パーティション化、非継承) テーブルとして AWS DMS 作成し、選択したテーブルの構造とプロパティは保持しますが、パーティション化または継承ロジックは保持しません。
  + **継承されたテーブルでのレコードの区別: **継承を使用するテーブルの場合、親テーブルの入力時に子テーブルに属するレコードを区別 AWS DMS しません。その結果、`SELECT * FROM ONLY parent_table_name` などの構文の SQL クエリは使用しません。
+ パーティション分割されたテーブルを PostgreSQL ソースから PostgreSQL ターゲットにレプリケーションする場合、まずターゲットで親テーブルと子テーブルを手動で作成する必要があります。次に、それらのテーブルにレプリケーションする別個のタスクを定義します。その場合、タスク設定を **[Truncate before loading]** (読み取り前切り捨て) に設定します。
+ PostgreSQL `NUMERIC` データ型はサイズが固定されていません。`NUMERIC` データ型ですが、精度とスケールがないデータを転送する場合、DMS はデフォルトで `NUMERIC(28,6)` (精度が 28、スケールが 6) を使用します。たとえば、ソースからの値 0.611111104488373 は、PostgreSQL ターゲットの 0.611111 に変換されます。
+ AWS DMS は、全ロードタスクのソースとしてのみ Aurora PostgreSQL Serverless V1 をサポートします。 は、全ロード、全ロードおよび CDC、CDC のみのタスクのソースとして Aurora PostgreSQL Serverless V2 AWS DMS をサポートします。
+ AWS DMS は、coalesce 関数で作成された一意のインデックスを持つテーブルのレプリケーションをサポートしていません。
+ ソースとターゲットのプライマリキー定義が一致しない場合、レプリケーションの結果は予測できない可能性があります。
+ 並列ロード機能を使用する場合、パーティションまたはサブパーティションに基づくテーブルのセグメント化はサポートされません。並列ロードの詳細については、「[選択したテーブルおよびビューさらにコレクションで並列ロードを使用する](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.ParallelLoad)」を参照してください。
+ AWS DMS は遅延制約をサポートしていません。
+ AWS DMS バージョン 3.4.7 では、PostgreSQL 14.x をソースとしてサポートしていますが、以下の制限があります。
  + AWS DMS は、2 つのフェーズコミットの変更処理をサポートしていません。
  + AWS DMS は、進行中の長いトランザクションをストリーミングするための論理レプリケーションをサポートしていません。
+ AWS DMS は、ソースとして Amazon RDS Proxy for PostgreSQL の CDC をサポートしていません。
+ プライマリキー列を含まない [ソースフィルター](CHAP_Tasks.CustomizingTasks.Filters.md) を使用する場合、`DELETE` 操作はキャプチャされません。
+ ソースデータベースが別のサードパーティーのレプリケーションシステムのターゲットでもある場合、CDC 中に DDL の変更が移行されない可能性があります。これは、このような状況では `awsdms_intercept_ddl` イベントトリガーが起動しなくなる可能性があるためです。この状況を回避するには、ソースデータベースでこのトリガーを次のとおり変更します。

  ```
  alter event trigger awsdms_intercept_ddl enable always;
  ```
+ AWS DMS は、ソースデータベースのプライマリキー定義に加えられた変更のレプリケーションをサポートしていません。アクティブなレプリケーションタスク中にプライマリキー構造が変更された場合、影響を受けるテーブルに対するその後の変更はターゲットにレプリケートされません。
+ スクリプトの一部としての DDL レプリケーションでは、スクリプトあたりの DDL コマンドの最大合計数は 8192 で、スクリプトあたりの行の最大合計数は 8192 行です。
+ AWS DMS はマテリアライズドビューをサポートしていません。
+ ソースとしてリードレプリカを使用する全ロードおよび CDC タスクの場合、リードレプリカにレプリケーションスロットを作成 AWS DMS することはできません。

## PostgreSQL のソースデータ型
<a name="CHAP_Source-PostgreSQL-DataTypes"></a>

次の表は、 の使用時にサポートされる PostgreSQL ソースデータ型 AWS DMS と、 AWS DMS データ型へのデフォルトのマッピングを示しています。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  PostgreSQL のデータ型  |  DMS データ型  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  NUMERIC (p,s)  |  精度が 0 ～ 38 の場合、NUMERIC を使用します。 精度が 39 以上の場合、STRING を使用します。  | 
|  DECIMAL(P,S)  |  精度が 0 ～ 38 の場合、NUMERIC を使用します。 精度が 39 以上の場合、STRING を使用します。  | 
|  REAL  |  REAL4  | 
|  DOUBLE  |  REAL8  | 
|  SMALLSERIAL  |  INT2  | 
|  SERIAL  |  INT4  | 
|  BIGSERIAL  |  INT8  | 
|  MONEY  |  NUMERIC(38,4) MONEY データ型は、SQL Server の FLOAT にマッピングされます。  | 
|  CHAR  |  WSTRING (1)  | 
|  CHAR(N)  |  WSTRING (n)  | 
|  VARCHAR(N)  |  WSTRING (n)  | 
|  TEXT  |  NCLOB  | 
|  CITEXT  |  NCLOB  | 
|  BYTEA  |  BLOB  | 
|  TIMESTAMP  |  DATETIME  | 
|  タイムスタンプ時間帯あり  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIME WITH TIME ZONE  |  TIME  | 
|  INTERVAL  |  STRING (128)—1 YEAR、2 MONTHS、3 DAYS、4 HOURS、5 MINUTES、6 SECONDS  | 
|  BOOLEAN  |  CHAR (5) false または true  | 
|  ENUM  |  STRING (64)  | 
|  CIDR  |  STRING (50)  | 
|  INET  |  STRING (50)  | 
|  MACADDR  |  STRING (18)  | 
|  BIT (n)  |  STRING (n)  | 
|  BIT VARYING (n)  |  STRING (n)  | 
|  UUID  |  STRING  | 
|  TSVECTOR  |  CLOB  | 
|  TSQUERY  |  CLOB  | 
|  XML  |  CLOB  | 
|  POINT  |  STRING (255) "(x,y)"  | 
|  LINE  |  STRING (255) "(x,y,z)"  | 
|  LSEG  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  BOX  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  PATH  |  CLOB "((x1,y1),(xn,yn))"  | 
|  POLYGON  |  CLOB "((x1,y1),(xn,yn))"  | 
|  CIRCLE  |  STRING (255) "(x,y),r"  | 
|  JSON  |  NCLOB  | 
|  JSONB  |  NCLOB  | 
|  配列  |  NCLOB  | 
|  COMPOSITE  |  NCLOB  | 
|  HSTORE  |  NCLOB  | 
|  INT4RANGE  |  STRING (255)  | 
|  INT8RANGE  |  STRING (255)  | 
|  NUMRANGE  |  STRING (255)  | 
|  STRRANGE  |  STRING (255)  | 

### PostgreSQL 用の LOB ソースデータ型での作業
<a name="CHAP_Source-PostgreSQL-DataTypes-LOBs"></a>

PostgreSQL の列サイズは、PostgreSQL LOB データ型の AWS DMS データ型への変換に影響します。これを使用するには、次の AWS DMS データ型で以下の手順を実行します。
+ BLOB - タスク作成で **[Limit LOB size to]** (LOB サイズ制限) 値を **[Maximum LOB Size (KB)]** (最大 LOB サイズ (KB)) に設定します。
+ CLOB - レプリケーションは各文字を UTF8 文字として処理します。次に、列で最長の文字テキストの長さ (ここでは、`max_num_chars_text`) を見つけます。この長さを使用して、**[Limit LOB size to]** (LOB サイズを以下に制限する) の値を指定します。データに 4 バイト文字が含まれている場合には、2 倍にして [**Limit LOB size to (LOB サイズ制限)**] 値をバイト単位で指定します。この場合、**[Limit LOB size to]** (LOB サイズ制限) は `max_num_chars_text` の 2 乗と等しくなります。
+ NCLOB - レプリケーションは各文字を 2 バイト文字として処理します。次に、列で最長の文字テキストの長さ (`max_num_chars_text`) を見つけ、2 倍します。これは、**[Limit LOB size to]** (LOB サイズを以下に制限する) の値の値を指定するために行います。この場合、**[Limit LOB size to]** (LOB サイズ制限) は `max_num_chars_text` の 2 乗と等しくなります。データに 4 バイト文字が含まれている場合は、再度 2 倍にします。この場合、[**Limit LOB size to (LOB サイズ制限)**] は `max_num_chars_text` の 4 乗と等しくなります。

# のソースとしての MySQL 互換データベースの使用 AWS DMS
<a name="CHAP_Source.MySQL"></a>

 AWS Database Migration Service を使用して、MySQL 互換データベース (MySQL、MariaDB、または Amazon Aurora MySQL) からデータを移行できます。

がソースとして AWS DMS サポートする MySQL のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

SSL を使用して、MySQL 互換のエンドポイントとレプリケーションインスタンスとの接続を暗号化できます。MySQL 互換のエンドポイントで SSL を使用する方法の詳細については、「[での SSL の使用 AWS Database Migration Service](CHAP_Security.SSL.md)」をご参照ください。

以下のセクションでは、「セルフ管理」という用語は、オンプレミスまたは Amazon EC2 にインストールされているデータベースが対象です。「AWSが管理する」という用語は、Amazon RDS、Amazon Aurora、Amazon S3 のデータベースが対象です。

MySQL 互換データベースと の操作の詳細については AWS DMS、以下のセクションを参照してください。

**Topics**
+ [を使用した MySQL から MySQL への移行 AWS DMS](#CHAP_Source.MySQL.Homogeneous)
+ [のソースとしての MySQL 互換データベースの使用 AWS DMS](#CHAP_Source.MySQL.Prerequisites)
+ [のソースとしてのセルフマネージド MySQL 互換データベースの使用 AWS DMS](#CHAP_Source.MySQL.CustomerManaged)
+ [のソースとしての AWSマネージド MySQL 互換データベースの使用 AWS DMS](#CHAP_Source.MySQL.AmazonManaged)
+ [MySQL データベースを のソースとして使用する場合の制限 AWS DMS](#CHAP_Source.MySQL.Limitations)
+ [XA トランザクションのサポート](#CHAP_Source.MySQL.XA)
+ [のソースとして MySQL を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.MySQL.ConnectionAttrib)
+ [MySQL のソースデータ型](#CHAP_Source.MySQL.DataTypes)

**注記**  
 AWS Database Migration Service (AWS DMS) マッピングルールを設定するときは、データベース名またはスキーマ名にワイルドカード (%) を使用しないことが重要です。その代わりに、移行する必要があるユーザー作成のデータベースのみを明示的に指定する必要があります。ワイルドカード文字の使用には、ターゲットインスタンスで必要ではないシステムデータベース、および移行プロセス内のすべてのデータベースが含まれます。MySQL Amazon RDS マスターユーザーには、ターゲットシステムデータベースにデータをインポートするために必要なアクセス許可がないため、これらのシステムデータベースの移行は失敗します。

## を使用した MySQL から MySQL への移行 AWS DMS
<a name="CHAP_Source.MySQL.Homogeneous"></a>

MySQL 以外のデータベースエンジンから MySQL データベースに移行する異種移行の場合、 AWS DMS はほとんどの場合、最適な移行ツールです。ただし、MySQL データベースから MySQL データベースに移行する同種移行の場合は、同種データ移行プロジェクトを使用することをお勧めします。同種データ移行では、ネイティブのデータベースツールを使用して、 AWS DMSと比較してデータ移行のパフォーマンスと精度が向上します。

## のソースとしての MySQL 互換データベースの使用 AWS DMS
<a name="CHAP_Source.MySQL.Prerequisites"></a>

のソースとして MySQL データベースの使用を開始する前に AWS DMS、次の前提条件を満たしていることを確認してください。これらの前提条件は、セルフマネージドソースまたは AWSマネージドソースに適用されます。

レプリケーション管理者ロール AWS DMS を持つ のアカウントが必要です。ロールには、次の権限が必要です。
+ **[REPLICATION CLIENT]** (レプリケーション クライアント) – この権限は、CDC タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。
**注記**  
MariaDB バージョン 10.5.2 以降では、BINLOG MONITOR を使用できます。これは REPLICATION CLIENT に代わるものです。
+ **[REPLICATION SLAVE]** (レプリケーション スレーブ) – この権限は、CDC タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。
+ **SUPER** – この権限は、バージョン 5.6.6 より前の MySQL でのみ必要です。

 AWS DMS ユーザーには、レプリケーション用に指定されたソーステーブルに対する SELECT 権限も必要です。

MySQL 固有の移行前評価を使用する場合は、次の権限を付与します。

```
grant select on mysql.user to <dms_user>;
grant select on mysql.db to <dms_user>;
grant select on mysql.tables_priv to <dms_user>;
grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
grant select on performance_schema.replication_connection_status to <dms_user>;  #Required for primary instance validation - MySQL version 5.7 and higher only
```

RDS ソースを使用していて、MySQL 固有の移行前評価を実行する予定がある場合は、次のアクセス許可を追加します。

```
grant select on mysql.rds_configuration to <dms_user>;  #Required for binary log retention check
```

パラメータ `BatchEnable` が `true` の場合、以下を付与する必要があります。

```
grant create temporary tables on `<schema>`.* to <dms_user>;
```

## のソースとしてのセルフマネージド MySQL 互換データベースの使用 AWS DMS
<a name="CHAP_Source.MySQL.CustomerManaged"></a>

次のセルフマネージド型 MySQL 互換データベースを AWS DMSのソースとして使用できます。
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ MariaDB Column Store

CDC を使用するには、バイナリログを有効にしてください。バイナリロギングを有効にするには、MySQL の `my.ini` (Windows) または `my.cnf` (UNIX) ファイルで以下のパラメータを設定する必要があります。


| パラメータ | 値 | 
| --- | --- | 
| `server_id` | このパラメータは、1 以上の値に設定します。 | 
| `log-bin` | パスをバイナリログファイル (`log-bin=E:\MySql_Logs\BinLog`) に設定します。ファイル拡張子を含めないでください。 | 
| `binlog_format` | このパラメータは `ROW` に設定します。`binlog_format` が `STATEMENT` に設定されているときは場合によっては、ターゲットにデータレプリケーション時に矛盾が生じる可能性があるため、レプリケーション中にこの設定をお勧めします。データベースエンジンは、`binlog_format` が `MIXED` に設定されているとき、類似の矛盾したデータもターゲットに書き込みます。これはデータベースエンジンが自動的に`STATEMENT`ベースのログに切り替わり、ターゲットデータベースに一貫性のないデータが書き込まれることがあるためです。 | 
| `expire_logs_days` | このパラメータは、1 以上の値に設定します。ディスク容量の使いすぎを防ぐため、デフォルト値の 0 は使用しないことをお勧めします。 | 
| `binlog_checksum` | DMS バージョン 3.4.7 以前の場合、このパラメータを `NONE` に設定します。 | 
| `binlog_row_image` | このパラメータは `FULL` に設定します。 | 
| `log_slave_updates` | MySQL または MariaDB リードレプリカをソースとして使用している場合は、このパラメータを `TRUE` に設定します。 | 

**既存のデータを移行して継続的な変更をレプリケートする**を使用して MySQL または MariaDB リードレプリカを DMS 移行タスクのソースとして使用している場合、データ損失が生じる可能性があります。DMS は、以下の条件で、フルロードまたは CDC のいずれかの際中にはトランザクションを書き込みません。
+ DMS タスクが開始する前に、トランザクションがプライマリインスタンスにコミットされた。
+ プライマリインスタンスとレプリカ間の遅延により、トランザクションが DMS タスクが開始するまでレプリカにコミットされなかった。

プライマリインスタンスとレプリカ間の遅延が長いほど、データ損失の可能性が大きくなります。

ソースで NDB (クラスター化) データベースエンジンを使用している場合、そのストレージエンジンを使用するテーブルで CDC を有効にするには以下のパラメータを設定する必要があります。これらの変更を MySQL の `my.ini` (Windows) または `my.cnf` (UNIX) ファイルに追加します。


| パラメータ | 値 | 
| --- | --- | 
| `ndb_log_bin` | このパラメータは `ON` に設定します。この値により、クラスター化されたテーブルでの変更が確実にバイナリログに記録されます。 | 
| `ndb_log_update_as_write` | このパラメータは `OFF` に設定します。この値に設定すると、UPDATE ステートメントが INSERT ステートメントとしてバイナリログに書き込まれなくなります。 | 
| `ndb_log_updated_only` | このパラメータは `OFF` に設定します。この値に設定すると、バイナリログに変更された列だけでなく行全体が含められます。 | 

## のソースとしての AWSマネージド MySQL 互換データベースの使用 AWS DMS
<a name="CHAP_Source.MySQL.AmazonManaged"></a>

のソースとして、以下の AWSマネージド MySQL 互換データベースを使用できます AWS DMS。
+ MySQL Community Edition
+ MariaDB Community Edition
+ Amazon Aurora MySQL 互換エディション

 AWSマネージド MySQL 互換データベースを のソースとして使用する場合は AWS DMS、CDC に次の前提条件があることを確認してください。
+ RDS for MySQL と RDS for MariaDB のバイナリログを有効にするには、インスタンスレベルで自動バックアップを有効にします。Aurora MySQL クラスターのバイナリログを有効にするには、パラメータグループで変数 `binlog_format` を変更します。

  自動バックアップの設定の詳細については、*Amazon RDS ユーザーガイド*の「[自動バックアップの使用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html)」をご参照ください。

  Amazon RDS for MySQL データベースのバイナリログ設定の詳細については、*Amazon RDS ユーザーガイド*の「[バイナリログ形式の設定](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html)」をご参照ください。

  Aurora MySQL クラスターのバイナリログ設定の詳細については、「[Amazon Aurora MySQL クラスターのバイナリログを有効にする方法](https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/)」をご参照ください。
+ CDC を使用する予定の場合は、バイナリログを有効にします。Amazon RDS for MySQL データベースのバイナリログの設定の詳細については、*Amazon RDS ユーザーガイド*の「[バイナリログ形式の設定](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html)」をご参照ください。
+ バイナリログが使用可能であることを確認します AWS DMS。 AWSマネージド MySQL 互換データベースはバイナリログをできるだけ早く消去するため、ログが利用可能なままになる時間を増やす必要があります。たとえば、ログ保持を 24 時間に伸ばすには、次のコマンドを実行します。

  ```
   call mysql.rds_set_configuration('binlog retention hours', 24);
  ```
+ `binlog_format` パラメータを `"ROW"` に設定します。
**注記**  
MySQL または MariaDB では、`binlog_format` は動的パラメータであるため、新しい値を有効にするために再起動する必要はありません。ただし、新しい値は新しいセッションにのみ適用されます。レプリケーションの目的で `binlog_format` を `ROW` に切り替えても、値を変更する前にセッションが開始されていれば、データベースは引き続き `MIXED` 形式を使用して続くバイナリログを作成できます。これにより、 AWS DMS がソースデータベースのすべての変更を適切にキャプチャできなくなる可能性があります。MariaDB または MySQL データベースの `binlog_format` 設定を変更する場合は、必ずデータベースを再起動して既存のすべてのセッションを閉じるか、DML (データ操作言語) 操作を実行するアプリケーションを再起動します。`binlog_format` パラメータを に変更した後、データベースにすべてのセッションの再起動を強制`ROW`すると、データベースが後続のすべてのソースデータベースの変更を正しい形式で書き込み、 がそれらの変更を適切にキャプチャ AWS DMS できるようになります。
+ `binlog_row_image` パラメータを `"Full"` に設定します。
+ DMS バージョン 3.4.7 以前の場合、`binlog_checksum` パラメータを `"NONE"` に設定します。Amazon RDS MySQL でのパラメータの設定の詳細については、*Amazon RDS ユーザーガイド*の「[自動バックアップの使用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html)」をご参照ください。
+ Amazon RDS MySQL または Amazon RDS MariaDB リードレプリカをソースとして使用する場合は、リードレプリカでバックアップを有効にして、`log_slave_updates` パラメータが `TRUE` と設定されていることを確認します。

## MySQL データベースを のソースとして使用する場合の制限 AWS DMS
<a name="CHAP_Source.MySQL.Limitations"></a>

MySQL データベースをソースとして使用する場合は、次の点を考慮してください。
+  変更データキャプチャ (CDC) は、Amazon RDS MySQL 5.5 以下ではサポートされていません。Amazon RDS for MySQL の場合、CDC を有効にするには、バージョン 5.6、5.7、または 8.0 を使用する必要があります。CDC は、セルフ管理 MySQL 5.5 ソースでサポートされています。
+ CDC の場合、列データ型を変更する `CREATE TABLE`、`ADD COLUMN`、`DROP COLUMN`、`renaming a column` がサポートされています。ただし、`DROP TABLE`、`RENAME TABLE`、およびカラムのデフォルト値、カラムのNULL可能性、文字セットなどの他の属性に対する更新はサポートされていません。
+  ソースのパーティションテーブルの場合、**ターゲットテーブル準備モード**を**ターゲットのテーブルの削除**に設定すると、 は MySQL ターゲットにパーティションなしでシンプルなテーブル AWS DMS を作成します。パーティション分割されたテーブルをターゲットのパーティション分割されたテーブルに移行するには、ターゲット MySQL データベースにパーティション分割されたテーブルを事前に作成します。
+  `ALTER TABLE table_name ADD COLUMN column_name` ステートメントを使用してテーブルの先頭 (FIRST) または中間 (AFTER) に列を追加することは、リレーショナルターゲットではサポートされていません。列は常にテーブルの末尾に追加されます。ターゲットが Amazon S3 または Amazon Kinesis Data Streams の場合、FIRST または AFTER を使用した列の追加がサポートされます。
+ テーブル名に大文字と小文字が含まれていて、大文字と小文字が区別されるオペレーティングシステムにソースエンジンがホストされている場合、CDC はサポートされません。たとえば、Microsoft Windows や HFS\$1 を使用する OS X などです。
+ Aurora MySQL 互換エディションサーバーレス v1 はフルロードで使えますが、CDC には使えません。これは MySQL の前提条件を有効にできないためです。詳細については、「[パラメータグループと Aurora サーバーレス v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.parameter-groups)」をご参照ください。

  Aurora MySQL 互換エディションのサーバーレス v2 は CDC をサポートしています。
+  列の AUTO\$1INCREMENT 属性は、ターゲットデータベース列に移行されません。
+  バイナリログが標準のブロックストレージに保存されている場合の変更のキャプチャはサポートされていません。たとえば、バイナリログが Amazon S3 に保存されていると、CDC は機能しません。
+  AWS DMS は、デフォルトで InnoDB ストレージエンジンを使用してターゲットテーブルを作成します。InnoDB 以外のストレージエンジンを使用する必要がある場合、テーブルを手動で作成し、[何もしない](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)モードを使用してそのテーブルに移行する必要があります。
+ DMS 移行タスクモードが**既存のデータの移行** - フルロードのみである AWS DMS 場合を除き、Aurora MySQL レプリカを のソースとして使用することはできません。
+  全ロード時に MySQL 互換ソースが停止している場合、 AWS DMS タスクはエラーで停止しません。タスクは正常に終了しますが、ターゲットとソースが同期しない可能性があります。この場合、タスクを再開するか、影響を受けたテーブルを再ロードしてください。
+  列の値の一部で作成されたインデックスは移行されません。たとえば、インデックス CREATE INDEX first\$1ten\$1chars ON customer (name(10)) はターゲットに作成されません。
+ 場合によっては、タスクが LOB をレプリケートしないように設定されています (「SupportLobs」がタスク設定で false になっているか、タスクコンソールで**LOB 列を含めない**がオンになっている)。このような場合、 AWS DMS は MEDIUMBLOB、LONGBLOB、MEDIUMTEXT、および LONGTEXT の各列をターゲットに移行しません。

  BLOB、TINYBLOB、TEXT、および TINYTEXT 列は影響を受けず、ターゲットに移行されます。
+ 一時データテーブルまたはシステムでバージョン管理されたテーブルは、MariaDB ソースおよびターゲットデータベースではサポートされていません。
+ 2 つの Amazon RDS Aurora MySQL クラスター間で移行する場合、RDS Aurora MySQL ソース エンドポイントは、レプリカ インスタンスではなく読み取り/書き込みインスタンスである必要があります。
+ AWS DMS 現在、 は MariaDB のビュー移行をサポートしていません。
+ AWS DMS は、MySQL のパーティションテーブルの DDL 変更をサポートしていません。CDC 中にパーティション DDL が変更されてもテーブルが中断されないようにするには、`skipTableSuspensionForPartitionDdl` を `true` に設定します。
+ AWS DMS は、バージョン 3.5.0 以降の XA トランザクションのみをサポートします。以前のバージョンでは XA トランザクションはサポートされていません。MariaDB バージョン 10.6 以降の XA トランザクション AWS DMS はサポートされていません。詳細については、[XA トランザクションのサポート](#CHAP_Source.MySQL.XA)以下を参照してください。
+ AWS DMS は、ソースデータに GTIDs を使用しません。
+ AWS DMS は Aurora MySQL 拡張バイナリログをサポートしていません。
+ AWS DMS はバイナリログトランザクションの圧縮をサポートしていません。
+ AWS DMS は、InnoDB ストレージエンジンを使用して MySQL データベースの ON DELETE CASCADE イベントと ON UPDATE CASCADE イベントを伝播しません。 InnoDB このようなイベントについては、MySQL は子テーブルでのカスケード操作を反映する binlog イベントを生成しません。したがって、 AWS DMS は対応する変更を子テーブルにレプリケートできません。詳細については、「[インデックス、外部キー、カスケード更新、または削除が移行されない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.FKsAndIndexes)」を参照してください。
+ AWS DMS は、計算された (`VIRTUAL` および `GENERATED ALWAYS`) 列の変更をキャプチャしません。この制限を回避するには、次の手順を実行します。
  + ターゲットデータベースにターゲットテーブルを事前に作成して、`DO_NOTHING`または `TRUNCATE_BEFORE_LOAD` のフルロード設定の AWS DMS タスク設定を使用してタスクを作成する。
  + 計算列をタスクスコープから削除する変換ルールを追加する。変換ルールの詳細については、「[変換ルールおよび変換アクション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md)」を参照。
+ 内部 MySQL の制限により、 は 4GB 以下のサイズの BINLOGs を処理 AWS DMS できます。BINLOGが 4GB を超えると、DMS タスクの障害やその他の予期しない動作が発生する可能性があります。4GB を超える BINLOG を回避するには、トランザクションのサイズを小さくする必要があります。
+ AWS DMS は、スキーマ、テーブル、および列名でバックティック (```) または一重引用符 (`'`) をサポートしていません。
+ AWS DMS は、ソースデータベース内の非表示の列からデータを移行しません。このような列を移行の範囲に含めるには、ALTER TABLE ステートメントを使用して列を表示します。

## XA トランザクションのサポート
<a name="CHAP_Source.MySQL.XA"></a>

Extended Architecture (XA) トランザクションは、複数のトランザクションリソースによる操作セットを単一の信頼性の高いグローバルトランザクションにグループ化するために使用できるトランザクションです。XA トランザクションは 2 フェーズコミットプロトコルを使用します。通常、XA トランザクションがオープンである間に変更をキャプチャすると、データが損失する可能性があります。データベースが XA トランザクションを使用していない場合は、`IgnoreOpenXaTransactionsCheck` のデフォルト値 `TRUE` を使用してこのアクセス権限と設定を無視できます。XA トランザクションのあるソースからレプリケーションを開始するには、次を実行します。
+  AWS DMS エンドポイントユーザーに次のアクセス許可があることを確認します。

  ```
  grant XA_RECOVER_ADMIN on *.* to 'userName'@'%';
  ```
+ エンドポイント設定 `IgnoreOpenXaTransactionsCheck` を `false` に設定する。

**注記**  
AWS DMS は、MariaDB Source DB バージョン 10.6 以降の XA トランザクションをサポートしていません。

## のソースとして MySQL を使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Source.MySQL.ConnectionAttrib"></a>

追加の接続属性を使用する場合と同様、エンドポイント設定を使用してソースの MySQL データベースを設定できます。 AWS DMS コンソールを使用するか、`--my-sql-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

次の表は、MySQL をソースとして使用できるエンドポイント設定を説明しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.MySQL.html)

## MySQL のソースデータ型
<a name="CHAP_Source.MySQL.DataTypes"></a>

次の表は、 の使用時にサポートされる MySQL データベースのソースデータ型 AWS DMS と、 AWS DMS データ型からのデフォルトのマッピングを示しています。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  MySQL のデータ型  |  AWS DMS データ型  | 
| --- | --- | 
|  INT  |  INT4  | 
|  BIGINT  |  INT8  | 
|  MEDIUMINT  |  INT4  | 
|  TINYINT  |  INT1  | 
|  SMALLINT  |  INT2  | 
|  UNSIGNED TINYINT  |  UINT1  | 
|  UNSIGNED SMALLINT  |  UINT2  | 
|  UNSIGNED MEDIUMINT  |  UINT4  | 
|  UNSIGNED INT  |  UINT4  | 
|  UNSIGNED BIGINT  |  UINT8  | 
|  DECIMAL(10)  |  NUMERIC (10,0)  | 
|  BINARY  |  BYTES(1)  | 
|  BIT  |  BOOLEAN  | 
|  BIT(64)  |  BYTES(8)  | 
|  BLOB  |  BYTES(65535)  | 
|  LONGBLOB  |  BLOB  | 
|  MEDIUMBLOB  |  BLOB  | 
|  TINYBLOB  |  BYTES(255)  | 
|  DATE  |  DATE  | 
|  DATETIME  |  DATETIME 括弧で囲まれた値が指定されていない DATETIME は、ミリ秒なしでレプリケートされる。括弧内の値が 1～5 (`DATETIME(5)` など) の DATETIME は、ミリ秒単位でレプリケートされる。 DATETIME 列をレプリケートしても、ターゲット上の時刻は変わらない。UTC には変換されない。  | 
|  TIME  |  STRING  | 
|  TIMESTAMP  |  DATETIME TIMESTAMP 列をレプリケートすると、時間はターゲットで UTC に変換される。  | 
|  YEAR  |  INT2  | 
|  DOUBLE  |  REAL8  | 
|  FLOAT  |  REAL(DOUBLE) FLOAT 値が次の範囲にない場合は、変換を使用して FLOAT を STRING にマップする。変換の詳細については、「[変換ルールおよび変換アクション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md)」をご参照ください。 サポートされる FLOAT の範囲は、-1.79E\$1308～-2.23E-308、0、2.23E-308～1.79E\$1308。  | 
|  VARCHAR(45)  |  WSTRING (45)  | 
|  VARCHAR(2000)  |  WSTRING (2000)  | 
|  VARCHAR(4000)  |  WSTRING (4000)  | 
|  VARBINARY (4000)  |  BYTES (4000)  | 
|  VARBINARY (2000)  |  BYTES (2000)  | 
|  CHAR  |  WSTRING  | 
|  TEXT  |  WSTRING  | 
|  LONGTEXT  |  NCLOB  | 
|  MEDIUMTEXT  |  NCLOB  | 
|  TINYTEXT  |  WSTRING(255)  | 
|  GEOMETRY  |  BLOB  | 
|  POINT  |  BLOB  | 
|  LINESTRING  |  BLOB  | 
|  POLYGON  |  BLOB  | 
|  MULTIPOINT  |  BLOB  | 
|  MULTILINESTRING  |  BLOB  | 
|  MULTIPOLYGON  |  BLOB  | 
|  GEOMETRYCOLLECTION  |  BLOB  | 
|  ENUM  |  WSTRING (*[length]* (長さ)) ここで、*[length]* (長さ) は列挙型の最長値の長さです。  | 
|  SET  |  WSTRING (*[length]* (長さ)) ここで、*[length]* (長さ) は、カンマを含む SET 内のすべての値の合計の長さです。  | 
|  JSON  |  CLOB  | 

**注記**  
場合によっては、値が「ゼロ」(つまり、0000-00-00) の DATETIME データ型と TIMESTAMP データ型を指定できます。存在する場合は、レプリケーション タスクのターゲットデータベースが DATETIME データ型と TIMESTAMP データ型で「ゼロ」値に対応していることを確認してください。サポートされていない場合、これらの値はターゲットで NULL として記録されます。

# のソースとしての SAP ASE データベースの使用 AWS DMS
<a name="CHAP_Source.SAP"></a>

を使用して、以前は Sybase と呼ばれていた SAP Adaptive Server Enterprise (ASE) データベースからデータを移行できます AWS DMS。SAP ASE データベースをソースとして使用すると、サポートされている他の AWS DMS ターゲットデータベースにデータを移行できます。

がソースとして AWS DMS サポートする SAP ASE のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

SAP ASE データベースと の操作の詳細については AWS DMS、以下のセクションを参照してください。

**Topics**
+ [SAP ASE データベースを のソースとして使用するための前提条件 AWS DMS](#CHAP_Source.SAP.Prerequisites)
+ [SAP ASE を のソースとして使用する場合の制限 AWS DMS](#CHAP_Source.SAP.Limitations)
+ [のソースとして SAP ASE を使用するために必要なアクセス許可 AWS DMS](#CHAP_Source.SAP.Security)
+ [切り捨てポイントの削除](#CHAP_Source.SAP.Truncation)
+ [SAP ASE を のソースとして使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)
+ [SAP ASE のソースデータ型](#CHAP_Source.SAP.DataTypes)

## SAP ASE データベースを のソースとして使用するための前提条件 AWS DMS
<a name="CHAP_Source.SAP.Prerequisites"></a>

SAP ASE データベースをソースにするには AWS DMS、次の操作を行います。
+ `sp_setreptable` コマンドを使用して、テーブルで SAP ASE レプリケーションを有効にします。詳細については、「[Sybase Infocenter アーカイブ]( http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc32410_1501/html/refman/X37830.htm)」をご参照ください。
+ SAP ASE データベースの `RepAgent` を無効にします。詳細については、「[プライマリデータベースの RepAgent スレッド停止と無効化](http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc20096_1260/html/mra126ag/mra126ag65.htm)」をご参照ください。
+ 非ラテン文字 (例: 中国語) 用に設定された、Windows EC2 インスタンスで、SAP ASE バージョン 15.7 にレプリケーションするには、ターゲットコンピュータに SAP ASE 15.7 SP121 をインストールします。

**注記**  
継続的変更データ　キャプチャ (CDC) レプリケーションでは DMS が `dbcc logtransfer` と `dbcc log` を実行して、トランザクションログからデータを読み取ります。

## SAP ASE を のソースとして使用する場合の制限 AWS DMS
<a name="CHAP_Source.SAP.Limitations"></a>

SAP ASE データベースを AWS DMSのソースとして使用する場合は、以下の制限が適用されます。
+ SAP ASE データベースごとに継続的なレプリケーションまたは CDC を使用して実行できる AWS DMS タスクは 1 つだけです。フルロードのみのタスクは複数で並行して実行できます。
+ テーブルの名前を変更することはできません。たとえば、以下のコマンドは失敗します。

  ```
  sp_rename 'Sales.SalesRegion', 'SalesReg;
  ```
+ 列の名前を変更することはできません。たとえば、以下のコマンドは失敗します。

  ```
  sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';
  ```
+ バイナリデータ型文字列の末尾にあるゼロ値は、ターゲットデータベースにレプリケートされるときに切り捨てられます。たとえば、ソーステーブル内の `0x0000000000000000000000000100000100000000` はターゲットテーブルでは `0x00000000000000000000000001000001` になります。
+ データベースのデフォルトが NULL 値を許可しないように設定されている場合、 は NULL 値を許可しない列を持つターゲットテーブル AWS DMS を作成します。したがって、全ロードまたは CDC レプリケーションタスクに空の値が含まれている場合、 はエラーを AWS DMS スローします。以下のコマンドを使用してソースデータベースで NULL 値を許容することにより、これらのエラーを防ぐことができます。

  ```
  sp_dboption database_name, 'allow nulls by default', 'true'
  go
  use database_name
  CHECKPOINT
  go
  ```
+ `reorg rebuild` インデックスコマンドはサポートされていません。
+ AWS DMS では、クラスターや MSA (マルチサイト可用性)/ウォームスタンバイをソースとして使用することはできません。
+ `AR_H_TIMESTAMP` 変換ヘッダー式はマッピングルールで使用され、追加された列ではミリ秒がキャプチャされません。
+ CDC 中に Merge 操作を実行すると、回復不可能なエラーが発生します。ターゲットを同期状態に戻すには、フルロードを実行します。
+ ロールバックトリガーイベントは、データ行ロックスキームを使用するテーブルではサポートされません。
+ AWS DMS は、ソース SAP データベースからタスクスコープ内のテーブルを削除した後、レプリケーションタスクを再開できません。DMS レプリケーションタスクが停止し、DML 操作 (INSERT、UPDATE、DELETE) が実行された後にテーブルを削除した場合、レプリケーションタスクをもう一度開始する必要があります。

## のソースとして SAP ASE を使用するために必要なアクセス許可 AWS DMS
<a name="CHAP_Source.SAP.Security"></a>

SAP ASE データベースを AWS DMS タスクのソースとして使用するには、 アクセス許可を付与する必要があります。 AWS DMS データベース定義で指定されたユーザーアカウントに、SAP ASE データベースで次のアクセス許可を付与します。
+ sa\$1role
+ replication\$1role
+ sybase\$1ts\$1role
+ デフォルトでは、`sp_setreptable`ストアドプロシージャを実行するアクセス許可が必要な場合、 は SAP ASE レプリケーションオプション AWS DMS を有効にします。データベースエンドポイントから直接、 AWS DMS それ自体ではなくテーブル`sp_setreptable`で を実行する場合は、`enableReplication`追加の接続属性を使用できます。詳細については、「[SAP ASE を のソースとして使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)」を参照してください。

## 切り捨てポイントの削除
<a name="CHAP_Source.SAP.Truncation"></a>

タスクが開始されると、 は`syslogshold`システムビューに`$replication_truncation_point`エントリ AWS DMS を確立し、レプリケーションプロセスが進行中であることを示します。 AWS DMS が動作している間、ターゲットに既にコピーされているデータの量に応じて、レプリケーション切り捨てポイントを一定の間隔で進めます。

`$replication_truncation_point` エントリが確立されたら、データベースログが過度に大きくならないように AWS DMS タスクを実行したままにします。 AWS DMS タスクを完全に停止する場合は、次のコマンドを発行してレプリケーション切り捨てポイントを削除します。

```
dbcc settrunc('ltm','ignore')
```

切り捨てポイントが削除されると、 AWS DMS タスクを再開することはできません。ログは、引き続きチェックポイントで自動的に切り捨てられます (自動切り捨てが設定されている場合)。

## SAP ASE を のソースとして使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Source.SAP.ConnectionAttrib"></a>

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ソースの SAP ASE データベースを設定できます。 AWS DMS コンソールを使用するか、`--sybase-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

次の表は、ソースとして SAP ASE を使用できるエンドポイント設定を説明しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.SAP.html)

## SAP ASE のソースデータ型
<a name="CHAP_Source.SAP.DataTypes"></a>

の使用 AWS DMS 時にサポートされる SAP ASE ソースデータ型と AWS DMS 、データ型からのデフォルトのマッピングのリストについては、次の表を参照してください。 AWS DMS は、ユーザー定義型 (UDT) データ型の列を持つ SAP ASE ソーステーブルをサポートしていません。このデータ型のレプリケートされた列は NULL として作成されます。

ターゲットにマッピングされるデータ型を表示する方法については、ターゲットエンドポイントの [「データ移行のターゲット」](CHAP_Target.md) セクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  SAP ASE のデータ型  |  AWS DMS データ型  | 
| --- | --- | 
| BIGINT | INT8 | 
| UNSIGNED BIGINT | UINT8 | 
| INT | INT4 | 
| UNSIGNED INT | UINT4 | 
| SMALLINT | INT2 | 
| UNSIGNED SMALLINT | UINT2 | 
| TINYINT | UINT1 | 
| DECIMAL | NUMERIC | 
| NUMERIC | NUMERIC | 
| FLOAT | REAL8 | 
| DOUBLE | REAL8 | 
| REAL | REAL4 | 
| MONEY | NUMERIC | 
| SMALLMONEY | NUMERIC | 
| DATETIME | DATETIME | 
| BIGDATETIME | DATETIME(6) | 
| SMALLDATETIME | DATETIME | 
| DATE | DATE | 
| TIME | TIME | 
| BIGTIME | TIME | 
| CHAR | STRING | 
| UNICHAR | WSTRING | 
| NCHAR | WSTRING | 
| VARCHAR | STRING | 
| UNIVARCHAR | WSTRING | 
| NVARCHAR | WSTRING | 
| BINARY | BYTES | 
| VARBINARY | BYTES | 
| BIT | BOOLEAN | 
| TEXT | CLOB | 
| UNITEXT | NCLOB | 
| IMAGE | BLOB | 

# のソースとしての MongoDB の使用 AWS DMS
<a name="CHAP_Source.MongoDB"></a>

 がソースとして AWS DMS サポートする MongoDB のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

MongoDB バージョンのサポートについては、次の点に注意します。
+ バージョン AWS DMS 3.4.5 以降では、MongoDB バージョン 4.2 および 4.4 がサポートされています。
+  AWS DMS 3.4.5 以降のバージョンと MongoDB 4.2 以降のバージョンでは、分散トランザクションがサポートされています。MongoDB の分散トランザクションの詳細については、「[MongoDB ドキュメント](https://www.mongodb.com/docs/)」の「[Transactions](https://docs.mongodb.com/manual/core/transactions/)」を参照してください。
+  AWS DMS 3.5.0 以降のバージョンは、3.6 より前のバージョンの MongoDB をサポートしていません。
+ バージョン AWS DMS 3.5.1 以降では、MongoDB バージョン 5.0 がサポートされています。
+ バージョン AWS DMS 3.5.2 以降では、MongoDB バージョン 6.0 がサポートされています。
+ バージョン AWS DMS 3.5.4 以降では、MongoDB バージョン 7.0 および 8.0 がサポートされています。



MongoDB を初めてお使いの方のために、以下の MongoDB データベースの概念について説明します。
+ MongoDB のレコードは、フィールドと値のペアで構成されるデータ構造である*ドキュメント*です。フィールドの値には、他のドキュメント、配列、およびドキュメントの配列を含めることができます。ドキュメントは、リレーショナルデータベースのテーブルの行とほぼ同等です。
+ MongoDB の*コレクション*はドキュメントのグループであり、リレーショナルデータベーステーブルとほぼ同等です。
+ MongoDB の*データベース*はコレクションの集合であり、リレーショナル データベーステーブルのスキーマとほぼ同等です。
+ 内部的には、MongoDB ドキュメントは、ドキュメント内の各フィールドのタイプを含む、圧縮形式でバイナリ JSON (BSON) ファイルとして格納されます。各ドキュメントには一意の ID があります。

AWS DMS は、MongoDB をソースとして使用する場合、*ドキュメントモード*または*テーブル*モードの 2 つの移行モードをサポートします。MongoDB エンドポイントを作成するときか、 AWS DMS コンソールからの**メタデータモード** パラメータを設定して、使用する移行モードを指定します。オプションとして、エンドポイント設定パネルで**\$1id を個別の列として指定する**のチェックマークボタンを選択して、プライマリ キーとして機能する `_id` という名前の 2 番目の列を作成できます。

移行モードの選択は、以下に説明するように、ターゲットデータの結果形式に影響します。

**ドキュメントモード**  
ドキュメントモードでは、MongoDB ドキュメントは「現状のまま」移行されます。これは、その中のドキュメントデータが `_doc` という名前のターゲットテーブルの 1 つの列と見なされることを意味します。MongoDB をソースエンドポイントとして使用する場合のデフォルト設定はドキュメントモードです。  
たとえば、myCollection という MongoDB コレクションの次のドキュメントを考えてみましょう。  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
ドキュメントモードを使用してデータをリレーショナルデータベーステーブルに移行した後、データは以下のように構成されます。MongoDB ドキュメントのデータフィールドは ` _doc` 列に統合されています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.MongoDB.html)
オプションで、追加の接続属性 `extractDocID` を *true* に設定して、プライマリキーとして動作する、`"_id"` という名前の 2 つ目の列を作成できます。CDC を使用する場合は、このパラメータを **true に設定します。  
[マルチドキュメントトランザクション](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction)を生成するソースで CDC を使用する場合は、 `ExtractDocId`パラメータを *true* に設定**する必要があります**。このパラメータが有効になっていない場合、 AWS DMS タスクはマルチドキュメントトランザクションを検出すると失敗します。  
ドキュメントモードでは、 は次のようなコレクションの作成と名前変更 AWS DMS を管理します。  
+ ソースデータベースに新しいコレクションを追加すると、 はコレクションの新しいターゲットテーブル AWS DMS を作成し、ドキュメントをレプリケートします。
+ ソースデータベースで既存コレクションの名前を変更すると、 AWS DMS はターゲット テーブルの名前を変更しません。
ターゲット エンドポイントが Amazon DocumentDB の場合は、**ドキュメントモード**で移行を実行します。

**テーブルモード**  
テーブルモードでは、 は MongoDB ドキュメントの各最上位フィールドをターゲットテーブルの列 AWS DMS に変換します。フィールドがネストされている場合、 はネストされた値を 1 つの列に AWS DMS フラット化します。 AWS DMS 次に、キーフィールドとデータ型をターゲットテーブルの列セットに追加します。  
MongoDB ドキュメントごとに、 は各キーとタイプをターゲットテーブルの列セット AWS DMS に追加します。たとえば、テーブルモードを使用すると、 は前の例を次のテーブル AWS DMS に移行します。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.MongoDB.html)
入れ子の値は、ドット区切りのキー名を含む列にフラット化されます。列は、ピリオドで区切られたフラット化されたフィールド名の連結と呼ばれます。たとえば、 は などのネストされた値のフィールドを持つ JSON ドキュメント`{"a" : {"b" : {"c": 1}}}`を という名前の列 AWS DMS に移行します。 `a.b.c.`  
ターゲット列を作成するには、 は指定された数の MongoDB ドキュメント AWS DMS をスキャンし、すべてのフィールドとそのタイプのセットを作成します。 AWS DMS 次に、このセットを使用してターゲットテーブルの列を作成します。コンソールを使用して MongoDB ソースエンドポイントを作成または変更する場合は、スキャンするドキュメントの数を指定できます。デフォルト値は 1000 ドキュメントです。を使用する場合は AWS CLI、追加の接続属性 を使用できます`docsToInvestigate`。  
テーブルモードでは、 は次のようなドキュメントとコレクション AWS DMS を管理します。  
+ 既存のコレクションにドキュメント (行) を追加する場合は、ドキュメントがレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。
+ ドキュメントを更新すると、更新されたドキュメントはレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。
+ ドキュメントの削除は完全にサポートされています。
+ CDC タスクの実行中に新しいコレクションを追加しても、ターゲット上に新しいテーブルは作成されません。
+ 変更データキャプチャ (CDC) フェーズ AWS DMS では、 はコレクションの名前変更をサポートしていません。

**Topics**
+ [のソースとして MongoDB を使用する場合に必要なアクセス許可 AWS DMS](#CHAP_Source.MongoDB.PrerequisitesCDC)
+ [CDC 用 MongoDB レプリカセットの設定](#CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet)
+ [のソースとして MongoDB を使用する場合のセキュリティ要件 AWS DMS](#CHAP_Source.MongoDB.Security)
+ [MongoDB コレクションをセグメント化した並行移行](#CHAP_Source.MongoDB.ParallelLoad)
+ [MongoDB を のソースとして使用する場合の複数のデータベースの移行 AWS DMS](#CHAP_Source.MongoDB.Multidatabase)
+ [のソースとして MongoDB を使用する場合の制限 AWS DMS](#CHAP_Source.MongoDB.Limitations)
+ [のソースとして MongoDB を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Source.MongoDB.Configuration)
+ [MongoDB のソースデータ型](#CHAP_Source.MongoDB.DataTypes)

## のソースとして MongoDB を使用する場合に必要なアクセス許可 AWS DMS
<a name="CHAP_Source.MongoDB.PrerequisitesCDC"></a>

MongoDB ソースを使用した AWS DMS 移行では、ルート権限を持つユーザーアカウントを作成するか、移行するデータベースに対するアクセス許可のみを持つユーザーを作成できます。

次のコードは、ルートアカウントとなるユーザーを作成します。

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)
```

MongoDB 3.x ソースに関して次のコードは、移行するデータベースに対して最小限の権限を持つユーザーを作成します。

```
use database_to_migrate
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "read", db: "local" }, "read"] 
})
```

MongoDB 4.x ソースの場合、以下のコードは最小限の権限を持つユーザーを作成します。

```
{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }
```

たとえば、「admin」データベースに次のロールを作成します。

```
use admin
db.createRole(
{
role: "changestreamrole",
privileges: [
{ resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] }
],
roles: []
}
)
```

ロールが作成されたら、移行するデータベースにユーザーを作成します。

```
 use test
> db.createUser( 
{ 
user: "dms-user12345",
pwd: "password",
roles: [ { role: "changestreamrole", db: "admin" }, "read"] 
})
```

## CDC 用 MongoDB レプリカセットの設定
<a name="CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet"></a>

MongoDB で継続的なレプリケーションまたは CDC を使用するには、MongoDB オペレーションログ (oplog) へのアクセス AWS DMS が必要です。レプリカセットが存在しない場合に oplog を作成するには、レプリカセットをデプロイする必要があります。詳細については、 [MongoDB のドキュメント](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/)をご参照ください。

ソースエンドポイントとして設定された MongoDB レプリカのプライマリまたはセカンダリノードを持つ CDC を使用することができます。

**スタンドアロンインスタンスをレプリカセットに変換するには**

1. コマンドラインを使用して、`mongo` に接続します。

   ```
   mongo localhost
   ```

1. `mongod` サービスを停止します。

   ```
   service mongod stop
   ```

1. 次のコマンドを使用して、`mongod` を再起動します。

   ```
   mongod --replSet "rs0" --auth -port port_number
   ```

1. 次のコマンドを使用して、レプリカセットへの接続をテストします。

   ```
   mongo -u root -p password --host rs0/localhost:port_number 
     --authenticationDatabase "admin"
   ```

ドキュメントモードの移行を実行する予定がある場合は、MongoDB エンドポイントを作成するときに `_id as a separate column` オプションを選択します。このオプションを選択すると、プライマリキーとして機能する `_id` という名前の 2 番目の列が作成されます。この 2 番目の列は、データ操作言語 (DML) オペレーションをサポートするために AWS DMS で必要です。

**注記**  
AWS DMS は、オペレーションログ (oplog) を使用して、継続的なレプリケーション中の変更をキャプチャします。がレコード AWS DMS を読み取る前に MongoDB がオログからレコードをフラッシュすると、タスクは失敗します。少なくとも 24 時間は変更が保持されるように oplog のサイジングを行うことをお勧めします。

## のソースとして MongoDB を使用する場合のセキュリティ要件 AWS DMS
<a name="CHAP_Source.MongoDB.Security"></a>

AWS DMS は、MongoDB の 2 つの認証方法をサポートしています。この 2 つの認証方法はパスワードを暗号化する際に使用するため、`authType` パラメータが *PASSWORD* に設定されているときにのみ使用されます。

MongoDB の認証方法は次のとおりです。
+ **MONGODB-CR** — 下位互換性のために
+ **SCRAM-SHA-1** – バージョン 3.x と 4.0 認証を使用する場合のデフォルト

認証方法が指定されていない場合、 AWS DMS は MongoDB ソースのバージョンにデフォルトの方法を使用します。

## MongoDB コレクションをセグメント化した並行移行
<a name="CHAP_Source.MongoDB.ParallelLoad"></a>

移行タスクのパフォーマンスを向上させるために、MongoDB ソース エンドポイントは、テーブルマッピングでの並列全ロードの 2 つのオプションをサポートしています。

つまり、自動セグメンテーションまたはテーブルマッピングによる範囲セグメンテーションを使用して、JSON 設定で並列全ロードを行うことで、コレクションを並行移行できます。自動セグメンテーションでは、 の基準を指定 AWS DMS して、各スレッドで移行するソースを自動的にセグメント化できます。範囲セグメンテーションを使用すると、DMS が各スレッドで移行する各セグメントの特定 AWS DMS の範囲を指定できます。これらの設定の詳細については、「[テーブルとコレクション設定のルールとオペレーション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md)」をご参照ください。

### 自動セグメンテーション範囲を使用して MongoDB データベースを並列移行する
<a name="CHAP_Source.MongoDB.ParallelLoad.AutoPartitioned"></a>

スレッドごとにデータを自動的にパーティション (セグメント化) する AWS DMS の基準を指定することで、ドキュメントを並列移行できます。特に、スレッドごとに移行するドキュメントの数を指定します。このアプローチを使用して、スレッドあたりのパフォーマンスを最大化するためにセグメントの境界を最適化 AWS DMS しようとします。

テーブルマッピングで以下のテーブル設定オプションを使用して、セグメンテーション基準を指定できます。


|  テーブル設定オプション  |  説明  | 
| --- | --- | 
|  `"type"`  |  (必須) ソースとして `"partitions-auto"` for MongoDB を設定します。  | 
|  `"number-of-partitions"`  |  (オプション) 移行に使用されるパーティション (セグメント) の総数。デフォルトは 16 です。  | 
|  `"collection-count-from-metadata"`  |  (オプション) このオプションが `true` に設定されている場合, AWS DMS は、パーティションの数を決定するために、推定コレクション数を使用します。このオプションが に設定されている場合`false`、 は実際のコレクション数 AWS DMS を使用します。デフォルトは `true` です。  | 
|  `"max-records-skip-per-page"`  |  (オプション) 各パーティションの境界を決定するときに一度にスキップするレコードの数。 は、ページ分割されたスキップアプローチ AWS DMS を使用してパーティションの最小境界を決定します。デフォルトは 10,000 です。 比較的高い値を設定すると、カーソルがタイムアウトし、タスクが失敗する可能性がある。相対的に低い値を設定すると、ページあたりのオペレーションが増え、全ロードが遅くなります。  | 
|  `"batch-size"`  |  (オプション) 1 つのバッチで返されるドキュメントの数を制限します。各バッチには、サーバーへの往復が必要です。バッチサイズがゼロ (0) の場合、カーソルはサーバー定義の最大バッチサイズを使用します。デフォルトは 0 です。  | 

次の例は、自動セグメンテーションのテーブルマッピングを示しています。

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

自動セグメンテーションには次のような制限があります。各セグメントの移行は、コレクション数とコレクション用の最小値 `_id` を別個にフェッチします。次に、ページ割りされたスキップを使用して、そのセグメントの最小境界を計算します。

従って、コレクション内のすべてのセグメント境界が計算されるまで、各コレクションで `_id` の最小値が一定のままであるようにします。セグメント境界の計算中にコレクションの `_id` 最小値を変更すると、データの損失や重複行のエラーが発生する可能性があります。

### 範囲セグメンテーションを使用して MongoDB データベースを並列移行する
<a name="CHAP_Source.MongoDB.ParallelLoad.Ranges"></a>

スレッド内の各セグメント範囲を指定することで、ドキュメントを並列移行できます。このアプローチを使用して、スレッドあたりのドキュメント範囲の選択に応じて、各スレッドで移行するように AWS DMS 特定のドキュメントに指示します。

次のイメージは、7 つの項目を持つ MongoDB コレクションとプライマリキーとしての `_id` を示しています。

![\[7 つの項目を持つ MongoDB コレクション。\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/images/datarep-docdb-collection.png)


コレクションを の 3 つの特定のセグメントに分割 AWS DMS して並行して移行するには、テーブルマッピングルールを移行タスクに追加できます。これは次の JSON 例で示されます。

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

このテーブルマッピング定義は、ソースコレクションを 3 つのセグメントに分割し、並列移行します。以下は、セグメンテーション境界です。

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id > "5f805c97873173399a278d79" and num > 2 and _id  less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records)
Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)
```

移行タスクが完了したら、次の例に示すように、テーブルが並列にロードされたことをタスクログから確認できます。ソーステーブルから各セグメントをアンロードするために使用する MongoDB `find` 句 を確認することもできます。

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

現在、 はセグメントキー列として次の MongoDB データ型 AWS DMS をサポートしています。
+ Double
+ String
+ ObjectId
+ 32 ビット整数
+ 64 ビット整数

## MongoDB を のソースとして使用する場合の複数のデータベースの移行 AWS DMS
<a name="CHAP_Source.MongoDB.Multidatabase"></a>

AWS DMS バージョン 3.4.5 以降では、サポートされているすべての MongoDB バージョンについて、1 つのタスクで複数のデータベースを移行できます。複数のデータベースを移行する場合は、次のステップを実行します：

1. MongoDB ソース エンドポイントを作成するときは、次のいずれかの操作を行います：
   + DMS コンソールの**エンドポイントの作成**ページで、**[Endpoint configuration]** (エンドポイント設定) の下にある**[Database name]** (データベース名) が空であることを確認してください。
   + コマンドを使用して AWS CLI `CreateEndpoint`、空の文字列値を の `DatabaseName`パラメータに割り当てます`MongoDBSettings`。

1. MongoDB ソースから移行するデータベースごとに、タスクのテーブルマッピングにおけるスキーマ名としてのデータベース名を指定します。これを行うには、コンソール内のガイド付き入力を使用するか、JSON で直接入力できます。ガイド付き入力の詳細については、「[コンソールからテーブル選択および変換を指定する](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md)」をご参照ください。JSON の詳細については、「[選択ルールと選択アクション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md)」をご参照ください。

たとえば、次の JSON を指定して、3 つの MongoDB データベースを移行するとします。

**Example スキーマ内のすべてのテーブルの移行**  
次の JSON は、すべてのテーブルをソースエンドポイントの `Customers`、`Orders`、`Suppliers` データベースからターゲット エンドポイントに移行します。  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "3",
            "rule-name": "3",
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

## のソースとして MongoDB を使用する場合の制限 AWS DMS
<a name="CHAP_Source.MongoDB.Limitations"></a>

以下は、MongoDB をソースとして使用する場合の制限です AWS DMS。
+ テーブルモードの場合、コレクション内のドキュメントは、同じフィールドの値で使用されるデータ型と一致している必要があります。例えば、コレクション内のドキュメントに `'{ a:{ b:value ... }'` が含まれている場合、`a.b` フィールドの `value` を参照するコレクション内のすべてのドキュメントは、値が登場するコレクションの場所を問わず、`value` で同じデータ型を使用する必要があります。
+ `_id` オプションが別の列として設定されている場合、ID 文字列は 200 文字以下でなければなりません。
+ オブジェクト ID および配列タイプキーは、テーブルモードで `oid` および `array` というプレフィックスが付けられた列に変換されます。

  内部的には、これらの列はプレフィックスが付けられた名前で参照されます。これらの列を参照 AWS DMS する変換ルールを で使用する場合は、必ずプレフィックス付き列を指定してください。たとえば、`${_id}` ではなく `${oid__id}` を指定するか、`${_addresses}` ではなく `${array__addresses}` を指定します。
+  コレクション名とキー名にドル記号 (\$1) を含めることはできません。
+ AWS DMS は、RDBMS ターゲットのテーブルモードで異なる大文字と小文字 (上、下) の同じフィールドを含むコレクションをサポートしていません。たとえば、 AWS DMS は `Field1`と という名前の 2 つのコレクションを持つことをサポートしていません`field1`。
+ 前述のように、テーブルモードとドキュメントモードには制限があります。
+ 自動セグメンテーションを使用して並列移行するには、前述の制限があります。
+ ソースフィルターは、MongoDB ではサポートされていません。
+ AWS DMS は、ネストレベルが 97 より大きいドキュメントをサポートしていません。
+ AWS DMS は、DocumentDB 以外のターゲットに移行するときに UTF-8 でエンコードされたソースデータを必要とします。non-UTF-8文字を含むソースの場合は、移行前に UTF-8 に変換するか、代わりに Amazon DocumentDB に移行します。
+ AWS DMS では、MongoDB バージョン 5.0 の以下の機能はサポートされていません。
  + ライブリシャーディング
  + クライアント側のフィールドレベルの暗号化 (CSFLE)
  + 時系列コレクションの移行
**注記**  
DocumentDB は、時系列コレクションをサポートしていないため、フルロードフェーズで移行された時系列コレクションは Amazon DocumentDB の通常のコレクションに変換されます。

## のソースとして MongoDB を使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Source.MongoDB.Configuration"></a>

MongoDB ソースエンドポイントを設定するときは、 AWS DMS コンソールを使用して複数のエンドポイント設定を指定できます。

次の表は、MongoDB データベースを AWS DMS ソースとして使用する場合に使用できる構成設定を示しています。


| 設定 (属性) | 有効値 | デフォルト値と説明 | 
| --- | --- | --- | 
|  **[Authentication mode]** (認証モード)  |  `"none"` `"password"`  |  値 `"password"` では、ユーザー名とパスワードの入力が求められます。`"none"` を指定した場合、ユーザー名とパスワードのパラメータは使用されません。  | 
|  **[Authentication source]** (認証ソース)  |  有効な MongoDB データベース名を指定してください。  |  認証情報を検証するために使用する MongoDB データベースの名前。デフォルト値は `"admin"` です。  | 
|  **[Authentication mechanism]** (認証メカニズム)  |  `"default"` `"mongodb_cr"` `"scram_sha_1"`  |  認証メカニズム。` "default"` 値は `"scram_sha_1"` です。`authType` が `"no"` に設定されている場合、この設定は使用されません。  | 
|  **[Metadata mode]** (メタデータモード)  |  ドキュメントとテーブル  |  ドキュメントモードまたはテーブルモードを選択します。  | 
|  **スキャンするドキュメントの数** (`docsToInvestigate`)  |  `0` より大きい正の整数。  |  このオプションは、テーブルモードでのみターゲット テーブル定義を定義するために使用します。  | 
|  **[\$1id as a separate column]** (\$1id を個別の列として指定する)  |  チェックボックス  |  このチェックを入れると、プライマリ キーとして機能する `_id` という名前の 2 番目の列が作成されます。  | 
|   `ExtractDocID`   |  `true` `false`  |  `false` - `NestingLevel` が `"none"` に設定されている場合、この属性を使用します。 [マルチドキュメントトランザクション](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction)を生成するソースで CDC を使用する場合は、 `ExtractDocId`パラメータを に設定**する必要があります**`true`。このパラメータが有効になっていない場合、 AWS DMS タスクはマルチドキュメントトランザクションを検出すると失敗します。  | 
|  `socketTimeoutMS`  |  0 以上の整数。 追加の接続属性 (ECA) のみ  |  この設定はミリ秒単位で、MongoDB クライアントの接続タイムアウトを設定する。値が 0 以下の場合、MongoDB クライアントのデフォルトが使用される。  | 
|   `UseUpdateLookUp`   |  `true` `false`  |  true の場合、CDC 更新イベント中に、 は更新されたドキュメント全体をターゲット AWS DMS にコピーします。false に設定すると、MongoDB update コマンド AWS DMS を使用して、ターゲットのドキュメント内の変更されたフィールドのみを更新します。  | 
|   `ReplicateShardCollections`   |  `true` `false`  |  true の場合、 はデータをシャードコレクションに AWS DMS レプリケートします。ターゲットエンドポイントが DocumentDB エラスティッククラスターである AWS DMS 場合にのみ、 はこの設定を使用します。 この設定が true の場合、次の点に注意する。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.MongoDB.html)  | 
|  `useTransactionVerification`  |  `true` `false`  |  `false` の場合、変更ストリームと oplog 間の検証を無効にします。  このようなシナリオでは、デフォルトの DMS 動作でタスクが失敗するため、変更ストリームと oplog エントリの間に不一致が発生した場合、オペレーションが実行されない可能性があります。デフォルト: `true`。   | 
|  `useOplog`  |  `true` `false`  |  `true` の場合、DMS タスクは変更ストリームを使用するのではなく、「oplog」から直接読み取ることができます。デフォルト: `false`。  | 

**ドキュメント**を**メタデータモード**として選択した場合、さまざまなオプションを利用できます。

ターゲット エンドポイントが DocumentDB の場合は、**ドキュメントモード**で移行を実行し、また、ソース エンドポイントを変更し、**[\$1id as separate column]** (\$1id を個別の列として) オプションを選択します。ソースの MongoDB ワークロードにトランザクションが含まれる場合、これは必須の前提条件です。

## MongoDB のソースデータ型
<a name="CHAP_Source.MongoDB.DataTypes"></a>

MongoDB を のソースとして使用するデータ移行は、ほとんどの MongoDB データ型 AWS DMS をサポートします。次の表に、 の使用時にサポートされる MongoDB ソースデータ型 AWS DMS と AWS DMS 、データ型からのデフォルトのマッピングを示します。MongoDB データ型の詳細については、『MongoDB のドキュメント』の「[BSON 型](https://docs.mongodb.com/manual/reference/bson-types)」をご参照ください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  MongoDB データ型  |  AWS DMS データ型  | 
| --- | --- | 
| ブール値 | Bool | 
| バイナリ | BLOB | 
| 日付 | 日付 | 
| タイムスタンプ | 日付 | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| String (UTF-8) | CLOB | 
| 配列 | CLOB | 
| OID | String | 
| REGEX | CLOB | 
| コード | CLOB | 

# のソースとしての Amazon DocumentDB (MongoDB 互換) の使用 AWS DMS
<a name="CHAP_Source.DocumentDB"></a>

 AWS DMS がソースとしてサポートする Amazon DocumentDB (MongoDB 互換) のバージョンについては、「[のソース AWS DMS](CHAP_Introduction.Sources.md)」を参照してください。

 ソースとして Amazon DocumentDB を使用すると、1 つの Amazon DocumentDB クラスターから別のAmazon DocumentDB クラスターにデータを移行できます。Amazon DocumentDB クラスターから、 でサポートされている他のターゲットエンドポイントのいずれかにデータを移行することもできます AWS DMS。

Amazon DocumentDB を初めて使用する場合は、Amazon DocumentDB データベースの以下の重要な概念に注意してください：
+ Amazon DocumentDB のレコードは、フィールドと値のペアで構成されるデータ構造である*ドキュメント*です。フィールドの値には、他のドキュメント、配列、およびドキュメントの配列を含めることができます。ドキュメントは、リレーショナルデータベースのテーブルの行とほぼ同等です。
+ Amazon DocumentDB での*コレクション*とは、ドキュメントのグループであり、リレーショナル データベーステーブルとほぼ同等です。
+ Amazon DocumentDB の *データベース*はコレクションのセットであり、リレーショナルデータベース内のスキーマとほぼ同等です。

AWS DMS はAmazon DocumentDB をソースとして使用する場合、ドキュメントモードとテーブルモードの 2 つの移行モードをサポートします。 AWS DMS コンソールで Amazon DocumentDB ソースエンドポイントを作成するときに、**メタデータモードオプションまたは追加の接続属性 を使用して移行モード**を指定します`nestingLevel`。移行モードの選択は、以下に説明するように、ターゲットデータの結果の形式に影響します。

**ドキュメントモード**  
*ドキュメントモードでは、*JSON ドキュメントがそのまま移行されます。つまり、ドキュメントデータは 2 つの項目のいずれかに統合されます。ターゲットとしてリレーショナルデータベースを使用する場合、データはターゲットテーブルで `_doc` という名前の単一の列になります。非リレーショナルデータベースをターゲットとして使用する場合、データは単一の JSON ドキュメントになります。ドキュメントモードは、Amazon DocumentDB ターゲットに移行する際にお勧めするデフォルトモードです。  
`myCollection` という Amazon DocumentDB コレクション内の次のドキュメントを例にとって説明します。  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
ドキュメントモードを使用してデータをリレーショナルデータベーステーブルに移行した後、データは以下のように構成されます。ドキュメントのデータフィールドは ` _doc` 列に統合されています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.DocumentDB.html)
オプションで、追加の接続属性 `extractDocID` を `true` に設定して、プライマリ キーとして機能する `"_id"` という名前の 2 つ目の列を作成できます。変更データ キャプチャ (CDC) を使用する場合は、ターゲットとして Amazon DocumentDB を使用する場合を除き、このパラメータを `true` に設定します。  
[マルチドキュメントトランザクション](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction)を生成するソースで CDC を使用する場合は、 `ExtractDocId`パラメータを に設定**する必要があります**`true`。このパラメータが有効になっていない場合、 AWS DMS タスクはマルチドキュメントトランザクションを検出すると失敗します。  
ソースデータベースに新しいコレクションを追加すると、 はコレクションの新しいターゲットテーブル AWS DMS を作成し、ドキュメントをレプリケートします。

**テーブルモード**  
**テーブルモードでは、AWS DMS は Amazon DocumentDB ドキュメントの各最上位フィールドをターゲットテーブルの列に変換します。フィールドがネストされている場合、 はネストされた値を 1 つの列に AWS DMS フラット化します。 AWS DMS は、キーフィールドとデータ型をターゲットテーブルの列セットに追加します。  
Amazon DocumentDB ドキュメントごとに、 は各キーとタイプをターゲットテーブルの列セット AWS DMS に追加します。たとえば、テーブルモードを使用すると、 は前の例を次のテーブル AWS DMS に移行します。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.DocumentDB.html)
入れ子の値は、ドット区切りのキー名を含む列にフラット化されます。この列は、ピリオドで区切られた平滑化されたフィールド名の連結を使用して名前が付けられます。たとえば、 は などのネストされた値のフィールドを持つ JSON ドキュメント`{"a" : {"b" : {"c": 1}}}`を という名前の列 AWS DMS に移行します。 `a.b.c.`  
ターゲット列を作成するには、 は指定された数の Amazon DocumentDB ドキュメント AWS DMS をスキャンし、すべてのフィールドとそのタイプのセットを作成します。 AWS DMS 次に、 はこのセットを使用してターゲットテーブルの列を作成します。コンソールを使用して Amazon DocumentDB ソース エンドポイントを作成または変更する場合は、スキャンするドキュメントの数を指定できます。デフォルト値は 1000 ドキュメントです。を使用する場合は AWS CLI、追加の接続属性 を使用できます`docsToInvestigate`。  
テーブルモードでは、 は次のようなドキュメントとコレクション AWS DMS を管理します。  
+ 既存のコレクションにドキュメント (行) を追加する場合は、ドキュメントがレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。
+ ドキュメントを更新すると、更新されたドキュメントはレプリケートされます。ターゲットに存在しないフィールドがある場合、それらのフィールドはレプリケーションされません。
+ ドキュメントの削除は完全にサポートされています。
+ CDC タスクの実行中に新しいコレクションを追加しても、ターゲット上に新しいテーブルは作成されません。
+ 変更データキャプチャ (CDC) フェーズ AWS DMS では、 はコレクションの名前変更をサポートしていません。

**Topics**
+ [ソースとして Amazon DocumentDB を使用するためのアクセス許可の設定](#CHAP_Source.DocumentDB.Permissions)
+ [Amazon DocumentDB クラスター用 CDC の設定](#CHAP_Source.DocumentDB.ConfigureCDC)
+ [TLS を使用して Amazon DocumentDB に接続する](#CHAP_Source.DocumentDB.TLS)
+ [Amazon DocumentDB ソース エンドポイントの作成](#CHAP_Source.DocumentDB.ConfigureEndpoint)
+ [Amazon DocumentDB コレクションをセグメント化し、並列移行する](#CHAP_Source.DocumentDB.ParallelLoad)
+ [Amazon DocumentDB を のソースとして使用する場合の複数のデータベースの移行 AWS DMS](#CHAP_Source.DocumentDB.Multidatabase)
+ [のソースとして Amazon DocumentDB を使用する場合の制限 AWS DMS](#CHAP_Source.DocumentDB.Limitations)
+ [ソースとしての Amazon DocumentDB のエンドポイントの設定](#CHAP_Source.DocumentDB.ECAs)
+ [Amazon DocumentDB のソースデータ型](#CHAP_Source.DocumentDB.DataTypes)

## ソースとして Amazon DocumentDB を使用するためのアクセス許可の設定
<a name="CHAP_Source.DocumentDB.Permissions"></a>

 AWS DMS 移行に Amazon DocumentDB ソースを使用する場合、ルート権限を持つユーザーアカウントを作成できます。または、移行するデータベースに対してのみ許可されたユーザーを作成することもできます。

次のコードは、ルートアカウントとしてのユーザーを作成します。

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  })
```

Amazon DocumentDB 3.6 の場合、次のコードは、移行するデータベースに対して最小限の権限を持つユーザーを作成します。

```
use db_name
db.createUser( 
    {
        user: "dms-user",
        pwd: "password",
        roles: [{ role: "read", db: "db_name" }]
    }
)
```

Amazon DocumentDB 4.0 以降では、 はデプロイ全体の変更ストリーム AWS DMS を使用します。この例では、次のコードを使用して最小限の権限を持つユーザーを作成します。

```
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "readAnyDatabase", db: "admin" }] 
})
```

## Amazon DocumentDB クラスター用 CDC の設定
<a name="CHAP_Source.DocumentDB.ConfigureCDC"></a>

Amazon DocumentDB で継続的なレプリケーションまたは CDC を使用するには、Amazon DocumentDB クラスターの変更ストリームへのアクセス AWS DMS が必要です。クラスターのコレクションおよびデータベース内の更新イベントの時系列については、*Amazon DocumentDB デベロッパー\$1ガイド*の「[変更ストリームの使用](https://docs.aws.amazon.com/documentdb/latest/developerguide/change_streams.html)」をご参照ください。

MongoDB シェルを使用して Amazon DocumentDB クラスターに関して認証します。次に、以下のコマンドを実行して、変更ストリームを有効にします。

```
db.adminCommand({modifyChangeStreams: 1,
    database: "DB_NAME",
    collection: "", 
    enable: true});
```

この方法により、データベース内ですべてのコレクションの変更ストリームが有効になります。変更ストリームを有効にすると、既存のデータを移行し、同時に進行中の変更をレプリケートする移行タスクを作成できます。 は、バルクデータがロードされた後でも変更をキャプチャして適用し AWS DMS 続けます。最終的にソースデータベースとターゲットデータベースは同期され、移行でのダウンタイムは最小限に抑えられます。

**注記**  
AWS DMS は、オペレーションログ (oplog) を使用して、継続的なレプリケーション中の変更をキャプチャします。がレコード AWS DMS を読み取る前に Amazon DocumentDB が oplog からレコードをフラッシュアウトすると、タスクは失敗します。少なくとも 24 時間は変更が保持されるように oplog のサイジングを行うことをお勧めします。

## TLS を使用して Amazon DocumentDB に接続する
<a name="CHAP_Source.DocumentDB.TLS"></a>

デフォルトでは、新しく作成された Amazon DocumentDB クラスターは、Transport Layer Security (TLS) を使用したセキュアな接続のみを受け入れます。TLS が有効になっている場合、Amazon DocumentDB へのすべての接続で公開キーが必要になります。

Amazon DocumentDB のパブリックキーを取得するには、 がホストする Amazon AWS Amazon S3バケット`rds-combined-ca-bundle.pem`から ファイルをダウンロードします。このファイルのダウンロードの詳細については、*Amazon DocumentDB デベロッパーガイド*の「[TLS を使用した接続の暗号化](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html)」をご参照ください。

`rds-combined-ca-bundle.pem` ファイルをダウンロードしたら、ファイルに含まれるパブリックキーをインポートできます AWS DMS。以下のステップでは、その方法について説明します。

**AWS DMS コンソールを使用してパブリックキーをインポートするには**

1. にサインイン AWS マネジメントコンソール して選択します AWS DMS。

1. ナビゲーションペインで [**Certificates**] を選択します。

1. [**証明書のインポート**] を選択します。**[Import certificate]** (新しい CA 証明書のインポート) ページが表示されます。

1. **[Certificate configuration]** (証明書設定) セクションで、次のいずれかの操作を行います：
   + **[Certificate identifier ]** (証明書の識別子) に、`docdb-cert` などの、証明書の一意の名前を入力します。
   + **[Choose file]** (ファイルの選択) を選択し、`rds-combined-ca-bundle.pem` ファイルを保存した場所に移動し、選択します。

1. [**Add new CA certificate (新しい CA 証明書の追加)**] を選択します。

 AWS CLI 次の例では、 AWS DMS `import-certificate` コマンドを使用してパブリックキー`rds-combined-ca-bundle.pem`ファイルをインポートします。

```
aws dms import-certificate \
    --certificate-identifier docdb-cert \
    --certificate-pem file://./rds-combined-ca-bundle.pem
```

## Amazon DocumentDB ソース エンドポイントの作成
<a name="CHAP_Source.DocumentDB.ConfigureEndpoint"></a>

Amazon DocumentDB ソース エンドポイントを作成するには、コンソールまたは AWS CLIを使用します。以下の手順では、コンソールを使用します。

**AWS DMS コンソールを使用して Amazon DocumentDB ソースエンドポイントを設定するには**

1. にサインイン AWS マネジメントコンソール して選択します AWS DMS。

1. ナビゲーションペインで **[Endpoints]** (エンドポイント) を選択し、**[Create Endpoint]** (エンドポイントの作成) を選択します。

1. **[Endpoint identifier]** (エンドポイント識別子) には、`docdb-source` などの簡単に識別できるような名前を入力します。

1. **[Source engine]** (ソースエンジン) には、**Amazon DocumentDB (MongoDB 互換性)** を選択します。

1. を使用する場合**[Server name]** (サーバー名) には、Amazon DocumentDB データベース エンドポイントが常駐するサーバー名を入力します。たとえば、Amazon EC2 インスタンスの公開 DNS 名に `democluster.cluster-cjf6q8nxfefi.us-east-2.docdb.amazonaws.com` などを入力できます。

1. **[Port]** (ポート) に 27017 と入力します。

1. [**SSL mode (SSL モード)**] で [**verify-full**] を選択します。Amazon DocumentDB クラスターで SSL を無効化している場合、このステップは省略できます。

1. **[CA certificate]** (CA 証明書) には、Amazon DocumentDB 証明書として `rds-combined-ca-bundle.pem` を選択します。この証明書の追加手順については、「[TLS を使用して Amazon DocumentDB に接続する](#CHAP_Source.DocumentDB.TLS)」をご参照ください。

1. **[Database name ]** (データベース名) に、移行するデータベースの名前を入力します。

CLI に次の手順を値で使用します。

**を使用して Amazon DocumentDB ソースエンドポイントを設定するには AWS CLI**
+ 次の AWS DMS `create-endpoint`コマンドを実行して Amazon DocumentDB ソースエンドポイントを設定し、プレースホルダーを独自の値に置き換えます。

  ```
  aws dms create-endpoint \
             --endpoint-identifier a_memorable_name \
             --endpoint-type source \
             --engine-name docdb \
             --username value \
             --password value \
             --server-name servername_where_database_endpoint_resides \
             --port 27017 \
             --database-name name_of_endpoint_database
  ```

## Amazon DocumentDB コレクションをセグメント化し、並列移行する
<a name="CHAP_Source.DocumentDB.ParallelLoad"></a>

移行タスクのパフォーマンスを向上させるために、Amazon DocumentDB ソース エンドポイントは、テーブルマッピングの並列全ロード機能の 2 つのオプションをサポートしています。つまり、JSON 設定で並列全ロードに対してテーブルマッピングの自動セグメンテーションまたは範囲セグメンテーションオプションを使用して、コレクションを並列移行できます。自動セグメンテーションオプションを使用すると、 の基準を指定 AWS DMS して、各スレッドで移行するソースを自動的にセグメント化できます。範囲セグメンテーションオプションを使用すると、DMS が各スレッドで移行する各セグメントの特定 AWS DMS の範囲を指定できます。これらの設定の詳細については、「[テーブルとコレクション設定のルールとオペレーション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md)」をご参照ください。

### 自動セグメンテーション範囲を使用して Amazon DocumentDB データベースを並列移行する
<a name="CHAP_Source.DocumentDB.ParallelLoad.AutoPartitioned"></a>

スレッドごとにデータ特に、スレッドごとに移行するドキュメントの数を自動的にパーティション (セグメント化) する AWS DMS の基準を指定することで、ドキュメントを並列移行できます。このアプローチを使用して、 AWS DMS は、スレッドあたりのパフォーマンスを最大化するために、セグメント境界を最適化しようとします。

テーブルマッピングで次のテーブル設定オプションを使用して、セグメンテーション基準を指定できます。


|  テーブル設定オプション  |  説明  | 
| --- | --- | 
|  `"type"`  |  (必須) ソースとして Amazon DocumentDB 用の `"partitions-auto"` に設定します。  | 
|  `"number-of-partitions"`  |  (オプション) 移行に使用されるパーティション (セグメント) の総数。デフォルトは 16 です。  | 
|  `"collection-count-from-metadata"`  |  (オプション) に設定すると`true`、パーティションの数を決定するために推定コレクション数 AWS DMS が使用されます。に設定すると`false`、実際のコレクション数 AWS DMS が使用されます。デフォルトは `true` です。  | 
|  `"max-records-skip-per-page"`  |  (オプション) 各パーティションの境界を決定するときに一度にスキップするレコードの数。 は、ページ分割されたスキップアプローチ AWS DMS を使用してパーティションの最小境界を決定します。デフォルトは 10,000 です。比較的大きな値を設定すると、カーソルのタイムアウトやタスク障害の可能性があります。相対的に低い値を設定すると、ページあたりのオペレーションが増え、全ロードが遅くなります。  | 
|  `"batch-size"`  |  (オプション) 1 つのバッチで返されるドキュメントの数を制限します。各バッチには、サーバーへの往復が必要です。バッチサイズがゼロ (0) の場合、カーソルはサーバー定義の最大バッチサイズを使用します。デフォルトは 0 です。  | 

次の例は、自動セグメンテーションのテーブルマッピングを示しています。

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

自動セグメンテーションには次の制限があります。各セグメントの移行は、コレクション数とコレクション用の最小値 `_id` を別個にフェッチします。次に、ページ割りされたスキップを使用して、そのセグメントの最小境界を計算します。従って、コレクション内のすべてのセグメント境界が計算されるまで、各コレクションで `_id` の最小値が一定のままであるようにします。セグメント境界の計算中にコレクションの最小 `_id` 値を変更すると、データ損失や重複行のエラーが発生する可能性があります。

### 特定のセグメント範囲を使用して Amazon DocumentDB データベースを並列移行する
<a name="CHAP_Source.DocumentDB.ParallelLoad.Ranges"></a>

次の例は、7 つの項目を持つ Amazon DocumentDB コレクションおよび `_id` をプライマリ キーとして示しています。

![\[7 つの項目を持つ Amazon DocumentDB コレクション。\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/images/datarep-docdb-collection.png)


コレクションを 3 つのセグメントに分割して並列に移行するには、次の JSON の例に示すように、移行タスクにテーブルマッピングルールを追加します。

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

このテーブルマッピング定義は、ソースコレクションを 3 つのセグメントに分割し、並列移行します。以下は、セグメンテーション境界です。

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 and not in (_id less-than-or-equal-to  "5f805c97873173399a278d79" and num less-than-or-equal-to 2) (3 records)
Data not in (_id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5) (2 records)
```

移行タスクが完了したら、次の例に示すように、テーブルが並列にロードされたことをタスクログから確認できます。ソーステーブルから各セグメントをアンロードするために使用される Amazon DocumentDB `find` 句を確認することもできます。

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

現在、 はセグメントキー列として次の Amazon DocumentDB データ型 AWS DMS をサポートしています。
+ Double
+ String
+ ObjectId
+ 32 ビット整数
+ 64 ビット整数

## Amazon DocumentDB を のソースとして使用する場合の複数のデータベースの移行 AWS DMS
<a name="CHAP_Source.DocumentDB.Multidatabase"></a>

AWS DMS バージョン 3.4.5 以降では、Amazon DocumentDB バージョン 4.0 以降でのみ、1 つのタスクで複数のデータベースを移行できます。複数のデータベースを移行する場合は、以下を実行します：

1. Amazon DocumentDB ソース エンドポイントを作成すると、次のようになります：
   + for AWS マネジメントコンソール で AWS DMS、エンドポイント**の作成**ページの**エンドポイント設定**で**データベース名**を空のままにします。
   +  AWS Command Line Interface (AWS CLI) で、**CreateEndpoint** アクションに指定した **DocumentDBSettings** の **DatabaseName** パラメータに空の文字列値を割り当てます。

1. この Amazon DocumentDB ソース エンドポイントから移行するデータベースごとに、コンソールでのガイド付き入力を使用するか、JSON で直接使用するタスクのテーブルマッピングで、各データベースの名前をスキーマの名前として指定します。ガイド付き入力の詳細については、「[コンソールからテーブル選択および変換を指定する](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md)」をご参照ください。。JSON の詳細については、「[選択ルールと選択アクション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md)」をご参照ください。

たとえば、次の JSON を指定して 3 つの Amazon DocumentDB データベースを移行できます。

**Example スキーマ内のすべてのテーブルの移行**  
次の JSON は、ソース エンポイント内の `Customers`、`Orders`、`Suppliers`データベースからすべてのテーブルをターゲット エンドポイントに移行します。  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include"
        }
    ]
}
```

## のソースとして Amazon DocumentDB を使用する場合の制限 AWS DMS
<a name="CHAP_Source.DocumentDB.Limitations"></a>

Amazon DocumentDB をソースとして使用する場合の制限は次のとおりです AWS DMS。
+ `_id` オプションが別の列として設定されている場合、ID 文字列は 200 文字以下でなければなりません。
+ オブジェクト ID および配列タイプキーは、テーブルモードで `oid` および `array` というプレフィックスが付けられた列に変換されます。

  内部的には、これらの列はプレフィックスが付けられた名前で参照されます。これらの列を参照 AWS DMS する変換ルールを で使用する場合は、必ずプレフィックス付き列を指定してください。たとえば、`${_id}` ではなく `${oid__id}` を指定するか、`${_addresses}` ではなく `${array__addresses}` を指定します。
+  コレクション名とキー名にドル記号 (\$1) を含めることはできません。
+ 前述のように、テーブルモードとドキュメントモードには制限があります。
+ 自動セグメンテーションを使用して並列移行するには、前述の制限があります。
+ Amazon DocumentDB (MongoDB 互換) ソースは、変更データ キャプチャ (CDC) のスタート位置として特定のタイムスタンプの使用をサポートしていません。進行中のレプリケーション タスクは、タイムスタンプに関係なく変更のキャプチャをスタートします。
+ AWS DMS は、3.5.2 より前の AWS DMS バージョンのネストレベルが 97 より大きいドキュメントをサポートしていません。
+ ソースフィルターは、DocumentDB ではサポートされていません。
+ AWS DMS は、Elastic クラスターモードのソースとしての DocumentDB の CDC (変更データキャプチャ) レプリケーションをサポートしていません。

## ソースとしての Amazon DocumentDB のエンドポイントの設定
<a name="CHAP_Source.DocumentDB.ECAs"></a>

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ソースの Amazon DocumentDB データベースを設定できます。 AWS DMS コンソールを使用するか、`--doc-db-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

次の表は、ソースとして Amazon DocumentDB を使用できるエンドポイント設定を説明しています。


| 属性名 | 有効値 | デフォルト値と説明 | 
| --- | --- | --- | 
|   `NestingLevel`   |  `"none"` `"one"`  |  `"none"` - ドキュメントモードを使用するよう `"none"` を指定します。テーブルモードを使用するよう `"one"` を指定します。  | 
|   `ExtractDocID`   |  `true` `false`  |  `false` - `NestingLevel` が `"none"` に設定されている場合、この属性を使用します。 [マルチドキュメントトランザクション](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction)を生成するソースで CDC を使用する場合は、 `ExtractDocId`パラメータを に設定**する必要があります**`true`。このパラメータが有効になっていない場合、 AWS DMS タスクはマルチドキュメントトランザクションを検出すると失敗します。  | 
|   `DocsToInvestigate`   |  `0` より大きい正の整数。  |  `1000` - `NestingLevel` が `"one"` に設定されている場合、この属性を使用します。  | 
|   `ReplicateShardCollections `   |  `true` `false`  |  true の場合、 はデータをシャードコレクションに AWS DMS レプリケートします。ターゲットエンドポイントが DocumentDB エラスティッククラスターである AWS DMS 場合にのみ、 はこの設定を使用します。 この設定が true の場合、次の点に注意する。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.DocumentDB.html)  | 

## Amazon DocumentDB のソースデータ型
<a name="CHAP_Source.DocumentDB.DataTypes"></a>

次の表に、 AWS DMSを使用する場合にサポートされる Amazon DocumentDB ソースデータ型を示します。この表では、 AWS DMS データ型からのデフォルトのマッピングを確認することもできます。データ型の詳細については、MongoDB のドキュメントの「[BSON 型](https://docs.mongodb.com/manual/reference/bson-types)」をご参照ください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  Amazon DocumentDB データ型  |  AWS DMS データ型  | 
| --- | --- | 
| ブール値 | Bool | 
| バイナリ | BLOB | 
| 日付 | 日付 | 
| タイムスタンプ | 日付 | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| String (UTF-8) | CLOB | 
| 配列 | CLOB | 
| OID | String | 

# のソースとしての Amazon S3 の使用 AWS DMS
<a name="CHAP_Source.S3"></a>

を使用して Amazon S3 バケットからデータを移行できます AWS DMS。これを行うには、1 つ以上のデータファイルを含む Amazon S3 バケットへのアクセスを提供します。その S3 バケットに、データおよびそれらのファイルのデータのデータベーステーブル間のマッピングを記述する JSON ファイルを含めます。

全ロードのスタート前に、ソース データ ファイルが Amazon S3 バケットに存在している必要があります。バケット名は、`bucketName` パラメータを使用して指定します。

ソースデータファイルは、次の形式で表すことができます。
+ カンマ区切り値 (.csv)
+ Parquet (DMS バージョン 3.5.3 以降)。Parquet 形式ファイルの詳細については、「[Amazon S3 の Parquet 形式のファイルを のソースとして使用する AWS DMS](#CHAP_Source.S3.Parquet)」を参照してください。

カンマ区切り値 (.csv) 形式のソースデータファイルには、次の命名規則を使用して名前を付けます。この規則では、*`schemaName`* がソーススキーマで、*`tableName`* がそのスキーマ内のテーブルの名前です。

```
/schemaName/tableName/LOAD001.csv
/schemaName/tableName/LOAD002.csv
/schemaName/tableName/LOAD003.csv
...
```

 たとえば、データファイルが次の Amazon S3 パスの `amzn-s3-demo-bucket` にあるとします。

```
s3://amzn-s3-demo-bucket/hr/employee
```

ロード時に、 はソーススキーマ名が で`hr`、ソーステーブル名が である AWS DMS と仮定します`employee`。

`bucketName` (必須) に加えて、オプションで`bucketFolder`パラメータを指定して、 AWS DMS が Amazon S3 バケット内のデータファイルを検索する場所を指定できます。前の例を続けると、 を `bucketFolder`に設定すると`sourcedata`、 は次のパスでデータファイルを AWS DMS 読み取ります。

```
s3://amzn-s3-demo-bucket/sourcedata/hr/employee
```

追加の接続属性を使用して、列の区切り文字、行の区切り文字、null 値のインジケータ、およびその他のパラメータを指定できます。詳細については、「[のソースとしての Amazon S3 のエンドポイント設定 AWS DMS](#CHAP_Source.S3.Configuring)」を参照してください。

次のとおり、`ExpectedBucketOwner` Amazon S3 エンドポイント設定を使用してバケット所有者を指定して、スナイプ攻撃を防ぐことができます。その後、接続をテストしたり移行の実行をリクエストしたりすると、S3 は指定されたパラメータに対してバケット所有者のアカウント ID をチェックします。

```
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
```

**Topics**
+ [Amazon S3 の外部テーブルを のソースとして定義する AWS DMS](#CHAP_Source.S3.ExternalTableDef)
+ [のソースとしての Amazon S3 での CDC の使用 AWS DMS](#CHAP_Source.S3.CDC)
+ [のソースとして Amazon S3 を使用する場合の前提条件 AWS DMS](#CHAP_Source.S3.Prerequisites)
+ [のソースとして Amazon S3 を使用する場合の制限 AWS DMS](#CHAP_Source.S3.Limitations)
+ [のソースとしての Amazon S3 のエンドポイント設定 AWS DMS](#CHAP_Source.S3.Configuring)
+ [Amazon S3 のソースデータ型](#CHAP_Source.S3.DataTypes)
+ [Amazon S3 の Parquet 形式のファイルを のソースとして使用する AWS DMS](#CHAP_Source.S3.Parquet)

## Amazon S3 の外部テーブルを のソースとして定義する AWS DMS
<a name="CHAP_Source.S3.ExternalTableDef"></a>

データファイルに加えて、外部テーブル定義も指定する必要があります。*外部テーブル定義*は、 が Amazon S3 AWS DMS からデータを解釈する方法を説明する JSON ドキュメントです。このドキュメントの最大サイズは 2 MB です。 AWS DMS マネジメントコンソールを使用してソースエンドポイントを作成する場合は、テーブルマッピングボックスに JSON を直接入力できます。 AWS Command Line Interface (AWS CLI) または AWS DMS API を使用して移行を実行する場合は、JSON ファイルを作成して外部テーブル定義を指定できます。

以下のものが含まれるデータファイルがあるとします。

```
101,Smith,Bob,2014-06-04,New York
102,Smith,Bob,2015-10-08,Los Angeles
103,Smith,Bob,2017-03-13,Dallas
104,Smith,Bob,2017-03-13,Dallas
```

このデータ用の外部テーブル定義の例を次に示します。

```
{
    "TableCount": "1",
    "Tables": [
        {
            "TableName": "employee",
            "TablePath": "hr/employee/",
            "TableOwner": "hr",
            "TableColumns": [
                {
                    "ColumnName": "Id",
                    "ColumnType": "INT8",
                    "ColumnNullable": "false",
                    "ColumnIsPk": "true"
                },
                {
                    "ColumnName": "LastName",
                    "ColumnType": "STRING",
                    "ColumnLength": "20"
                },
                {
                    "ColumnName": "FirstName",
                    "ColumnType": "STRING",
                    "ColumnLength": "30"
                },
                {
                    "ColumnName": "HireDate",
                    "ColumnType": "DATETIME"
                },
                {
                    "ColumnName": "OfficeLocation",
                    "ColumnType": "STRING",
                    "ColumnLength": "20"
                }
            ],
            "TableColumnsTotal": "5"
        }
    ]
}
```

この JSON ドキュメントの要素は次のとおりです。

`TableCount` - ソーステーブルの数。この例では、テーブルは 1 つしかありません。

`Tables` - ソーステーブルあたり 1 つの JSON マップで構成される配列。この例では、マップは 1 つしかありません。各マップは以下の要素で構成されています。
+ `TableName` - ソーステーブルの名前。
+ `TablePath` - AWS DMS が全データ ロード ファイルを見つけることができる Amazon S3 バケット内のパス。`bucketFolder` の値を指定した場合、この値がパスの先頭に付加されます。
+ `TableOwner` - このテーブルのスキーマ名。
+ `TableColumns` - 1 つ以上のマップの配列、それぞれがソーステーブルの列を記述します：
  + `ColumnName` - ソーステーブルの列の名前。
  + `ColumnType` - 列のデータ型。有効なデータ型については、「[Amazon S3 のソースデータ型](#CHAP_Source.S3.DataTypes)」をご参照ください。
  + `ColumnLength` - この列のバイト数。S3 ソースが完全 LOB モードをサポートしていないため、列の最大長は 2147483647 バイト (2,047 メガバイト) に制限されています。`ColumnLength` は次のデータ型に対して有効です：
    + BYTE
    + STRING
  + `ColumnNullable` - この列に NULL 値を含めることができる場合、`true` であるブール値 (デフォルト = `false`)。
  + `ColumnIsPk` - この列がプライマリ キーの一部である場合、`true` であるブール値 (デフォルト = `false`)。
  + `ColumnDateFormat` – DATE 型、TIME 型、DATETIME 型の列の入力日付形式。データ文字列を日付オブジェクトに解析するために使用される。可能な値は以下のとおりです:

    ```
    - YYYY-MM-dd HH:mm:ss
    - YYYY-MM-dd HH:mm:ss.F
    - YYYY/MM/dd HH:mm:ss
    - YYYY/MM/dd HH:mm:ss.F
    - MM/dd/YYYY HH:mm:ss
    - MM/dd/YYYY HH:mm:ss.F
    - YYYYMMdd HH:mm:ss
    - YYYYMMdd HH:mm:ss.F
    ```
+ `TableColumnsTotal` - 列の総数。この番号は、`TableColumns` 配列内の要素数と一致している必要があります。

特に指定しない場合、 `ColumnLength`は を 0 AWS DMS とします。

**注記**  
サポートされているバージョンの では AWS DMS、S3 ソースデータには、列値の前の最初の列としてオプションのオペレーション`TableName`列を含めることもできます。このオペレーション列は、フルロード時にデータを S3 ターゲットエンドポイントに移行するために使用されるオペレーション (`INSERT`) を識別します。  
存在する場合、この列の値は `INSERT` オペレーションキーワードの最初の文字 (`I`) です。指定されている場合、この列は通常、S3 ソースが以前の移行中に S3 ターゲットとして DMS によって作成されたことを示します。  
3.4.2 以前の DMS バージョンでは、この列は以前の DMS 全ロードから作成された S3 ソースデータにはありませんでした。この列を S3 ターゲットデータに追加すると、S3 ターゲットに書き込まれるすべての行の形式を、全ロード中に書き込まれたか、CDC ロード中に書き込まれたかにかかわらず一貫させることができます。S3 ターゲットデータをフォーマットするオプションの詳細については、「[移行済み S3 データでのソース DB オペレーションの表示](CHAP_Target.S3.md#CHAP_Target.S3.Configuring.InsertOps)」をご参照ください。

NUMERIC 型の列の場合は、精度とスケールを指定します。*精度*は数値の桁の合計数であり、*スケール*は小数点以下の桁数です。次に示すように、これには `ColumnPrecision` および `ColumnScale` 要素を使用します。

```
...
    {
        "ColumnName": "HourlyRate",
        "ColumnType": "NUMERIC",
        "ColumnPrecision": "5"
        "ColumnScale": "2"
    }
...
```

秒の小数部分を含むデータを持つ DATETIME 型の列の場合は、スケールを指定します。*[Scale]* (スケール) は小数秒の桁数で、0 ～ 9 の範囲で指定できます。次に示すように、これには `ColumnScale` 要素を使用します。

```
...
{
      "ColumnName": "HireDate",
      "ColumnType": "DATETIME",
      "ColumnScale": "3"
}
...
```

特に指定しない場合、 `ColumnScale`はゼロ AWS DMS であると仮定し、小数秒を切り捨てます。

## のソースとしての Amazon S3 での CDC の使用 AWS DMS
<a name="CHAP_Source.S3.CDC"></a>

が全データロード AWS DMS を実行すると、オプションでターゲットエンドポイントにデータ変更をレプリケートできます。これを行うには、変更データキャプチャファイル (CDC ファイル) を Amazon S3 バケットにアップロードします。これらの CDC ファイルは、アップロード時に AWS DMS 読み取り、ターゲットエンドポイントに変更を適用します。

CDC ファイルは次のように名前が付けられます。

```
CDC00001.csv
CDC00002.csv
CDC00003.csv
...
```

**注記**  
変更データフォルダ内の CDC ファイルをレプリケートするには、辞書と同じ (順次) 順序で正常にアップロードします。たとえば、ファイル CDC00002.csv はファイル CDC00003.csv より前にアップロードします。そうしないと、CDC00002.csv はスキップされ、CDC00003.csv の後にロードするとレプリケートされません。一方、ファイル CDC00004.csv は、CDC00003.csv の後にロードされた場合に正常にレプリケートされます。

がファイルを見つける AWS DMS 場所を指定するには、 `cdcPath`パラメータを指定します。前の例を続けると、`cdcPath` を `changedata` に設定した場合、 AWS DMS は次のパスで CDC ファイルを読み取ります。

```
s3://amzn-s3-demo-bucket/changedata
```

`cdcPath` を `changedata` に、`bucketFolder` を `myFolder` に設定した場合、 AWS DMS は次のパスで CDC ファイルを読み取ります。

```
s3://amzn-s3-demo-bucket/myFolder/changedata
```

CDC ファイル内のレコードは次のような形式になります。
+ オペレーション - 実行する変更オペレーション: `INSERT` または `I`、`UPDATE` または `U`、`DELETE` または `D`。これらのキーワードと文字値では大文字と小文字は区別されません。
**注記**  
サポートされている AWS DMS バージョンでは、 は各ロードレコードに対して実行するオペレーションを 2 つの方法で識別 AWS DMS できます。 AWS DMS は、レコードのキーワード値 ( など`INSERT`) またはキーワードの先頭文字 ( など) からこれを実行できます`I`。以前のバージョンでは、 は完全なキーワード値からのみロードオペレーション AWS DMS を認識しました。  
以前のバージョンでは AWS DMS、CDC データをログに記録するために完全なキーワード値が書き込まれていました。さらに以前のバージョンでは、キーワード [initial] のみを使用して、S3 ターゲットにオペレーション値を書き込みました。  
両方の形式を認識する AWS DMS と、 は S3 ソースデータを作成するためのオペレーション列の書き込み方法に関係なく、オペレーションを処理できます。このアプローチでは、後の移行のソースとして S3 ターゲットデータを使用できます このアプローチでは、後の S3 ソースのオペレーション列に表示されるキーワードの初期値の形式を変更する必要はありません。
+ テーブル名 - ソーステーブルの名前。
+ スキーマ名 - ソーススキーマの名前。
+ データ - 変更するデータを表す 1 つまたは複数の列。

`employee` という名前のテーブルの CDC ファイルの例を次に示します。

```
INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York
UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles
UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
```

## のソースとして Amazon S3 を使用する場合の前提条件 AWS DMS
<a name="CHAP_Source.S3.Prerequisites"></a>

Amazon S3 を のソースとして使用するには AWS DMS、ソース S3 バケットがデータを移行する DMS レプリケーションインスタンスと同じ AWS リージョンにある必要があります。また、移行に使用する AWS アカウントには、ソースバケットへの読み取りアクセスも必要です。 AWS DMS バージョン 3.4.7 以降では、DMS は VPC エンドポイントまたはパブリックルートを介してソースバケットにアクセスする必要があります。VPC エンドポイントの詳細については、「[の VPC エンドポイントの設定 AWS DMS](CHAP_VPC_Endpoints.md)」を参照してください。

移行タスクの作成に使用されるユーザーアカウントに割り当てられた AWS Identity and Access Management (IAM) ロールには、次のアクセス許可のセットが必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*"
            ]
        }
    ]
}
```

------

移行タスクの作成に使用されるユーザーアカウントに割り当てられた AWS Identity and Access Management (IAM) ロールには、Amazon S3 バケットでバージョニングが有効になっている場合、次のアクセス許可のセットが必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*"
            ]
        }
    ]
}
```

------

## のソースとして Amazon S3 を使用する場合の制限 AWS DMS
<a name="CHAP_Source.S3.Limitations"></a>

Amazon S3 をソースとして使用する場合、次の制限が適用されます。
+ S3 のバージョニングは有効にしません。S3 のバージョニングが必要な場合は、ライフサイクルポリシーを使用して古いバージョンを積極的に削除します。これを行わないと、S3 `list-object` コールのタイムアウトが原因でエンドポイント接続テストが失敗する可能性があります。S3 バケットのライフサイクルポリシーを作成するには、「[ストレージのライフサイクルの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」を参照してください。S3 オブジェクトのバージョンを削除するには、「[バージョニングが有効なバケットからのオブジェクトバージョンの削除](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html)」を参照してください。
+ VPC 対応 (ゲートウェイ VPC) S3 バケットはバージョン 3.4.7 以降でサポートされます。
+ MySQL は `time` データ型を `string` に変換します。MySQL で `time` データ型値を表示するには、ターゲットテーブルの列を `string` として定義し、タスクの**[ターゲットテーブル準備モード]** 設定を **[切り捨て]** に設定します。
+ AWS DMS は、 `BYTE`と `BYTE` データ型の両方のデータに内部的に `BYTES` データ型を使用します。
+ S3 ソースエンドポイントは、DMS テーブルの再ロード機能をサポートしていません。
+ AWS DMS はAmazon S3とするフル LOB モードをサポートしていません。

Amazon S3 で Parquet 形式のファイルをソースとして使用する場合、次の制限が適用されます。
+ `MMYYYYDD` または `DDMMYYYY` 形式の日付は、S3 Parquet ソースの日付パーティション分割機能ではサポートされていません。

## のソースとしての Amazon S3 のエンドポイント設定 AWS DMS
<a name="CHAP_Source.S3.Configuring"></a>

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ソースの Amazon S3 データベースを設定できます。 AWS DMS コンソールを使用するか、`--s3-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

**注記**  
AWS DMS は、SSL モードや証明書を指定することなく、Amazon S3 エンドポイントへの安全な接続をデフォルトにします。

次の表は、ソースとして Amazon S3 を使用できるエンドポイント設定を説明しています。


| **オプション** | **説明** | 
| --- | --- | 
| BucketFolder |  (オプション) S3 バケットのフォルダ名。この属性を指定すると、ソースデータ ファイルおよび CDC ファイルがそれぞれパス `s3://amzn-s3-demo-bucket/bucketFolder/schemaName/tableName/` と `s3://amzn-s3-demo-bucket/bucketFolder/` から読み取られます。この属性が指定されない場合、使用されるパスは `schemaName/tableName/` となります。 `'{"BucketFolder": "sourceData"}'`  | 
| BucketName |  S3 バケットの名前。 `'{"BucketName": "amzn-s3-demo-bucket"}'`  | 
| CdcPath | CDC ファイルの場所。タスクで変更データをキャプチャする場合、この属性が必須です。それ以外の場合はオプションです。が存在する場合、 CdcPathはこのパスから CDC ファイルを AWS DMS 読み取り、データ変更をターゲットエンドポイントにレプリケートします。詳細については、「[のソースとしての Amazon S3 での CDC の使用 AWS DMS](#CHAP_Source.S3.CDC)」を参照してください。`'{"CdcPath": "changeData"}'`  | 
| CsvDelimiter |  ソースファイル内の列を分離するために使用される区切り文字。デフォルトではカンマを使用します。以下に例を示します。 `'{"CsvDelimiter": ","}'`  | 
| CsvNullValue |  ソースから読み取るときに null として AWS DMS 扱うユーザー定義の文字列。デフォルトは空の文字列です。このパラメータを設定しない場合、 は空の文字列を null 値として AWS DMS 扱います。このパラメータを「\$1N」などの文字列に設定すると、 はこの文字列を null 値として AWS DMS 扱い、空の文字列を空の文字列値として扱います。  | 
| CsvRowDelimiter |  ソースファイル内の行を分離するために使用される区切り文字。デフォルトでは、改行 (`\n`) です。 `'{"CsvRowDelimiter": "\n"}'`  | 
| DataFormat |  Parquet 形式のデータを読み取るには、この値を `Parquet` に設定します。 `'{"DataFormat": "Parquet"}'`  | 
| IgnoreHeaderRows |  この値を 1 に設定すると、 は .csv ファイルの最初の行ヘッダー AWS DMS を無視します。値が 1 の場合は機能が有効になり、値が 0 の場合は機能が無効になります。 デフォルトは 0 です。 `'{"IgnoreHeaderRows": 1}'`  | 
| Rfc4180 |  この値を `true` または `y` に設定するときは、先頭の二重引用符にはそれぞれ終了の二重引用符が続く必要があります。このフォーマットは、RFC 4180 に準拠しています。この値を `false` または `n` に設定すると、文字列リテラルはターゲットにそのままコピーされます。この場合、区切り文字 (行または列) はフィールドの末尾を表します。したがって、区切り文字は値の末尾を示すため、これを文字列の一部とすることはできません。 デフォルトは `true` です。 有効な値: `true`、`false`、`y`、`n` `'{"Rfc4180": false}'`  | 

## Amazon S3 のソースデータ型
<a name="CHAP_Source.S3.DataTypes"></a>

のソースとして Amazon S3 を使用するデータ移行では、Amazon S3 から AWS DMS データ型にデータをマッピング AWS DMS する必要があります。詳細については、「[Amazon S3 の外部テーブルを のソースとして定義する AWS DMS](#CHAP_Source.S3.ExternalTableDef)」を参照してください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。

次の AWS DMS データ型はAmazon S3をソースとして使用します。
+ BYTE - `ColumnLength` が必要です。詳細については、「[Amazon S3 の外部テーブルを のソースとして定義する AWS DMS](#CHAP_Source.S3.ExternalTableDef)」を参照してください。
+ DATE
+ TIME
+ DATETIME – 詳細と例については、「[Amazon S3 の外部テーブルを のソースとして定義する AWS DMS](#CHAP_Source.S3.ExternalTableDef)」の DATETIME 型の例を参照。
+ INT1
+ INT2
+ INT4
+ INT8
+ NUMERIC – `ColumnPrecision`と が必要です`ColumnScale`。 は次の最大値 AWS DMS をサポートします。
  + **ColumnPrecision: 38**
  + **ColumnScale: 31**

  詳細と例については、「[Amazon S3 の外部テーブルを のソースとして定義する AWS DMS](#CHAP_Source.S3.ExternalTableDef)」の NUMERIC 型の例を参照。
+ REAL4
+ REAL8
+ STRING - `ColumnLength` が必要です。詳細については、「[Amazon S3 の外部テーブルを のソースとして定義する AWS DMS](#CHAP_Source.S3.ExternalTableDef)」をご参照ください。
+ UINT1
+ UINT2
+ UINT4
+ UINT8
+ BLOB
+ CLOB
+ BOOLEAN

## Amazon S3 の Parquet 形式のファイルを のソースとして使用する AWS DMS
<a name="CHAP_Source.S3.Parquet"></a>

 AWS DMS バージョン 3.5.3 以降では、S3 バケットの Parquet 形式のファイルをフルロードレプリケーションと CDC レプリケーションの両方のソースとして使用できます。

DMS は、データを S3 ターゲットエンドポイントに移行することで DMS が生成するソースとして Parquet 形式のファイルのみをサポートしています。ファイル名はサポートされている形式である必要があります。そうでない場合、DMS は移行に含めません。

Parquet 形式のソースデータファイルは、次のフォルダと命名規則に従っている必要があります。

```
schema/table1/LOAD00001.parquet
schema/table2/LOAD00002.parquet
schema/table2/LOAD00003.parquet
```

Parquet 形式の CDC データのソースデータファイルの場合、次のフォルダと命名規則を使用して、名前を付けて保存します。

```
schema/table/20230405-094615814.parquet
schema/table/20230405-094615853.parquet
schema/table/20230405-094615922.parquet
```

Parquet 形式のファイルにアクセスするには、次のエンドポイント設定を設定します。
+ `DataFormat` を `Parquet` に設定します。
+ `cdcPath` 設定は設定しないでください。指定されたスキーマ / テーブルフォルダで Parquet 形式のファイルを作成してください。

S3 エンドポイント設定の詳細については、「*AWS Database Migration Service API リファレンス*」の「[S3Settings](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html)」を参照してください。

### Parquet 形式のファイルでサポートされているデータ型
<a name="CHAP_Source.S3.Parquet.Datatypes"></a>

AWS DMS は、Parquet 形式のファイルからデータを移行するときに、次のソースデータ型とターゲットデータ型をサポートします。移行する前に、ターゲットテーブルに正しいデータ型の列があることを確認します。


| ソースデータ型 | ターゲットのデータ型 | 
| --- | --- | 
| BYTE | BINARY | 
| DATE | DATE32 | 
| TIME | TIME32 | 
| DATETIME | TIMESTAMP | 
| INT1 | INT8 | 
| INT2 | INT16 | 
| INT4 | INT32 | 
| INT8 | INT64 | 
| NUMERIC | DECIMAL | 
| REAL4 | FLOAT | 
| REAL8 | DOUBLE | 
| STRING | STRING | 
| UINT1 | UINT8 | 
| UINT2 | UINT16 | 
| UINT4 | UINT32 | 
| UINT8 | UINT | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 

# IBM Db2 for Linux、Unix、Windows、Amazon RDS データベース (Db2 LUW) を のソースとして使用する AWS DMS
<a name="CHAP_Source.DB2"></a>

 AWS Database Migration Service () を使用して、IBM Db2 for Linux、Unix、Windows、Amazon RDS (Db2 LUW) データベースからサポートされている任意のターゲットデータベースにデータを移行できますAWS DMS。

がソースとして AWS DMS サポートする Linux、Unix、Windows、RDS での Db2 のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

Secure Sockets Layer (SSL) を使用して、Db2 LUW エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Db2 LUW エンドポイントで SSL を使用する方法の詳細については、「[での SSL の使用 AWS Database Migration Service](CHAP_Security.SSL.md)」をご参照ください。

は、IBM Db2 ソースデータベースからデータ AWS DMS を読み取るときに、Db2 バージョン 9.7 以降のデフォルトの分離レベル CURSOR STABILITY (CS) を使用します。詳細については、「[IBM Db2 for Linux, UNIX and Windows](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 for 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)」を参照してください。
+ 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) テーブルの更新を実行すると、各更新は INSERT \$1 DELETE として AWS DMS コンソールに表示されます。
+ タスクの設定 [**レプリケーションに LOB 列を含める**] が有効でない場合、LOB 列を持つテーブルは、継続的なレプリケーション中に中断されます。
+ Db2 LUW バージョン 10.5 以上の場合: 行外に格納されたデータを含む可変長文字列は無視されます。この制限は、VARCHAR や VARGRAPHIC などのデータ型を持つ列の拡張行サイズを使用して作成されたテーブルにのみ適用されます。この制限を回避するには、テーブルをページサイズの大きいテーブルスペースに移動します。詳細については、「[What can I do if I want to change the pagesize of DB2 tablespaces]( 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)」をご参照ください。
+ レプリケーションタスクの実行中、DMS が CREATE TABLE DDL をキャプチャするのは、テーブルが DATA CAPTURE CHANGE 属性で作成された場合のみです。
+ Db2 データベースパーティション機能 (DPF) を使用する場合、DMS には次の制限があります。
  + DMS は、DPF 環境内の Db2 ノード間でトランザクションを調整できません。これは、IBM DB2READLOG API インターフェイス内の制約によるものです。DPF では、DB2 のデータのパーティション化の方法に応じて、トランザクションが複数の Db2 ノードにまたがる場合があります。その結果、DMS ソリューションは各 Db2 ノードからトランザクションを個別にキャプチャする必要があります。
  + DMS は、複数の DMS ソースエンドポイントで `connectNode` を `1` に設定することで、DPF クラスターの各 Db2 ノードからローカルトランザクションをキャプチャできます。この設定は、DB2 サーバー設定ファイル `db2nodes.cfg` で定義されている論理ノード番号に対応します。
  + 個々の Db2 ノードのローカルトランザクションは、大規模なグローバルトランザクションの一部である場合があります。DMS は、他の Db2 ノードのトランザクションと調整することなく、各ローカルトランザクションを個別にターゲットに適用します。この独立した処理は、特にパーティション間で行を移動する場合に複雑になる可能性があります。
  + DMS が複数の Db2 ノードからレプリケートする場合、DMS は各 Db2 ノードに独立してオペレーションを適用するため、ターゲットにおいて正しいオペレーション順序は保証されません。各 Db2 ノードから独立してローカルトランザクションをキャプチャすることが、特定のユースケースで機能することを確認する必要があります。
  + DPF 環境から移行する場合は、まずキャッシュされたイベントなしでフルロードタスクを実行し、次に CDC のみのタスクを実行することをお勧めします。`StartFromContext` エンドポイントの追加接続属性を使用して設定した全ロード開始タイムスタンプまたは LRI (ログレコード識別子) から、Db2 ノードごとに 1 つのタスクを実行することをお勧めします。レプリケーション開始点の決定については、「*IBM Support documentation*」の「[Finding the LSN or LRI value for replication start](https://www.ibm.com/support/pages/db2-finding-lsn-or-lri-value-replication-start)」を参照してください。
+ 継続的なレプリケーション (CDC) の場合、特定のタイムスタンプからレプリケーションを開始する場合は、`StartFromContext`追加の接続属性を必要なタイムスタンプに設定する必要があります。
+ データベースソリューションのスケーリングに使用できる DB2 LUW の拡張機能である Db2 PureScale 機能は、DMS では現時点ではサポートしていません。
+ `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>

追加の接続属性 (ECAs) は、 AWS DMS コンソールを使用してソースエンドポイントを作成するとき、または で `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 秒です。 例: `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/ja_jp/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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 を使用するデータ移行は、ほとんどの Db2 LUW データ型 AWS DMS をサポートします。次の表は、 の使用時にサポートされる 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 以下の 2 バイト文字の固定長グラフィック文字列用  | 
|  VARGRAPHIC (n)  |  WSTRING、長さが 0 より大きく 16,352 以下の 2 バイト文字の可変長グラフィック文字列用  | 
|  LONG VARGRAPHIC (n)  |  CLOB、長さが 0 より大きく 16,352 以下の 2 バイト文字の可変長グラフィック文字列用  | 
|  CHARACTER (n)  |  STRING、長さが 0 より大きく 255 以下の 2 バイト文字の固定長文字列用  | 
|  VARCHAR(n)  |  STRING、長さが 0 より大きく 32,704 以下の 2 バイト文字の可変長文字列用  | 
|  LONG VARCHAR (n)  |  CLOB、長さが 0 より大きく 32,704 以下の 2 バイト文字の可変長文字列用  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  タイムスタンプ  |  DATETIME  | 
|  BLOB (n)  |  BLOB 最大長は 2,147,483,647 バイト  | 
|  CLOB (n)  |  CLOB 最大長は 2,147,483,647 バイト  | 
|  DBCLOB (n)  |  CLOB 最大サイズは 1,073,741,824 の 2 バイト文字  | 
|  XML  |  CLOB  | 

# IBM Db2 for z/OS データベースを のソースとして使用する AWS DMS
<a name="CHAP_Source.DB2zOS"></a>

 AWS Database Migration Service (AWS DMS) を使用して、IBM for z/OS データベースから、サポートされているすべてのターゲットデータベースにデータを移行できます。

がソースとして AWS DMS サポートする Db2 for z/OS のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

## のソースとして Db2 for z/OS を使用する場合の前提条件 AWS DMS
<a name="CHAP_Source.DB2zOS.Prerequisites"></a>

で IBM Db2 for z/OS データベースをソースとして使用するには AWS DMS、ソースエンドポイント接続設定で指定された Db2 for z/OS ユーザーに次の権限を付与します。

```
GRANT SELECT ON SYSIBM.SYSTABLES TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLESPACE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLEPART TO Db2USER;                    
GRANT SELECT ON SYSIBM.SYSCOLUMNS TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDATABASE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDUMMY1 TO Db2USER
```

`user defined` ソーステーブルでの SELECT ON 権限も付与します。

 AWS DMS IBM Db2 for z/OS ソースエンドポイントは、データにアクセスするために ODBC 用の IBM データサーバードライバーに依存しています。DMS がこのエンドポイントに接続するには、データベースサーバーに有効な IBM ODBC Connect ライセンスが必要です。

## のソースとして Db2 for z/OS を使用する場合の制限 AWS DMS
<a name="CHAP_Source.DB2zOS.Limitations"></a>

IBM Db2 for z/OS データベースを AWS DMSのソースとして使用する場合、以下の制限が適用されます。
+ サポートされるのは、フルロードのレプリケーションタスクのみです。変更データキャプチャ (CDC) はサポートされません。
+ 並列ロードはサポートされません。
+ ビューのデータ検証はサポートされません。
+ 列またはテーブルレベルの変換と行レベルの選択フィルターでは、テーブルマッピングでスキーマ、テーブル、列の名前を大文字で指定する必要があります。

## ソースの IBM Db2 for z/OS のデータ型
<a name="CHAP_Source.DB2zOS.DataTypes"></a>

のソースとして Db2 for z/OS を使用するデータ移行は、ほとんどの Db2 for z/OS データ型 AWS DMS をサポートします。次の表は、 の使用時にサポートされる Db2 for z/OS ソースデータ型と AWS DMS、 AWS DMS データ型からのデフォルトのマッピングを示しています。

Db2 for z/OS のデータ型の詳細については、「[IBM Db2 for z/OS のドキュメント](https://www.ibm.com/docs/en/db2-for-zos/12?topic=elements-data-types)」を参照してください。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。


|  Db2 for z/OS のデータ型  |  AWS DMS データ型  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s) DB2 の設定で小数点がカンマ (,) に設定されている場合は、DB2 設定をサポートするように Replicate を設定する。  | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  精度が 16 の場合は REAL8 で、精度が 34 の場合は STRING  | 
|  GRAPHIC (n)  |  n>=127 の場合は WSTRING、長さが 0 より大きく 127 以下の 2 バイト文字の固定長グラフィック文字列用  | 
|  VARGRAPHIC (n)  |  WSTRING、長さが 0 より大きく 16,352 以下の 2 バイト文字の可変長グラフィック文字列用  | 
|  LONG VARGRAPHIC (n)  |  CLOB、長さが 0 より大きく 16,352 以下の 2 バイト文字の可変長グラフィック文字列用  | 
|  CHARACTER (n)  |  STRING、長さが 0 より大きく 255 以下の 2 バイト文字の固定長文字列用  | 
|  VARCHAR(n)  |  STRING、長さが 0 より大きく 32,704 以下の 2 バイト文字の可変長文字列用  | 
|  LONG VARCHAR (n)  |  CLOB、長さが 0 より大きく 32,704 以下の 2 バイト文字の可変長文字列用  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  タイムスタンプ  |  DATETIME  | 
|  BLOB (n)  |  BLOB 最大長は 2,147,483,647 バイト  | 
|  CLOB (n)  |  CLOB 最大長は 2,147,483,647 バイト  | 
|  DBCLOB (n)  |  CLOB 最大サイズは 1,073,741,824 の 2 バイト文字  | 
|  XML  |  CLOB  | 
|  BINARY  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  ROWID  |  BYTES ROWID の使用方法の詳細については、次を参照。  | 
|  TIMESTAMP WITH TIME ZONE  |  サポート外。  | 

タスクのターゲットテーブル準備モードが DROP\$1AND\$1CREATE (デフォルト) に設定されている場合、ROWID 列はデフォルトで移行されます。特定のデータベースやテーブル以外では意味をなさないため、このような列はデータ検証では無視されます。このような列の移行を無効にするには、次のいずれかの準備ステップで実行できます。
+ このような列を含まないターゲットテーブルを事前に作成します。次に、タスクのターゲットテーブル準備モードを DO\$1NOTHING または TRUNCATE\$1BEFORE\$1LOAD のいずれかに設定します。 AWS Schema Conversion Tool (AWS SCT) を使用して、列なしでターゲットテーブルを事前に作成できます。
+ このような列を除外して無視するテーブルマッピングルールをタスクに追加します。詳細については、「[変換ルールおよび変換アクション](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md)」を参照してください。

## PostgreSQL for AWS Mainframe Modernization サービスの EBCDIC 照合順序
<a name="CHAP_Source.DB2zOS.EBCDIC"></a>

AWS Mainframe Modernization プログラムは、メインフレームアプリケーションを AWS マネージドランタイム環境にモダナイズするのに役立ちます。このサービスでは、移行とモダナイゼーションの計画と実装に役立つツールとリソースを提供しています。メインフレームのモダナイゼーションと移行の詳細については、[「 Mainframe Modernization with AWS](https://aws.amazon.com/mainframe/)」を参照してください。

IBM Db2 for z/OS のデータセットによっては、Extended Binary Coded Decimal Interchange (EBCDIC) 文字セットでエンコードされています。これは ASCII (米国情報交換標準コード) が一般的に使用されるようになる以前に開発された文字セットです。**コードページを使用して、テキストの各文字を文字セット内の文字にマップします。従来のコードページには、コードポイントと文字 ID の間のマッピング情報が含まれています。**文字 ID は 8 バイトの文字データ文字列です。**コードポイントは文字を表す 8 ビットの 2 進数です。コードポイントは通常、2 進値の 16 進数表現として示されます。

現在 Mainframe Modernization サービスの Micro Focus または BluAge コンポーネントを使用している場合は、特定のコードポイントを*シフト* (翻訳) AWS DMS するように に指示する必要があります。 AWS DMS タスク設定を使用してシフトを実行できます。次の例は、 オペレーションを使用して AWS DMS `CharacterSetSettings` DMS タスク設定のシフトをマッピングする方法を示しています。

```
"CharacterSetSettings": {
        "CharacterSetSupport": null,
        "CharacterReplacements": [
{"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
            }
        ]
    }
```

必要なシフトを認識するためのいくつかの EBCDIC 照合順序が PostgreSQL 向けに既に提供されています。複数の異なるコードページがサポートされています。次のセクションでは、サポートされているすべてのコードページで変更する必要がある点の JSON サンプルを提供しています。DMS タスクに必要となる JSON コードをコピーして貼り付けるだけです。

### Micro Focus 専用 EBCDIC 照合順序
<a name="CHAP_Source.DB2zOS.EBCDIC.MicroFocus"></a>

Micro Focus では、必要に応じて文字のサブセットを次の照合順序にシフトします。

```
 da-DK-cp1142m-x-icu
 de-DE-cp1141m-x-icu
 en-GB-cp1146m-x-icu
 en-US-cp1140m-x-icu
 es-ES-cp1145m-x-icu
 fi-FI-cp1143m-x-icu
 fr-FR-cp1147m-x-icu
 it-IT-cp1144m-x-icu
 nl-BE-cp1148m-x-icu
```

**Example Micro Focus のデータは次のとおり照合ごとにシフトします。**  
**en\$1us\$1cp1140m**  
コードシフト:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1141m**  
コードシフト:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1142m**  
コードシフト:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1143m**  
コードシフト:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1144m**  
コードシフト:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1145m**  
コードシフト:  

```
0000    0180
00A6    0160
00B8    0161
00A8    017D
00BC    017E
00BD    0152
00BE    0153
00B4    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1146m**  
コードシフト:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1147m**  
コードシフト:  

```
0000    0180
00B8    0160
00A8    0161
00BC    017D
00BD    017E
00BE    0152
00B4    0153
00A6    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1148m**  
コードシフト:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```

### BluAge 専用 EBCDIC 照合順序
<a name="CHAP_Source.DB2zOS.EBCDIC.BluAge"></a>

BluAge の場合、必要に応じて**低い値と**高い値をすべてシフトします。この照合順序の使用は、Mainframe Migration の BluAge サービスをサポートする目的に限定されます。

```
da-DK-cp1142b-x-icu
 da-DK-cp277b-x-icu
 de-DE-cp1141b-x-icu
 de-DE-cp273b-x-icu
 en-GB-cp1146b-x-icu
 en-GB-cp285b-x-icu
 en-US-cp037b-x-icu
 en-US-cp1140b-x-icu
 es-ES-cp1145b-x-icu
 es-ES-cp284b-x-icu
 fi-FI-cp1143b-x-icu
 fi-FI-cp278b-x-icu 
 fr-FR-cp1147b-x-icu
 fr-FR-cp297b-x-icu
 it-IT-cp1144b-x-icu
 it-IT-cp280b-x-icu
 nl-BE-cp1148b-x-icu
 nl-BE-cp500b-x-icu
```

**Example BluAge データシフト:**  
**da-DK-cp277b** と **da-DK-cp1142b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**de-DE-273b** と **de-DE-1141b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-GB-285b** と **en-GB-1146b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-us-037b** と **en-us-1140b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**es-ES-284b** と **es-ES-1145b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fi\$1FI-278b** と **fi-FI-1143b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fr-FR-297b** と **fr-FR-1147b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**it-IT-280b** と **it-IT-1144b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**nl-BE-500b** と **nl-BE-1148b**  
コードシフト:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
 AWS DMS タスクに対応する入力マッピング:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```