

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

# AWS SCT と AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行する AWS CLI CloudFormation
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation"></a>

*Amazon Web Services、Pinesh Singal*

## 概要
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-summary"></a>

このパターンは、 AWS Command Line Interface ([) を使用して、Oracle DB インスタンス用のマルチテラバイト Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)) を [Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) DB インスタンスに移行する方法を示していますAWS CLI。この方法によりダウンタイムが最小限に抑えられます。また、 AWS マネジメントコンソールにサインインする必要もありません。

このパターンは、 AWS Schema Conversion Tool (AWS SCT) コンソールと AWS Database Migration Service (AWS DMS) コンソールを使用して、手動設定や個々の移行を回避するのに役立ちます。このソリューションは、複数のデータベースに対して 1 回限りの設定をセットアップし、 AWS DMS で AWS SCT と を使用して移行を実行します AWS CLI。

このパターンでは、 を使用してデータベーススキーマオブジェクト AWS SCT を Amazon RDS for Oracle から Amazon RDS for PostgreSQL に変換し、 AWS DMS を使用してデータを移行します。で Python スクリプトを使用して AWS CLI、 CloudFormation テンプレートを使用して AWS SCT オブジェクトと AWS DMS タスクを作成します。

## 前提条件と制限事項
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-prereqs"></a>

**前提条件**
+ アクティブ AWS アカウント。
+ 既存の Amazon RDS for Oracle DB インスタンス。
+ 既存の Amazon RDS for PostgreSQL DB インスタンス。 
+ スクリプトを実行するための Windows または Linux OS を搭載した Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたはローカルマシン。
+ 次の AWS DMS 移行タスクタイプの理解: `full-load`、`cdc`、`full-load-and-cdc`。 詳細については、 AWS DMS ドキュメント[の「タスクの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html)」を参照してください。 
+ Oracle および PostgreSQL データベースエンジンの Java Database Connectivity (JDBC) ドライバーでインストールされ設定されたAWS SCT。詳細については、 AWS SCT ドキュメントの[「インストールと設定 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure)」を参照してください。 
+ インストールされた AWS SCT フォルダから作業ディレクトリにコピーされた `AWSSchemaConversionToolBatch.jar` ファイル。
+ `cli-sct-dms-cft.zip` ファイル (添付) はダウンロードされ、作業ディレクトリに抽出されます。
+ レ AWS DMS プリケーションインスタンスエンジンの最新バージョン。詳細については、 AWS サポート ドキュメントと[AWS DMS リリースノート](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReleaseNotes.html)の[AWS DMS 「レプリケーションインスタンスの作成方法](https://aws.amazon.com/premiumsupport/knowledge-center/create-aws-dms-replication-instance/)」を参照してください。 
+ AWS CLI バージョン 2。スクリプトが実行されている EC2 インスタンスまたは OS のアクセスキー ID、シークレットアクセスキー、およびデフォルト AWS リージョン 名を使用してインストールおよび設定されます。詳細については、 AWS CLI ドキュメントの[「 の最新バージョンのインストールまたは更新 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」および[「 の設定の構成 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。 
+  CloudFormation テンプレートに精通していること。詳細については、 CloudFormation ドキュメントの[「 CloudFormation の仕組み](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-overview.html)」を参照してください。 
+ スクリプトが実行される Amazon EC2 インスタンスまたは OS にインストールされ設定された Python バージョン 3。詳細については、[Python のドキュメント](https://docs.python.org/3/)を参照してください。 

機能制限
+ ソースである Amazon RDS for Oracle DB インスタンスの最小要件は次のとおりです: 
  + Enterprise、Standard、Standard One、Standard Two エディションの Oracle バージョン 12c (12.1.0.2、12.2.0.1)、18c (18.0.0.0)、19c (19.0.0.0)。
  + Amazon RDS は Oracle 18c (18.0.0.0) をサポートしていますが、サポート終了日以降は Oracle が 18c のパッチを提供しなくなるため、このバージョンは非推奨パスにあります。詳細については、Amazon RDS ドキュメントの「[Amazon RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.Deprecate.11204)」 を参照してください。
  + Amazon RDS for Oracle 11g はサポートされなくなりました。
+ ターゲット Amazon RDS for PostgreSQL DB インスタンスの最小要件は次のとおりです。 
  + PostgreSQL バージョン 9 (9.5 および 9.6)、10.x、11.x、12.x、および 13.x

**製品バージョン**
+ Amazon RDS for Oracle DB インスタンスバージョン 12.1.0.2 以降
+ Amazon RDS for PostgreSQL DB インスタンスバージョン 11.5 以降
+ AWS CLI バージョン 2 
+ の最新バージョン AWS SCT
+ Python 3 の 最新バージョン

## アーキテクチャ
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-architecture"></a>

**ソーステクノロジースタック**
+ Amazon RDS for Oracle

**ターゲットテクノロジースタック**
+ Amazon RDS for PostgreSQL

**ソースアーキテクチャとターゲットアーキテクチャ**

次の図は、 AWS DMS および Python スクリプトを使用した Amazon RDS for Oracle DB インスタンスの Amazon RDS for PostgreSQL DB インスタンスへの移行を示しています。

![\[AWS DMS と Python を使用して、RDS for Oracle DB インスタンスを RDS for PostgreSQL DB インスタンスに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5e041494-2e64-4f09-b6ec-0e0cba3a4972/images/77022e13-46fb-4aa8-ab49-85b0ca4c317a.png)


 

この図表は、次の移行ワークフローを示しています：

1. Python スクリプトは、 AWS SCT を使用してソース DB インスタンスとターゲット DB インスタンスに接続します。

1. ユーザーは Python スクリプト AWS SCT で開始し、Oracle コードを PostgreSQL コードに変換して、ターゲット DB インスタンスで実行します。

1. Python スクリプトは、ソース DB インスタンスとターゲット DB インスタンスの AWS DMS レプリケーションタスクを作成します。

1. ユーザーは Python スクリプトをデプロイして AWS DMS タスクを開始し、データ移行の完了後にタスクを停止します。

**自動化とスケール**

追加機能を提供するために、Python スクリプトにパラメータとセキュリティ関連の変更を追加することで、この移行を自動化できます。 

## ツール
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) は、コマンドラインシェルのコマンドを通じて AWS のサービスを操作するのに役立つオープンソースツールです。
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および リージョン全体のライフサイクルを通じて管理するために役立ちます。このパターンは、Python スクリプトを使用することで `.csv` 入力ファイルを `.json` 入力ファイルに変換します。`.json` ファイルは、Amazon リソースネーム (ARNs)、移行タイプ、タスク設定、テーブルマッピングを使用して複数の AWS DMS レプリケーションタスクを作成する CloudFormation スタックを作成する AWS CLI コマンドで使用されます。
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) を使用すると、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行できます。このパターンでは、 AWS DMS を使用して、コマンドラインで実行される Python スクリプトを使用してタスクを作成、開始、停止し、 CloudFormation テンプレートを作成します。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行をサポートします。このパターンでは、インストールされた AWS SCT ディレクトリの `AWSSchemaConversionToolBatch.jar` ファイルが必要です。

**Code**

`cli-sct-dms-cft.zip` ファイル (添付) には、このパターンの完全なソースコードが含まれています。

## エピック
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-epics"></a>

### でデータベースオブジェクトを設定 AWS SCT および作成する AWS CLI
<a name="configure-awssct-and-create-database-objects-in-the-cli"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| から を実行する AWS SCT ように を設定します AWS CLI。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html) | DBA | 
| `run_aws_sct.py` Python スクリプトを実行します。 | 次のコマンドを使用して、 `run_aws_sct.py` Python スクリプトを実行します。`$ python run_aws_sct.py database_migration.txt`Python スクリプトは、データベースオブジェクトを Oracle から PostgreSQL に変換し、PostgreSQL 形式の SQL ファイルを作成します。このスクリプトは、データベースオブジェクトの詳細な推奨事項と変換統計を提供する PDF ファイル `Database migration assessment report` も作成します。 | DBA | 
| Amazon RDS for PostgreSQL にオブジェクトを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html) | DBA | 

### および を使用して AWS DMS タスクを設定 AWS CLI および作成する CloudFormation
<a name="configure-and-create-dms-tasks-by-using-the-cli-and-cfn"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS DMS レプリケーションインスタンスを作成します。 | にサインインし AWS マネジメントコンソール、[AWS DMS コンソール](https://console.aws.amazon.com/dms/v2/)を開き、要件に従って設定されたレプリケーションインスタンスを作成します。詳細については、 AWS DMS ドキュメント[の「レプリケーションインスタンスの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html)」および AWS サポート ドキュメントの[AWS DMS 「レプリケーションインスタンスの作成方法](https://aws.amazon.com/premiumsupport/knowledge-center/create-aws-dms-replication-instance/)」を参照してください。 | DBA | 
| ソースエンドポイントを作成します。 |  AWS DMS コンソールで、**エンドポイント**を選択し、要件に従って Oracle データベースのソースエンドポイントを作成します。 追加の接続属性は、`-2` 値を持つ `numberDataTypeScale` である必要があります。詳細については、 AWS DMS ドキュメントの[「ソースエンドポイントとターゲットエンドポイントの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html)」を参照してください。 | DBA | 
| ターゲットエンドポイントを作成します。 |  AWS DMS コンソールで、**エンドポイント**を選択し、要件に応じて PostgreSQL データベースのターゲットエンドポイントを作成します。 詳細については、 AWS DMS ドキュメントの[「ソースエンドポイントとターゲットエンドポイントの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html)」を参照してください。 | DevOps エンジニア | 
| から実行する AWS DMS レプリケーションの詳細を設定します AWS CLI。 | 次の形式を使用して、 AWS DMS ソースエンドポイント ARN、ターゲットエンドポイント ARN、レプリケーションインスタンス ARN を使用して、 `dms-arn-list.txt`ファイルのソースエンドポイントとターゲットエンドポイント、レプリケーションの詳細を設定します。<pre>#sourceARN,targetARN,repARN<br />arn:aws:dms:us-east-1:123456789012:endpoint:EH7AINRUDZ5GOYIY6HVMXECMCQ<br />arn:aws:dms:us-east-1:123456789012:endpoint:HHJVUV57N7O3CQF4PJZKGIOYY5<br />arn:aws:dms:us-east-1:123456789012:rep:LL57N77AQQAHHJF4PJFHNEDZ5G</pre> | DBA | 
| Python `dms-create-task.py` スクリプトを実行して AWS DMS タスクを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html) | DBA | 
|  AWS DMS タスクの準備が整っていることを確認します。 |  AWS DMS コンソールで、 AWS DMS タスクのステータスセクション`Ready`で**タスクのステータス**を確認します。 | DBA | 

### を使用して AWS DMS タスクを開始および停止する AWS CLI
<a name="start-and-stop-the-dms-tasks-by-using-the-cli"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS DMS タスクを開始します。 | 次のコマンドを使用して、`dms-start-task.py` Python スクリプトを実行します。<pre>$ python dms-start-task.py start '<cdc-start-datetime>'</pre>開始日時は、`'DD-MON-YYYY'` または `'YYYY-MM-DDTHH:MI:SS'` 形式 (`'01-Dec-2019'` や `'2018-03-08T12:12:12'` など) である必要があります。 AWS DMS タスクのステータスは、 AWS DMS コンソールの**タスク**ページの**テーブル統計**タブで確認できます。 | DBA | 
| データを検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.html)詳細については、 AWS DMS ドキュメント[AWS DMS のデータ検証](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)を参照してください。 | DBA | 
|  AWS DMS タスクを停止します。 | 次のコマンドを使用して、 Python スクリプトを実行します。<pre>$ python dms-start-task.py stop</pre>AWS DMS タスクは、検証`failed`ステータスに応じて、 ステータスで停止することがあります。詳細については、次のセクションをご覧ください。 | DBA | 

## トラブルシューティング
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| AWS SCT ソースとターゲットのテスト接続が失敗します。 | 受信トラフィックを受け入れるように JDBC ドライバーバージョンと VPC セキュリティグループのインバウンドルールを設定します。 | 
| ソースまたはターゲットのエンドポイントのテスト実行が失敗する。 | エンドポイント設定とレプリケーションインスタンスが `Available` ステータスになっているかどうかを確認してください。エンドポイントの接続ステータスが `Successful` であるかどうかを確認します。 詳細については、 AWS サポート ドキュメントの[「AWS DMS エンドポイントの接続障害のトラブルシューティング方法](https://aws.amazon.com/premiumsupport/knowledge-center/dms-endpoint-connectivity-failures/)」を参照してください。 | 
| 全ロード実行が失敗する。 | ソースデータベースとターゲットデータベースのデータ型とサイズが一致しているかどうかを確認します。 詳細については、 AWS DMS ドキュメントの「 [での移行タスクのトラブルシューティング AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Troubleshooting.html)」を参照してください。 | 
| 検証実行エラーが発生する。 | プライマリキー以外のテーブルは検証されないため、テーブルにプライマリキーがあるかどうかを確認します。テーブルにプライマリキー、エラーがある場合は、ソースエンドポイントの追加の接続属性に `numberDataTypeScale=-2` があることを確認してください。詳細については、 AWS DMS ドキュメントの「Oracle を[ソースとして使用する場合のエンドポイント設定 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.ConnectionAttrib)」、[OracleSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_OracleSettings.html)」、および[「トラブルシューティング](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html#CHAP_Validating.Troubleshooting)」を参照してください。 | 

## 関連リソース
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation-resources"></a>
+ [のインストールと設定 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure)
+ [AWS DMSの概要](https://www.youtube.com/watch?v=ouia1Sc5QGo) (ビデオ)
+ [AWS CLI および PowerShell の CloudFormation スタックオペレーションコマンドの例](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-cli.html)
+ [のユーザーインターフェイスの操作 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
+ [のソースとしての Oracle データベースの使用 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [を使用した Oracle データベースへの接続 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)
+ [のターゲットとしての PostgreSQL データベースの使用 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) 
+ 「[データ移行のソース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)」
+ 「[データ移行のターゲット](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html)」
+ [クラウドフォーメーション](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/index.html) (AWS CLI ドキュメント)
+ [create-stack](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/create-stack.html) (AWS CLI ドキュメント) 
+ [dms](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/dms/index.html) (AWS CLI ドキュメント) 

## アタッチメント
<a name="attachments-5e041494-2e64-4f09-b6ec-0e0cba3a4972"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/5e041494-2e64-4f09-b6ec-0e0cba3a4972/attachments/attachment.zip)」