

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

# マテリアライズドビューと AWS DMS を使用して Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms"></a>

*Amazon Web Services、Kumar Babu P G、Pragnesh Patel*

## 概要
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-summary"></a>

このパターンでは、オンプレミスの Oracle 8i または 9i データベースを、Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換エディションに移行する方法について説明しています。 

AWS Database Migration Service (AWS DMS) は Oracle 8i または 9i をソースとしてサポートしていないため、このパターンでは、Oracle 10g や 11g などの AWS DMS と互換性のある中間 Oracle データベースインスタンスを使用します。また、マテリアライズドビュー特徴量を使用して、ソース Oracle 8i/9i インスタンスから中間の Oracle 10g/11g インスタンスにデータを移行します。

AWS Schema Conversion Tool (AWS SCT) はデータベーススキーマを変換し、AWS DMS はデータをターゲット PostgreSQL データベースに移行します。 

このパターンでは、データベースのダウンタイムを最小限に抑えてレガシー Oracle データベースから移行したいユーザーに役立ちます。この実装では、ダウンタイムはターゲットデータベース上のすべての外部キー、トリガー、シーケンスを作成または検証するのにかかる時間に限定されます。 

このパターンでは、AWS DMS によるデータのストリーミングを支援するのに、Oracle 10g/11g データベースをインストールした Amazon Elastic Compute Cloud (Amazon EC2) インスタンスが使用されています。オンプレミスの Oracle データベースから中間 Oracle インスタンスへのストリーミングレプリケーションを一時停止して、AWS DMS がデータ検証で確認ができるようにしたり、または別のデータ検証ツールを使用したりできます。AWS DMS が現在の変更の移行を完了すると、PostgreSQL DB インスタンスと中間 Oracle データベースに同じデータが含まれます。

## 前提条件と制限事項
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-prereqs"></a>

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

**制限事項**
+ データベースのサイズ制限は 64 TB です

**製品バージョン**
+ ソースデータベース用の Oracle 8i または 9i
+ 中間データベースの Oracle 10g または 11g
+ PostgreSQL 10.17 以降

## アーキテクチャ
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ Oracle 8i または 9i データベース 

**ターゲットテクノロジースタック**
+ Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換

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

![レガシー Oracle データベースから Amazon RDS または Aurora に移行するアーキテクチャ](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/8add9b21-1b62-46a2-bb8e-0350f36a924a/images/f34f9b0f-f1da-4c27-a385-71b12d16c375.png)


## ツール
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-tools"></a>
+ 「[AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)」 は、データベースを迅速かつ安全に移行するのに役立ちます。移行中でもソースデータベースが完全に維持され、このデータベースを利用するアプリケーションのダウンタイムは最小限に抑えられます。AWS DMS により、広く普及しているほとんどの商用データベースとオープンソースデータベース間で、データを移行することができます。
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマと大部分のカスタムコード (ビュー、ストアドプロシージャ、関数など) をターゲットデータベースと互換性のある形式に自動的にk変換します。自動的に変換できないオブジェクトにはわかりやすいマークが付いていて、手動で変換して移行を完了できます。AWS SCT では、アプリケーションのソースコードをスキャンして、埋め込み SQL ステートメントを探し、データベーススキーマ変換プロジェクトの一部として変換することもできます。このプロセスでは、AWS SCT は Oracle と SQL Server のレガシー関数を AWS の同等の機能に変換することでクラウドネイティブなコードの最適化を行います。これにより、データベースを移行しながらアプリケーションを最新化できます。スキーマの変換が完了すると、AWS SCT は組み込みのデータ移行エージェントを使用して、さまざまなデータウェアハウスから Amazon Redshift へのデータ移行を支援します。 

## ベストプラクティス
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-best-practices"></a>

マテリアライズドビューを更新するベストプラクティスについては、以下の Oracle ドキュメントを参照してください：
+ 「[マテリアライズドビューの更新](https://docs.oracle.com/database/121/DWHSG/refresh.htm#DWHSG-GUID-64068234-BDB0-4C12-AE70-75571046A586)」
+ 「[マテリアライズドビューの高速リフレッシュ](https://docs.oracle.com/database/121/DWHSG/refresh.htm#DWHSG8361)」 

## エピック
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-epics"></a>

### EC2 インスタンスに Oracle をインストールし、マテリアライズドビューを作成
<a name="install-oracle-on-an-ec2-instance-and-create-materialized-views"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスのネットワークをセットアップします。 | 仮想プライベートクラウド (VPC)、サブネット、インターネットゲートウェイ、ルートテーブル、およびセキュリティグループを作成します。 | AWS SysAdmin | 
| EC2 インスタンスを作成します。 | EC2 インスタンスの Amazon マシンイメージ (AMI)を選択します。インスタンスサイズを選択し、インスタンスの詳細 (インスタンス数 (1)、前のステップの VPC とサブネット、パブリック IP の自動割り当て、その他のオプション)を設定します。ストレージを追加し、セキュリティグループを設定し、インスタンスを起動します。プロンプトが表示されたら、次のステップのためにキーペアを作成して保存します。 | AWS SysAdmin | 
| EC2 インスタンスに Oracle をインストールします。 | ライセンスと必要な Oracle バイナリを取得し、EC2 インスタンスに Oracle 10g または 11g をインストールします。 | DBA | 
| Oracle ネットワークを設定します。 | `listener.ora` のエントリを変更または追加してオンプレミスのソース Oracle 8i/9i データベースに接続し、データベースリンクを作成します。 | DBA | 
| マテリアライズドビューを作成します。 | ソース Oracle 8i/9i データベースで複製するためのデータベースオブジェクトを特定し、データベースリンクを使用してすべてのオブジェクトのマテリアライズドビューを作成します。 | DBA | 
| スクリプトをデプロイして、必要な間隔でマテリアライズドビューを更新します。 | Amazon EC2 Oracle 10g/11g インスタンスで、必要な間隔でマテリアライズドビューを更新するスクリプトを開発してデプロイします。増分更新オプションを使用してマテリアライズドビューを更新します。 | DBA | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をセットアップします。 | 新しいレポートを作成し、次にソースとして Oracle に、ターゲットとして PostgreSQL に接続します。プロジェクト設定で、［**SQL スクリプト**］タブを開きます。ターゲット SQL スクリプトを**複数ファイルに**変更します。(AWS SCT が Oracle 8i/9i データベースに適用されないため、中間の Oracle 10g/11g インスタンスでスキーマのみのダンプを復元し、それを AWS SCT のソースとして使用する必要があります)。 | DBA | 
| Oracle データベーススキーマを変換します。 | ［**アクション**］ タブで、［**レポートを生成**］、［**スキーマを変換**］、［**SQL として保存**］の順に選択します。 | DBA | 
| SQL スクリプトを変更します。 | ベストプラクティスに基づいて変更を加えます。例えば、適切なデータ型に切り替えて、Oracle 固有の関数に対応する PostgreSQL を開発します。 | DBA、DevDBA | 

### Amazon RDS DB インスタンスを作成・設定して、変換されたデータベースをホストする
<a name="create-and-configure-the-amazon-rds-db-instance-to-host-the-converted-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS DB インスタンスを作成します。 | Amazon RDS コンソールで、新しい PostgreSQL DB インスタンスを作成します。 | AWS SysAdmin、DBA | 
| DB インスタンスを設定します。 | DB エンジンのバージョン、DB インスタンスクラス、マルチ AZ 配置、ストレージタイプ、ストレージの割り当てを指定します。DB インスタンス識別子、マスターユーザー名、マスターパスワードを入力します。 | AWS SysAdmin、DBA | 
| ネットワークとセキュリティを設定します。 | VPC、サブネットグループ、パブリックアクセシビリティ、アベイラビリティーゾーンプリファレンス、セキュリティグループを指定します。 | DBA、SysAdmin | 
| データベースオプションを設定します。 | データベース名、ポート、パラメータグループ、暗号化、マスターキーを指定します。 | DBA, AWS SysAdmin | 
| バックアップを設定します。 | バックアップ保持期間、バックアップウィンドウ、開始時刻、期間、およびタグをスナップショットにコピーするかどうかを指定します。　 | AWS SysAdmin、DBA | 
| モニタリングオプションを設定します。 | 拡張モニタリングとパフォーマンスインサイトの有効または無効にします。 | AWS SysAdmin、DBA | 
| メンテナンスオプションを設定します。 | マイナーバージョンの自動マイナーアップグレード、メンテナンスウィンドウ、および開始日、時刻、および期間を指定します。 | AWS SysAdmin、DBA | 
| AWS SCT から移行前スクリプトを実行します。 | ターゲット Amazon RDS for PostgreSQL インスタンスで、AWS SCT の SQL スクリプトとその他の変更を加えてデータベーススキーマを作成します。これには、ユーザー作成、データベース作成、スキーマ作成、テーブル、ビュー、関数、その他のコードオブジェクトを含む複数のスクリプトの実行が含まれる場合があります。 | AWS SysAdmin、DBA | 

### AWS DMS を使用してデータを移行
<a name="migrate-data-by-using-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMSでレプリケーションインスタンスを作成します。 | 名前、インスタンスクラス、VPC (EC2 インスタンスと同じ)、マルチ AZ、パブリックアクセシビリティのフィールドを入力します。詳細設定セクションで、割り当てられたストレージ、サブネットグループ、アベイラビリティーゾーン、VPC セキュリティグループ、および AWS Key Management Service (AWS KMS) キーを指定します。 | AWS SysAdmin、DBA | 
| ソースデータベースのエンドポイントを作成します。 | エンドポイント名、タイプ、ソースエンジン (Oracle)、サーバー名 (EC2 インスタンスのプライベート DNS 名)、ポート、SSL モード、ユーザー名、パスワード、SID、VPC (レプリケーションインスタンス付けの VPC を指定)、およびレプリケーションインスタンスを指定します。接続をテストするには、［**テストを実行**］を選択し、エンドポイントを作成します。**maxFileSize** と **numberDataTypeScale** の詳細設定も行えます。 | AWS SysAdmin、DBA | 
| AWS DMS を Amazon RDS for PostgreSQLに接続します。 | PostgreSQL データベースが別の VPC にある場合は、VPC 間の接続用の移行セキュリティグループを作成します。 | AWS SysAdmin、DBA | 
| ターゲットデータベースエンドポイントを作成します。 | エンドポイント名、タイプ、ソースエンジン (PostgreSQL)、サーバー名 (Amazon RDS エンドポイント)、ポート、SSL モード、ユーザー名、パスワード、データベース名、VPC (レプリケーションインスタンスがあり VPC を指定)、およびレプリケーションインスタンスを指定します。接続をテストするには、［**テストを実行**］を選択し、エンドポイントを作成します。**maxFileSize** と **numberDataTypeScale** の詳細設定も行えます。 | AWS SysAdmin、DBA | 
| AWS DMS レプリケーションタスクを作成します。 | タスク名、レプリケーションインスタンス、ソースとターゲットのエンドポイント、レプリケーションインスタンスを指定します。移行タイプには、**[既存のデータを移行し、現在進行中の変更のレプリケーションを移行]** をします。**作成のタスクを開始**のチェックボックスをクリアします。 | AWS SysAdmin、DBA | 
| AWS DMS レプリケーションタスク設定を構成します。 | ターゲットテーブル作成モードについては、**何もしない**を選択します。フルロードが完了したら、タスクを停止します (プライマリキーを作成するため)。制限付き LOB モードまたはフル LOB モードを指定し、制御テーブルを有効にします。オプションで **CommitRate** の詳細設定を行えます。 | DBA | 
| テーブルマッピングを設定します。 | **テーブルマッピング**セクションで、移行に含まれるすべてのスキーマのすべてのテーブルを対象にインクルードルールを作成し、除外ルールを作成します。スキーマ、テーブル、列の名前を小文字に変換する 3 つの変換ルールを追加し、この特定の移行に必要なその他のルールを追加します。 | DBA | 
| タスクの開始 | レプリケーションタスクを開始します。全ロードが実行されていることを確認します。プライマリ Oracle データベースで、`ALTER SYSTEM SWITCH LOGFILE` を実行してタスクを開始します。 | DBA | 
| AWS SCT から移行中のスクリプトを実行します。 | Amazon RDS for PostgreSQL では、次の `create_index.sql` および `create_constraint.sql` のスクリプトを実行します(完全なスキーマが最初に作成されていない場合)。 | 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 では、以下のスクリプトを実行します: `create_foreign_key_constraint.sql and create_triggers.sql` シーケンスが最新であることを確認します。 | 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-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms-resources"></a>
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ 「[Amazon RDS for PostgreSQL 料金設定](https://aws.amazon.com/rds/postgresql/pricing/)」
+ 「[AWS DMSのソースとして Oracle データベースを使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」
+ 「[AWS DMSのターゲットとして PostgreSQL データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)」