

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

# Oracle バイスタンダーと AWS DMS を使用して、オンプレミスの Oracle データベースを Amazon RDS for PostgreSQL に移行する
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms"></a>

*Amazon Web Services、Cady Motyka*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-summary"></a>

このパターンでは、最小限のダウンタイムでオンプレミスの Oracle データベースを以下に示す PostgreSQL 互換の AWS データベースサービスのいずれかに移行する方法を説明します。
+ Amazon Relational Database Service (Amazon RDS) for PostgreSQL
+ Amazon Aurora PostgreSQL 互換エディション

このソリューションでは、AWS Database Migration Service (AWS DMS) を使用してデータを移行し、AWS Schema Conversion Tool (AWS SCT) を使用してデータベーススキーマを変換し、Oracle バイスタンダーデータベースを使用して移行管理を支援します。この実装では、ダウンタイムはデータベース上のすべての外部キーを作成または検証するのに必要な時間に制限されます。 

このソリューションでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスと Oracle バイスタンダーデータベースを使用すると、AWS DMS 経由のデータストリームを制御できます。オンプレミスの Oracle データベースから Oracle バイスタンダーへのストリーミングレプリケーションを一時的に停止し、AWS DMS をアクティブにしてデータ検証を把握したり、別のデータ検証ツールを使用したりできます。Amazon RDS for PostgreSQL DB インスタンスまたは Aurora PostgreSQL 互換 DB インスタンス、およびバイスタンダーデータベースは、AWS DMS が現在の変更移行を完了すると同じデータを保持します。 

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミス型データセンターのソース Oracle データベースと Active Data Guard スタンバイデータベースが設定済み
+ データベースシークレットを保存するオンプレミス型データセンターと AWS Secrets Manager の間で AWS Direct Connect が設定済み
+ AWS SCT コネクタ用の Java データベース接続 (JDBC) ドライバーが、ローカルマシンまたは AWS SCT がインストールされている EC2 インスタンスにインストール済み
+ [Oracle データベースを AWS DMS のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)ことに精通している
+ [Oracle データベースを AWS DMS のターゲットとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)ことに精通している

**機能制限**
+ データベースサイズの上限: 64 TB

**製品バージョン**
+ AWS DMS は、バージョン 10.2 以降 (バージョン 10.x の場合)、11g から 12.2、18c、19c までのすべての Oracle データベースエディションに対応しています。サポートされているバージョンの最新リストについては、「[Oracle データベースを AWS DMS のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。AWS SCT でサポートされている Oracle データベースのバージョンについては、「[AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」を参照してください。
+ AWS DMS は、PostgreSQL バージョン 9.4 以降 (バージョン 9.x の場合)、10.x、11.x、12.x、13.x をサポートしています。最新情報については、AWS のドキュメント「[AWS DMS のターゲットとして PostgreSQLデータベースを使用する」](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)を参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース
+ Oracle データベースのバイスタンダーを保持する EC2 インスタンス

**ターゲットテクノロジースタック**
+ Amazon RDS for PostgreSQL または Aurora PostgreSQL インスタンス、PostgreSQL 9.3 以降

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

次の図は、AWS DMS および Oracle オブザーバを使用して Oracle バイスタンダ―を PostgreSQL 互換の AWS データベースに移行するワークフローの例を示しています。

![\[オンプレミスの Oracle データベースを AWS 上の PostgreSQL に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6f5d5500-8b09-4bd1-8ef9-e670d58d07f8/images/1de98abd-c143-481a-b55f-e8d00eb96a38.png)


## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-tools"></a>
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベースのスキーマおよびカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベース移行をサポートします。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。

## エピック
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-epics"></a>

### Oracle データベースのスキーマを PostgreSQL に変換する
<a name="convert-the-oracle-database-schema-to-postgresql"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を設定する | 新しいレポートを作成し、ソースとして Oracle に接続し、ターゲットとして PostgreSQL に接続します。[**プロジェクト設定**] で [**SQL スクリプト作成**] タブに移動します。**ターゲット SQL スクリプト**を**複数のファイル**に変更します。これらのファイルは後で使用され、次のような名前が付けられます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | DBA | 
| Oracle データベースのスキーマを変換する | [**アクション**] タブで [**レポートを生成**] を選択します。次に、[**スキーマの変換**] を選択し、[**SQL として保存**] を選択します。 | DBA | 
| スクリプトの変更 | たとえば、ソーススキーマの数値が PostgreSQL で数値形式に変換されたが、パフォーマンスを向上させるために代わりに **BIGINT** を使用したい場合は、スクリプトを変更することができます。 | DBA | 

### Amazon RDS DB インスタンスを作成して設定する
<a name="create-and-configure-the-amazon-rds-db-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS DB インスタンスを作成します。 | 適切な AWS リージョンで、新しい PostgreSQL DB インスタンスを作成します。詳細については、Amazon RDS ドキュメントの「[PostgreSQL DB インスタンスを作成して PostgreSQL インスタンス上のデータベースに接続する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.PostgreSQL.html)」を参照してください。 | SysAdmin、DBA | 
| DB インスタンスの仕様を設定します。 | DB エンジンのバージョン、DB インスタンスクラス、マルチ AZ 配置、ストレージタイプ、ストレージの割り当てを指定します。DB インスタンス識別子、プライマリ ユーザー名、プライマリ パスワードを入力します。 | SysAdmin、DBA | 
| ネットワークとセキュリティを設定します。 | 仮想プライベートクラウド (VPC)、サブネットグループ、パブリックアクセシビリティ、アベイラビリティーゾーンの設定、およびセキュリティグループを指定します。 | DBA、SysAdmin | 
| データベースオプションを設定します。 | データベース名、ポート、パラメータグループ、暗号化、KMS キーを指定します。 | SysAdmin、DBA | 
| バックアップを設定します。 | バックアップ保持期間、バックアップウィンドウ、開始時刻、期間、およびタグをスナップショットにコピーするかどうかを指定します。　 | AWS SysAdmin、DBA | 
| モニタリングオプションを設定します。 | 強化されたモニタリングとパフォーマンスインサイトを有効または無効にします。 | SysAdmin、DBA | 
| メンテナンスオプションを設定します。 | マイナーバージョンの自動アップグレード、メンテナンスウィンドウ、開始日、時刻、期間を指定します。 | SysAdmin、DBA | 
| AWS SCT から移行前スクリプトを実行します。 | Amazon RDS インスタンスで、AWS SCT が生成した以下のスクリプトを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | SysAdmin、DBA | 

### Amazon EC2 で Oracle バイスタンダーを設定する
<a name="configure-the-oracle-bystander-in-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 のネットワークを設定します。 | 新しい VPC、サブネット、インターネットゲートウェイ、ルートテーブル、およびセキュリティグループを作成します。 | AWS SysAdmin | 
| EC2 インスタンスを作成します。 | 適切な AWS リージョンで、新しい EC2 インスタンスを作成します。Amazon マシンイメージ (AMI) を選択し、インスタンスサイズを選択し、インスタンスの詳細 (インスタンス数 (1)、前のタスクで作成した VPC とサブネット、パブリック IP の自動割り当て、その他のオプションを設定します。ストレージを追加し、セキュリティグループを設定して起動します。プロンプトが表示された後、次のステップのためにキーペアを作成して保存します。 | AWS SysAdmin | 
| Oracle ソースデータベースを EC2 インスタンスに接続します。 | IPv4 パブリック IP アドレスと DNS をテキストファイルにコピーし、次のように SSH コマンドを使用して接続します。**ssh -i "your\$1file.pem" ec2-user@<your-IP-address-or-public-DNS>**  | AWS SysAdmin | 
| Amazon EC2 でバイスタンダー向けの初期ホストを設定します。 | SSH キー、Bash プロファイル、ORATAB、シンボリックリンクを設定します。Oracle ディレクトリを作成します。 | AWS SysAdmin、Linux 管理者 | 
| Amazon EC2 でバイスタンダー向けのデータベースを設定します。 | RMAN を使用してデータベースコピーを作成し、補足ロギングを有効にして、スタンバイコントロール ファイルを作成します。コピーの完了後、データベースを復旧モードに移行します。 | SysAdmin、DBA | 
| Oracle Data Guard を設定します。 | **listener.ora** ファイルを変更し、リスナーを起動します。新規アーカイブの宛先を設定します。バイスタンダ―を復旧モードにし、一時ファイルを置き換えて将来の破損を防ぎ、必要に応じてアーカイブディレクトリの空き容量が不足しないように crontab をインストールし、ソースとスタンバイの **manage-trclog-files-oracle.cfg** ファイルを編集します。 | SysAdmin、DBA | 
| 配送を同期するため、Oracle データベースの準備を整えます。 | スタンバイ ログファイルを追加し、復旧モードを変更します。ソースプライマリとソーススタンバイの両方で、ログ配信を **SYNC AFFIRM** に変更します。ログをプライマリに切り替え、Amazon EC2 バイスタンダ―のアラートログで、スタンバイのログファイルを使用していることを確認し、REDO ストリームの配信が同期されていることを確認します。 | SysAdmin、DBA | 

### AWS DMS でデータを移行する
<a name="migrate-data-with-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS レプリケーションインスタンスを作成します。 | 名前、インスタンスクラス、VPC (Amazon EC2 インスタンスと同様)、マルチ AZ、パブリックアクセシビリティのフィールドに値を入力します。[**詳細設定**] で割り当てられたストレージ、サブネットグループ、アベイラビリティーゾーン、VPC セキュリティグループ、および AWS Key Management Service (AWS KMS) キーを指定します。 | SysAdmin、DBA | 
| ソースデータベースのエンドポイントを作成します。 | エンドポイント名、タイプ、ソースエンジン (Oracle)、サーバー名 (Amazon EC2 プライベート DNS 名)、ポート、SSL モード、ユーザー名、パスワード、SID、VPC (レプリケーションインスタンスのある VPC を指定)、およびレプリケーションインスタンスを指定します。接続をテストするには、［**テストを実行**］を選択し、エンドポイントを作成します。**maxFileSize** と **numberDataTypeScale** の詳細設定も行えます。 | AWS SysAdmin、DBA | 
| [Amazon RDS for PostgreSQL に接続] を選択します。 | VPC 間で接続するための移行用セキュリティグループを作成します。 | SysAdmin、DBA | 
| ターゲットデータベースエンドポイントを作成します。 | エンドポイント名、タイプ、ソースエンジン (PostgreSQL)、サーバー名 (Amazon RDS エンドポイント)、ポート、SSL モード、ユーザー名、パスワード、データベース名、VPC (レプリケーションインスタンスがあり VPC を指定)、およびレプリケーションインスタンスを指定します。接続をテストするには、［**テストを実行**］を選択し、エンドポイントを作成します。**maxFileSize** と **numberDataTypeScale** の詳細設定も行えます。 | AWS SysAdmin、DBA | 
| AWS DMS レプリケーションタスクを作成します。 | タスク名、レプリケーションインスタンス、ソースとターゲットのエンドポイント、レプリケーションインスタンスを指定します。移行タイプで、[**既存のデータを移行し、継続的な変更をレプリケートする**] を選択します。[**作成時にタスクを開始**] チェックボックスをオフにします。 | SysAdmin、DBA | 
| AWS DMS レプリケーションタスク設定を構成します。 | ターゲットテーブル作成モードでは、**何もしない**を選択します。フルロードの完了後、(プライマリキーを作成するため) タスクを停止します。制限付き LOB モードまたはフル LOB モードを指定し、コントロールテーブルを有効にします。オプションで、[**CommitRate**] の詳細設定を行えます。 | DBA | 
| テーブルマッピングを設定します。 | **テーブルマッピング**セクションで、移行に含まれる全スキーマのテーブルを対象とする **含める** ルールを作成してから、**除外** ルールを作成します。スキーマ、テーブル、列の名前を小文字に変換する 3 つの変換ルールを追加し、特定の移行に必要なその他のルールを追加します。 | DBA | 
| タスクの開始 | レプリケーションタスクを開始します。全ロードが実行されていることを確認します。プライマリ Oracle データベースで、**ALTER SYSTEM SWITCH LOGFILE** を実行してタスクを開始します。 | DBA | 
| AWS SCT から移行中のスクリプトを実行します。 | Amazon RDS for PostgreSQL で、AWS SCT が生成した以下のスクリプトを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | DBA | 
| タスクを再開して、変更データキャプチャ (CDC) を継続します。 | Amazon RDS for PostgreSQL DB インスタンスで **VACUUM** を実行し、AWS DMS タスクを再起動して、キャッシュされた CDC の変更を適用します。 | DBA | 

### PostgreSQL データベースへのカットオーバー
<a name="cut-over-to-the-postgresql-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS のログと検証テーブルにエラーがないことを確認してください。 | レプリケーションエラーまたは検証エラーを確認して修正します。　 | DBA | 
| Oracle の依存関係をすべて停止します。 | Oracle の依存関係をすべて停止し、Oracle データベースのリスナーをシャットダウンして、**ALTER SYSTEM SWITCH LOGFILE** を実行します。アクティビティが表示されない場合は、AWS DMS タスクを停止します。 | DBA | 
| AWS SCT から移行後のスクリプトを実行します。 | Amazon RDS for PostgreSQL で、AWS SCT が生成した以下のスクリプトを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.html) | DBA | 
| Amazon RDS for PostgreSQL の追加手順を完了します。 | 必要に応じて、Oracle と一致するようにシーケンスをインクリメントし、**VACUUM** と **ANALYZE** を実行して、コンプライアンスのためのスナップショットを作成します。 | DBA | 
| [Amazon RDS for PostgreSQL に接続] を選択します。 | Amazon RDS for PostgreSQL から AWS DMS セキュリティグループを削除し、実稼働セキュリティグループを追加して、アプリケーションを新しいデータベースに接続します。 | DBA | 
| AWS DMS オブジェクトをクリーンアップします。 | エンドポイント、レプリケーションタスク、レプリケーションインスタンス、EC2 インスタンスを削除します。 | SysAdmin、DBA | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms-resources"></a>
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/)
+ [AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ 「[Amazon RDS for PostgreSQL の料金](https://aws.amazon.com/rds/postgresql/pricing/)」 