マテリアライズドビューと AWS DMS を使用して Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行 - AWS 規範ガイダンス

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

マテリアライズドビューと AWS DMS を使用して Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行

作成者: Kumar Babu P G (AWS) と Pragnesh Patel (AWS)

環境:PoC またはパイロット

ソース: Oracle 8i または 9i

ターゲット: Amazon RDS for PostgreSQL または Aurora PostgreSQL-Compatible Amazon RDS

Rタイプ: リアーキテクト

ワークロード: Oracle

テクノロジー: 移行、データベース

AWS サービス: Amazon RDS、Amazon Aurora

[概要]

このパターンでは、オンプレミスの 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 データベースに同じデータが含まれます。

前提条件と制限

前提条件

制約事項

  • データベースのサイズ制限は 64 TB です

製品バージョン

  • ソースデータベース用の Oracle 8i または 9i

  • 中間データベースの Oracle 10g または 11g

  • PostgreSQL 10.17 以降

アーキテクチャ

ソーステクノロジースタック

  • Oracle 8i または 9i データベース 

ターゲットテクノロジースタック

  • Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換

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

レガシー Oracle データベースから Amazon RDS または Aurora に移行するアーキテクチャ

ツール

  • AWS DMS」 は、データベースを迅速かつ安全に移行するのに役立ちます。移行中でもソースデータベースが完全に維持され、このデータベースを利用するアプリケーションのダウンタイムは最小限に抑えられます。AWS DMS により、広く普及しているほとんどの商用データベースとオープンソースデータベース間で、データを移行することができます。

  • AWS SCT は、ソースデータベーススキーマと大部分のカスタムコード (ビュー、ストアドプロシージャ、関数など) をターゲットデータベースと互換性のある形式に自動的にk変換します。自動的に変換できないオブジェクトにはわかりやすいマークが付いていて、手動で変換して移行を完了できます。AWS SCT では、アプリケーションのソースコードをスキャンして、埋め込み SQL ステートメントを探し、データベーススキーマ変換プロジェクトの一部として変換することもできます。このプロセスでは、AWS SCT は Oracle と SQL Server のレガシー関数を AWS の同等の機能に変換することでクラウドネイティブなコードの最適化を行います。これにより、データベースを移行しながらアプリケーションを最新化できます。スキーマの変換が完了すると、AWS SCT は組み込みのデータ移行エージェントを使用して、さまざまなデータウェアハウスから Amazon Redshift へのデータ移行を支援します。 

ベストプラクティス

マテリアライズドビューを更新するベストプラクティスについては、以下の Oracle ドキュメントを参照してください:

エピック

タスク説明必要なスキル

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
タスク説明必要なスキル

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 インスタンスを作成します。

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でレプリケーションインスタンスを作成します。

名前、インスタンスクラス、VPC (EC2 インスタンスと同じ)、マルチ AZ、パブリックアクセシビリティのフィールドを入力します。詳細設定セクションで、割り当てられたストレージ、サブネットグループ、アベイラビリティーゾーン、VPC セキュリティグループ、および AWS Key Management Service (AWS KMS) キーを指定します。

AWS SysAdmin、DBA

ソースデータベースのエンドポイントを作成します。

エンドポイント名、タイプ、ソースエンジン (Oracle)、サーバー名 (EC2 インスタンスのプライベート DNS 名)、ポート、SSL モード、ユーザー名、パスワード、SID、VPC (レプリケーションインスタンス付けの VPC を指定)、およびレプリケーションインスタンスを指定します。接続をテストするには、[テストを実行]を選択し、エンドポイントを作成します。また、 maxFileSizenumberDataTypeスケール の詳細設定も設定できます。

AWS SysAdmin、DBA

AWS DMS を Amazon RDS for PostgreSQLに接続します。

PostgreSQL データベースが別の VPC にある場合は、VPC 間の接続用の移行セキュリティグループを作成します。

AWS SysAdmin、DBA

ターゲットデータベースエンドポイントを作成します。

エンドポイント名、タイプ、ソースエンジン (PostgreSQL)、サーバー名 (Amazon RDS エンドポイント)、ポート、SSL モード、ユーザー名、パスワード、データベース名、VPC (レプリケーションインスタンスを持つ VPC を指定)、およびレプリケーションインスタンスを指定します。接続をテストするには、[テストを実行]を選択し、エンドポイントを作成します。また、 maxFileSizenumberDataTypeスケール の詳細設定も設定できます。

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
タスク説明必要なスキル

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 と一致するようにシーケンスをインクリメントし、VACUUMANALYZE を実行し、コンプライアンスのためのスナップショットを作成します。

DBA

Amazon RDS for PostgreSQLへの接続を開きます。

Amazon RDS for PostgreSQL から AWS DMS セキュリティグループを削除し、プロダクションセキュリティグループを追加して、アプリケーションを新しいデータベースに関連付けます。

DBA

AWS DMS オブジェクトをクリーンアップします。

エンドポイント、レプリケーションタスク、レプリケーションインスタンス、EC2 インスタンスを削除します。

SysAdmin、DBA

関連リソース