

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

# 移行
<a name="migration-pattern-list"></a>

**Topics**
+ [Microsoft Excel と Python を使用して AWS DMS タスク用の AWS CloudFormation テンプレートを作成](create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python.md)
+ [自動ポートフォリオ検出の開始方法](get-started-with-automated-portfolio-discovery.md)
+ [オンプレミスの Cloudera ワークロードを AWS 上の Cloudera データプラットフォームに移行する](migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.md)
+ [Microsoft SQL サーバーを AWS クラウドに移行した後に接続エラーを解決する](resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.md)
+ [RHEL ソースサーバーを再起動した後、SELinux を無効にせずに AWS レプリケーションエージェントを自動的に再起動する](restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server.md)
+ [リアーキテクト](migration-rearchitect-pattern-list.md)
+ [リホスト](migration-rehost-pattern-list.md)
+ [リロケート](migration-relocate-pattern-list.md)
+ [リプラットフォーム](migration-replatform-pattern-list.md)
+ [ワークロード別の移行パターン](migration-migration-patterns-by-workload-pattern-list.md)
+ [その他のパターン](migration-more-patterns-pattern-list.md)

# Microsoft Excel と Python を使用して AWS DMS タスク用の AWS CloudFormation テンプレートを作成
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python"></a>

*Amazon Web Services、Venkata Naveen Koppula*

## 概要
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-summary"></a>

このパターンは、Microsoft Excel と Python を使用して「[AWS Database Migration Service](https://aws.amazon.com/dms/)」(AWS DMS) 用の AWS CloudFormation テンプレートを自動的に作成する手順の概要を示しています。

AWS DMS を使用してデータベースを移行するには、通常、AWS DMS タスクをプロビジョニングするための AWS CloudFormation テンプレートの作成が必要です。従来、AWS CloudFormation テンプレートを作成するには JSON または YAML プログラミング言語に関する知識が必要です。このツールで、Excel の基本知識とターミナルまたはコマンドウィンドウを使用して Python スクリプトを実行する方法のみ必要です。

このツールは入力として、移行するテーブルの名前、AWS DMS エンドポイントの Amazon リソースネーム (ARN) および AWS DMS レプリケーションインスタンスを含む Excel ワークブックを使用します。その後、このツールは、必要な AWS DMS タスク用の AWS CloudFormation テンプレートを生成します。

詳細な手順と背景情報については、AWS Database ブログの「[Microsoft Excel を使用して AWS DMS タスク用の AWS CloudFormation テンプレートを作成](https://aws.amazon.com/blogs/database/create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel/)」というブログ記事を参照してください。

## 前提条件と制限
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Microsoft Excel バージョン 2016 以降
+ Python バージョン 2.7 以降
+ **xlrd** Python モジュール (コマンドプロンプトで次のコマンドを使用してインストール済み: **pip install xlrd**)
+ AWS DMS ソースとターゲットエンドポイント、AWS DMS レプリケーションインスタンス

**制限事項**
+ スキーマ、テーブルと関連する列の名前は、宛先エンドポイントで小文字に変換されます。
+ このツールは、AWS DMS エンドポイントとレプリケーションインスタンスの作成に関する問題に対応していません。
+ 現在、このツールは AWS DMS タスクごとに 1 つのスキーマのみサポートしています。

## アーキテクチャ
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスのデータベース
+ Microsoft Excel

**ターゲットテクノロジースタック**
+ AWS CloudFormation テンプレート
+ AWS クラウド内のデータベース 

**アーキテクチャ**

![\[Excel と Python を使用して AWS DMS 用の CloudFormation テンプレートを自動的に作成するワークフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/778c7c1e-2647-496f-8afd-52ff1ef02489/images/8fe1550d-8966-41aa-a480-5f7bef20629f.png)


## ツール
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-tools"></a>
+ 「[Pycharm IDE](https://aws.amazon.com/pycharm/)」または Python バージョン 3.6 をサポートする任意の統合開発環境 (IDE)
+ Microsoft Office 2016 (Microsoft Excel 用)

## エピック
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-epics"></a>

### ネットワーク、AWS DMS レプリケーションインスタンス、エンドポイントの設定
<a name="configure-the-network-aws-dms-replication-instance-and-endpoints"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 必要に応じて、サービスクォータの増加をリクエストします。 | 必要に応じて、AWS DMS タスク用の Service Quotas の増加をrリクエストします。 | AWS 全般 | 
| AWS リージョン、仮想プライベートクラウド (VPC)、CIDR 範囲、アベイラビリティーゾーンとサブネットを設定します。 |  | AWS 全般 | 
| AWS DMS レプリケーションインスタンスを設定します。 | AWS DMS レプリケーションインスタンスは、オンプレミスと AWS データベースの両方に接続できます。 | AWS 全般 | 
| AWS DMS エンドポイントを設定します。 | ソースデータベースとターゲットデータベースの両方のエンドポイントを構成します。 | AWS 全般 | 

### AWS DMS タスクとタグ用のワークシートを準備
<a name="prepare-the-worksheets-for-aws-dms-tasks-and-tags"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テーブルリストを設定します。 | 移行に関係するテーブルをすべて一覧表示します。 | [Database] (データベース) | 
| タスクワークシートを準備します。 | 設定したテーブルリストを使用して Excel ワークシートを準備します。 | AWS 全般、Microsoft Excel | 
| タグワークシートを準備します。 | AWS DMS タスクに添付する AWS リソースタグの詳細を示します。 | AWS 全般、Microsoft Excel | 

### ツールをダウンロードして実行します。
<a name="download-and-run-the-tool"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| GitHub リポジトリからテンプレート生成ツールをダウンロードして抽出します。 | GitHub リポジトリ：https://github.com/aws-samples/dms-cloudformation-templates-generator/ |  | 
| ツールを実行します。 | 「参考資料とヘルプ」に記載されているブログ記事の詳細な手順に従ってください。 |  | 

## 関連リソース
<a name="create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python-resources"></a>
+ Microsoft Excel を使用したAWS DMSタスク用の AWS CloudFormation テンプレートの作成(ブログ記事)
+ 「[DMS CloudFormation Templates Generator (GitHub リポジトリ)](https://github.com/aws-samples/dms-cloudformation-templates-generator/tree/v1.0)」
+ 「[Python のドキュメンテーション](https://www.python.org/)」
+ 「[xlrd の説明とダウンロード](https://pypi.org/project/xlrd/)」
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/)
+ 「[AWS CloudFormation のドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/)」

# 自動ポートフォリオ検出の開始方法
<a name="get-started-with-automated-portfolio-discovery"></a>

*Amazon Web Services、Pratik Chunawala、Rodolfo Jr. Cerrada*

## 概要
<a name="get-started-with-automated-portfolio-discovery-summary"></a>

アプリケーションとサーバーを Amazon Web Services (AWS) クラウドに移行する場合、特にサーバーが 300 台を超える大規模な移行では、ポートフォリオを評価してメタデータを収集することが重要な課題です。自動ポートフォリオ検出ツールを使用すると、ユーザー数、使用頻度、依存関係、アプリケーションのインフラストラクチャに関する情報など、アプリケーションに関する情報を収集するのに役立ちます。この情報は、類似の特性を持つアプリケーションを適切に優先順位付けしてグループ化できるように、移行の段階を計画する際に不可欠です。検出ツールを使用すると、ポートフォリオチームが手動でメタデータを収集しなくても検出ツールの結果を検証できるため、ポートフォリオチームとアプリケーション所有者間のコミュニケーションが効率化されます。このパターンでは、自動検出ツールを選択する際の主な考慮事項と、それを環境内にデプロイしてテストする方法に関する情報について説明します。

このパターンには、大まかなアクティビティをまとめた独自のチェックリストを作成するための出発点となるテンプレートが含まれています。チェックリストの隣には、実行責任者、説明責任者、相談先、報告先 (RACI) のマトリックス用のテンプレートがあります。この RACI マトリックスを使用して、チェックリストの各タスクの責任者を決定できます。

## エピック
<a name="get-started-with-automated-portfolio-discovery-epics"></a>

### ディスカバリーツールの選択
<a name="select-a-discovery-tool"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 検出ツールがユースケースに適しているかどうかを判断します。 | ディスカバリーツールはユースケースに最適なソリューションではないかもしれません。検出ツールの選択、調達、準備、導入に必要な時間を考慮してください。環境内のエージェントレス検出ツール用にスキャニングアプライアンスをセットアップしたり、対象範囲内のすべてのワークロードにエージェントをインストールしたりするには、4 ～ 8 週間かかる場合があります。導入後、検出ツールがアプリケーションワークロードをスキャンし、アプリケーションスタック分析を実行してメタデータを収集するまでに 4 ～ 12 週間かかります。移行するサーバーが 100 台未満の場合は、自動検出ツールによるメタデータのデプロイと収集に必要な時間よりも早く、メタデータを手動で収集して依存関係を分析できる可能性があります。 | 移行リーダー、移行エンジニア | 
| ディスカバリーツールを選択します。 | 「[追加情報](#get-started-with-automated-portfolio-discovery-additional)」セクションの「**自動検出ツールを選択する際の考慮事項**」を確認してください。ユースケースに合った検出ツールを選択するための適切な基準を決定し、その基準に照らして各ツールを評価します。自動検出ツールの包括的なリストについては、「[検出、計画、推奨移行ツール](https://aws.amazon.com/prescriptive-guidance/migration-tools/migration-discovery-tools/)」を参照してください。 | 移行リーダー、移行エンジニア | 

### インストールの準備
<a name="prepare-for-installation"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 導入前チェックリストを準備する。 | ツールをデプロイする前に完了しなければならないタスクのチェックリストを作成します。例については、Flexera ドキュメンテーション Web サイトの「[導入前チェックリスト](https://docs.flexera.com/foundationcloudscape/ug/Content/helplibrary/FCGS_Predeployment.htm)」を参照してください。 | 構築リード、移行エンジニア、移行リーダー、ネットワーク管理者 | 
| ネットワーク要件を準備する。 | ツールを実行してターゲットサーバーにアクセスするために必要なポート、プロトコル、IP アドレス、ルーティングをプロビジョニングします。詳細については、検出ツールのインストールガイドを参照してください。例については、フレクセラのドキュメンテーションウェブサイトの「[導入要件](https://docs.flexera.com/foundationcloudscape/help/RCDeployReq.htm)」を参照してください。 | 移行エンジニア、ネットワーク管理者、クラウドアーキテクト | 
| アカウントと認証情報の要件を準備します。 | 対象サーバーにアクセスし、ツールのすべてのコンポーネントをインストールするのに必要な認証情報を特定します。 | クラウド管理者、AWS 全般、移行エンジニア、移行リーダー、ネットワーク管理者、AWS 管理者 | 
| ツールをインストールするアプライアンスを準備します。 | ツールコンポーネントをインストールするアプライアンスがツールの仕様とプラットフォーム要件を満たしていることを確認してください。 | 移行エンジニア、移行リーダー、ネットワーク管理者 | 
| 変更指示書を準備します。 | 組織の変更管理プロセスに従って、必要な変更指示を準備し、これらの変更指示が承認されていることを確認します。 | ビルドリード、移行リード | 
| 利害関係者に要件を送ります。 | 導入前のチェックリストとネットワーク要件を利害関係者に送信します。利害関係者は、導入を進める前に必要な要件を確認、評価、準備する必要があります。 | ビルドリード、移行リード | 

### ツールをデプロイ
<a name="deploy-the-tool"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| インストーラをダウンロードします。 | インストーラーまたは仮想マシンイメージをダウンロードします。仮想マシンのイメージは通常、オープン仮想化フォーマット (OVF) で提供されます。 | ビルドリード、移行リード | 
| ファイルを展開します。 | インストーラーを使用している場合は、インストーラーをオンプレミスサーバーにダウンロードして実行する必要があります。 | ビルドリード、移行リード | 
| ツールをサーバーにデプロイします。 | 次のように、対象のオンプレミスサーバーに検出ツールをデプロイします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/get-started-with-automated-portfolio-discovery.html) | 構築リーダー、移行リーダー、ネットワーク管理者 | 
| 検出ツールにログインします。 | 画面に表示される指示に従って、ログインしてツールの開始方法 | 移行リード、構築リード | 
| 製品をアクティベートします。 | ライセンスキーを入力します。 | ビルドリード、移行リード | 
| ツールを設定します。 | Windows、VMware、簡易ネットワーク管理プロトコル (SNMP)、セキュアシェルプロトコル (SSH)、またはデータベースの認証情報など、ターゲットサーバーへのアクセスに必要な認証情報を入力します。 | ビルドリード、移行リード | 

### ツールをテストしてください。
<a name="test-the-tool"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テストサーバーを選択してください。 | 検出ツールのテストに使用できる、本番用ではないサブネットまたは IP アドレスをいくつか特定します。これにより、スキャンを迅速に検証し、エラーを迅速に特定してトラブルシューティングし、テストを本番環境から切り離すことができます。 | 構築リーダー、移行リーダー、ネットワーク管理者 | 
| 選択したテストサーバーのスキャンを開始します。 | エージェントレス検出ツールの場合は、選択したテストサーバーのサブネットまたは IP アドレスを検出ツールコンソールに入力し、スキャンを開始します。エージェントベースの検出ツールの場合は、選択したテストサーバーにエージェントをインストールします。 | 構築リーダー、移行リーダー、ネットワーク管理者 | 
| スキャン結を確認します。 | テストサーバーのスキャン結果を確認します。エラーが見つかった場合は、エラーのトラブルシューティングと修正を行います。エラーと解決策を文書化してください。将来この情報を参照し、ポートフォリオランブックにこの情報を追加できます。 | 構築リーダー、移行リーダー、ネットワーク管理者 | 
| テストサーバーを再スキャンしてください。 | 再スキャンが完了したら、エラーがなくなるまでスキャンを繰り返します。 | 構築リーダー、移行リーダー、ネットワーク管理者 | 

## 関連リソース
<a name="get-started-with-automated-portfolio-discovery-resources"></a>

**AWS リソース**
+ [AWS クラウド 移行用のアプリケーションポートフォリオ評価ガイド](https://docs.aws.amazon.com/prescriptive-guidance/latest/application-portfolio-assessment-guide/introduction.html)
+ 「[検出、計画、推奨の移行ツール](https://aws.amazon.com/prescriptive-guidance/migration-tools/migration-discovery-tools/)」

よく使われるディスカバリーツールの導入ガイド
+ 「[RN150 仮想アプライアンスをデプロイします](https://docs.flexera.com/foundationcloudscape/ug/Content/helplibrary/FCGS_QSG_DeployRN150.htm)」(Flexera ドキュメント)
+ 「[ギャザラーのインストール](https://www.modelizeit.com/documentation/ADC-Gatherer-Install.html)」(ModelizeIT ドキュメント)
+ 「[オンプレミス分析サーバーのインストール](https://www.modelizeit.com/documentation/RejuvenApptor-Install.html)」(ModelizeIT ドキュメント)

## 追加情報
<a name="get-started-with-automated-portfolio-discovery-additional"></a>

自動検出ツールを選択する際の考慮事項

検出ツールにはそれぞれ利点と制限があります。ユースケースに適したツールを選択する際には、次の点を考慮してください。
+ ポートフォリオ評価の目標を達成するのに必要なメタデータのすべてではないにしても、ほとんどを収集できる発見ツールを選択してください。
+ ツールではサポートされていないため、手動で収集する必要のあるメタデータを特定してください。
+ 検出ツールの要件を利害関係者に提供し、関係者がサーバー、ネットワーク、認証情報の要件など、社内のセキュリティ要件とコンプライアンス要件に基づいてツールを見直し、評価できるようにします。
  + ツールでは、対象となるワークロードにエージェントをインストールする必要がありますか?
  + このツールでは、環境内に仮想アプライアンスを設定する必要がありますか?
+ データレジデンシーの要件を決定してください。データを環境外に保存したくない組織もあります。これに対処するには、ツールの一部のコンポーネントをオンプレミス環境にインストールする必要がある場合があります。
+ ツールが対象ワークロードのオペレーティングシステム (OS) と OS バージョンをサポートしていることを確認してください。
+ ポートフォリオにメインフレーム、ミッドレンジ、レガシーサーバーが含まれているかどうかを確認してください。ほとんどの検出ツールはこれらのワークロードを依存関係として検出できますが、使用率やサーバーの依存関係など、デバイスの詳細を取得できないツールもあります。Device42 と ModernizeIT の検出ツールはどちらもメインフレームとミッドレンジのサーバーをサポートしています。

## アタッチメント
<a name="attachments-8c9d84de-e84a-4b0c-bcaa-389cd90be1f0"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/8c9d84de-e84a-4b0c-bcaa-389cd90be1f0/attachments/attachment.zip)」

# オンプレミスの Cloudera ワークロードを AWS 上の Cloudera データプラットフォームに移行する
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws"></a>

*Amazon Web Services、Dilip Rajan、Battulga Purevragchaa*

*Cloudera、Inc.、Nijjwol Lamsal*

## 概要
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-summary"></a>

このパターンでは、オンプレミスの Cloudera 分散 Hadoop (CDH)、Hortonworks データプラットフォーム (HDP)、および Cloudera データプラットフォーム (CDP) のワークロードを AWS 上の CDP パブリッククラウドに移行するための概要レベルの手順を説明しています。Cloudera プロフェッショナルサービスおよびシステムインテグレーター (SI) と提携して、これらのステップを実装することをお勧めします。

Cloudera のお客様がオンプレミスの CDH、HDP、CDP のワークロードをクラウドに移行したいと思う理由はたくさんあります。一般的な理由は以下のとおりです。
+ データレイクハウスやデータメッシュなどの新しいデータプラットフォームパラダイムの採用を効率化します。
+ ビジネスの俊敏性を高め、既存のデータ資産へのアクセスと推論を民主化します。
+ 総保有コスト (TCO) が低くなります
+ ワークロードの伸縮自在性を強化
+ 従来のオンプレミスのインストールベースと比較して、スケーラビリティを高め、データサービスのプロビジョニングにかかる時間を大幅に短縮できます。
+ レガシーハードウェアを廃止、ハードウェアの更新サイクルを大幅に短縮
+ 従量制料金を活用してください。この価格は、Cloudera ライセンスモデル (CCU) を使用した AWS 上の Cloudera ワークロードにも適用されます。
+ 継続的インテグレーションおよび継続的デリバリー (CI/CD) のプラットフォームにより、より迅速な導入や統合の強化を活用する
+ 単一の統合プラットフォーム (CDP) で複数のワークロードに対応

Clouderaは、機械学習、データエンジニアリング、データウェアハウス、オペレーショナルデータベース、ストリーム処理 (CSP)、データセキュリティとガバナンスなど、主要なワークロードをすべてサポートします。Cloudera はこれらのワークロードを長年にわたりオンプレミスで提供してきました。ワークロードマネージャーとレプリケーションマネージャーを備えた CDP パブリッククラウドを使用することで、これらのワークロードを AWS クラウドに移行できます。 

Cloudera Shared Data Experience (SDX) では、これらのワークロード全体で共有メタデータカタログが提供されるため、一貫したデータ管理と運用が容易になります。SDX には、脅威から保護するための包括的できめ細かなセキュリティと、ペイメントカード業界データセキュリティ標準 (PCI DSS) や GDPR などの標準に準拠するための監査および検索機能の統合ガバナンスも含まれています。 

一見してのCDP の移行


|  |  | 
| --- |--- |
|    ワークロード | ソースワークロード | CDH、HDP、および CDP プライベートクラウド | 
| --- |--- |--- |
| ソース環境 | Windows、Linuxオンプレミス、コロケーション、または AWS 以外の環境 | 
| 送信先ワークロード | AWS 上の CDP パブリッククラウド | 
| 送信先環境 | 導入モデル:顧客アカウント運用モデル:カスタマー/Cloudera コントロールプレーン | 
| ** **** ****移行** | 移行戦略 (「7Rs」) | リホスト、リプラットフォーム、リファクタリング | 
| これはワークロードのバージョンアップですか？ | はい | 
| 移行期間 | 導入:顧客アカウント、仮想プライベートクラウド (VPC)、CDP Public Cloud 顧客管理環境の作成に約 1 週間かかります。移行期間:ワークロードの複雑さと規模にもよりますが、1 ～ 4 か月。 | 
| コスト | AWS でのワークロードの実行コスト | 高いレベルでは、AWS への CDH ワークロード移行のコストは、AWS 上に新しい環境を構築することを前提としている。これには、新しい環境向けのコンピューティングリソースとライセンスソフトウェアのプロビジョニングに加えて、人員の時間と労力を考慮することが含まれます。Cloudera のクラウド使用量ベースの価格モデルでは、バースト機能と自動スケーリング機能を柔軟に活用できます。詳細については、Cloudera ウェブサイトの「[CDP パブリッククラウドサービス料金](https://www.cloudera.com/products/pricing/cdp-public-cloud-service-rates.html)」をご覧ください。Cloudera のエンタープライズ「[データハブ](https://www.cloudera.com/products/enterprise-data-hub.html)」は Amazon Elastic Compute Cloud (Amazon EC2) をベースに、従来のクラスターを忠実にモデル化しています。データハブは「[カスタマイズ](https://docs.cloudera.com/data-hub/cloud/create-cluster-aws/topics/mc-creating-a-cluster.html)」可能ですが、これはコストに影響します。「[CDP パブリッククラウドデータウェアハウス](https://docs.cloudera.com/data-warehouse/cloud/index.html)」、「[Cloudera 機械学習](https://docs.cloudera.com/machine-learning/cloud/product/topics/ml-product-overview.html)」、および「[Cloudera データエンジニアリング (CDE)](https://docs.cloudera.com/data-engineering/cloud/index.html)」はコンテナベースで、自動的にスケーリングするように設定できます。 | 
| ** **** ****インフラストラクチャ契約とフレームワーク** | システム要件 | 「[前提条件](#migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-prereqs)」セクションを参照してください。 | 
| SLA | 「[CDP パブリッククラウドに関する Cloudera サービスレベル契約](https://www.cloudera.com/legal/terms-and-conditions/cdp-public-cloud-sla.html)」を参照してください。 | 
| DR | Cloudera ドキュメントの「[ディザスタリカバリ](https://docs.cloudera.com/cdp-reference-architectures/latest/cdp-ra-operations/topics/cdp-ra-abstract.html)」を参照してください。 | 
| ライセンスと運用モデル (ターゲット AWSアカウントの場合) | Bring Your Own License (BYOL) モデル | 
| ** ****コンプライアンス** | セキュリティ要件 | Cloudera ドキュメントの「[Cloudera セキュリティの概要](https://docs.cloudera.com/cdp-private-cloud-base/7.1.6/security-overview/topics/cm-security-overview.html)」を参照してください。 | 
| その他の「[コンプライアンス認証](https://aws.amazon.com/compliance/programs)」 | 「[一般データ保護規則 (GDPR)](https://www.cloudera.com/solutions/lower-business-risks/general-data-protection-regulation.html)」の遵守と「[CDP トラストセンター](https://www.cloudera.com/products/trust-center.html)」については、Cloudera のウェブサイトに掲載されている情報をご覧ください。 | 

## 前提条件と制限
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-prereqs"></a>

**前提条件**
+ アカウント、リソース、サービス、アクセス許可 (AWS ID & アクセス管理 (IAM) ロールやポリシー設定など) を含む「[AWS アカウント要件](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-requirements-aws.html)」
+ Cloudera ウェブサイトから「[CDP をデプロイするための前提条件](https://docs.cloudera.com/cdp-public-cloud/cloud/getting-started/topics/cdp-set_up_cdp_prerequisites.html)」

移行には以下の役割と専門知識が必要です。


| 
| 
| ロール  | スキルと責任 | 
| --- |--- |
| 移行リード | 経営陣のサポート、チームコラボレーション、計画、実装、評価を保証する | 
| Cloudera SME | CDH、HDP、CDP の管理、システム管理、アーキテクチャに関する専門スキル | 
| AWS アーキテクト | AWS のサービス、ネットワーク、セキュリティ、アーキテクチャのスキル | 

## アーキテクチャ
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-architecture"></a>

適切なアーキテクチャを構築することは、移行とパフォーマンスを確実に期待に応えるための重要なステップです。移行作業がこのプレイブックの前提条件を満たすようにするには、仮想プライベートクラウド (VPC) ホストインスタンスまたは CDP 上の AWS クラウド内のターゲットデータ環境が、オペレーティングシステムとソフトウェアのバージョン、および主要なマシン仕様の点でソース環境と同等である必要があります。

以下の図（「[Cloudera Shared Data Experience データシート](https://www.cloudera.com/content/dam/www/marketing/resources/datasheets/cloudera-sdx-datasheet.pdf?daqp=true)」から許可を得て複製）は、CDP 環境のインフラストラクチャコンポーネントと、階層またはインフラストラクチャコンポーネントがどのように相互作用するかを示しています。

![\[CDP 環境コンポーネント\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bb47435e-2638-425c-ac37-7d55053452ac/images/91d62277-7fde-4ec6-8e2b-86a446e2f6ee.png)


アーキテクチャには以下の CDP コンポーネントが含まれます。
+ データハブは Cloudera Runtime を搭載したワークロードクラスターを起動および管理するためのサービスです。データハブのクラスター定義を使用して、カスタムユースケース向けにワークロードクラスターをプロビジョニングしてアクセスしたり、カスタムクラスター構成を定義したりできます。詳細については、「[Cloudera のウェブサイト](https://docs.cloudera.com/data-hub/cloud/index.html)」を参照してください。
+ データフローとストリーミングは、データが移動する中で企業が直面する主な課題に対処します。以下のような管理をしています。
  + 高ボリュームおよび高スケールでのリアルタイムデータストリーミングの処理
  + ストリーミングデータの出所とリネージのトラッキング
  + エッジアプリケーションとストリーミングソースの管理と監視

  詳細については、Cloudera ウェブサイトの「[Cloudera DataFlow](https://www.cloudera.com/products/dataflow.html)」と「[CSP](https://www.cloudera.com/products/stream-processing.html)」を参照してください。
+ データエンジニアリングには、組織がデータパイプラインとワークフローを構築し維持するのに役立つデータ統合、データ品質、データガバナンスが含まれます。詳細については、「[Cloudera のウェブサイト](https://docs.cloudera.com/data-engineering/cloud/index.html)」を参照してください。Cloudera Data Engineering ワークロードの「[AWS でのコスト削減を促進するスポットインスタンスのサポート](https://docs.cloudera.com/data-engineering/cloud/cost-management/topics/cde-spot-instances.html)」についてご覧ください。
+ Data Warehouse** **を利用すると、ワークロードの需要に応じて自動的にスケーリングする、独立したデータウェアハウスとデータマートを作成できます。このサービスでは、データウェアハウスとデータマートごとに独立したコンピューティングインスタンスと自動最適化が可能になり、SLA を満たしながらコストを節約できます。詳細については、「[Cloudera のウェブサイト](https://docs.cloudera.com/data-warehouse/cloud/index.html)」を参照してください。AWS 上の Cloudera データウェアハウスの「[コスト管理](https://docs.cloudera.com/data-warehouse/cloud/planning/topics/dw-manage-cloud-costs.html)」と「[自動スケーリング](https://docs.cloudera.com/data-warehouse/cloud/auto-scaling/topics/dw-public-cloud-autoscaling-overview.html)」について学びましょう。
+ CDP のオペレーショナルデータベースは、スケーラブルで高性能なアプリケーションのための信頼性が高く柔軟な基盤を提供します。運用とウェアハウジングの統合プラットフォーム内で、従来の構造化データだけでなく新しい非構造化データも提供する、リアルタイムで、いつでも利用可能な、スケーラブルなデータベースを実現します。詳細については、「[Cloudera のウェブサイト](https://www.cloudera.com/products/operational-db.html)」を参照してください。
+ Machine Learning は、セルフサービスのデータサイエンスとデータエンジニアリング機能をエンタープライズデータクラウド内の単一のポータブルサービスに統合するクラウドネイティブな機械学習プラットフォームです。機械学習と人工知能 (AI) をどこにでもデータにスケーラブルに展開できます。詳細については、「[Cloudera のウェブサイト](https://docs.cloudera.com/machine-learning/cloud/index.html)」を参照してください。

AWS 上の CDP

以下の図 (Cloudera ウェブサイトからの許可を得て改変) は、AWS 上の CDP の大まかなアーキテクチャを示しています。CDP は「[独自のセキュリティモデル](https://docs.cloudera.com/runtime/7.1.0/cdp-security-overview/topics/security-management-console-security.html)」を実装して、アカウントとデータフローの両方を管理しています。これらは「[クロスアカウントロール](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-aws-req-credential.html)」を使用して「[IAM](https://aws.amazon.com/iam/)」と統合されます。 

![\[CDP on AWS の概要レベルのアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bb47435e-2638-425c-ac37-7d55053452ac/images/54420517-38b4-4e82-bd19-9ded50ed009c.png)


CDP コントロールプレーンは、独自の VPC の Cloudera マスターアカウントにあります。各顧客アカウントには独自のサブアカウントと固有の VPC があります。クロスアカウントIAMロールとSSLテクノロジーは、コントロールプレーン間の管理トラフィックを、各顧客VPC 内のインターネットでルーティング可能なパブリックサブネットにあるカスタマーサービスにルーティングします。お客様のVPC では、Cloudera Shared Data Experience（SDX）が統合ガバナンスとコンプライアンスを備えたエンタープライズクラスのセキュリティを実現し、データからより迅速に洞察を引き出すことができます。SDX は Cloudera のすべての製品に組み込まれている設計哲学です。「[SDX](https://docs.cloudera.com/cdp-public-cloud/cloud/overview/topics/cdp-services.html)」と「[AWS 向けの CDP パブリッククラウドネットワークアーキテクチャ](https://docs.cloudera.com/cdp-public-cloud/cloud/aws-refarch/topics/cdp-pc-aws-refarch-overview.html)」の詳細については、「Cloudera のドキュメント」を参照してください。

## ツール
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-tools"></a>

** サービス**
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
+ 「[Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)」は、AWS で Kubernetes を実行する際に役立ち、独自の Kubernetes コントロールプレーンまたはノードをインストールまたは維持する必要はありません。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

オートメーションとツール
+ その他のツールとしては、「[Cloudera Backup データリカバリ (BDR)](https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_bdr_tutorials.html)」、「[AWS Snowball](https://aws.amazon.com/snowball/)」、「[AWS Snowmobile](https://aws.amazon.com/snowmobile/)」を使用して、オンプレミスの CDH、HDP、CDP から AWS がホストする CDP へのデータ移行を支援できます。
+ 新規導入には、「[CDP 用 AWS パートナーソリューション](https://aws.amazon.com/solutions/partners/terraform-modules/cdp-public-cloud/)」を使用することをお勧めします。

## エピック
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-epics"></a>

### 移行の準備をする
<a name="prepare-for-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Cloudera チームと連携してください。 | Cloudera は顧客との標準化されたエンゲージメントモデルを追求しており、貴社のシステムインテグレーター (SI) と協力して同じアプローチを推進することができます。Cloudera のカスタマーチームに連絡すれば、プロジェクトを開始するためのガイダンスや必要な技術リソースを提供してもらえます。Cloudera チームに連絡することで、移行日が近づいたら、必要なすべてのチームが移行の準備を整えることができます。 Cloudera プロフェッショナルサービスに連絡して、Cloudera の導入をパイロット版から本番環境に迅速に、低コストで、最高のパフォーマンスで移行できます。サービスの詳細なリストについては、「[Cloudera ウェブサイト](https://www.cloudera.com/about/services-and-support/professional-services.html)」を参照してください。 | 移行リード | 
| VPC 用の CDP パブリッククラウド環境を AWS 上に作成します。 | Cloudera プロフェッショナルサービスまたは SI と連携して CDP パブリッククラウドを計画し、AWS 上の VPC にデプロイします。 | Cloudera 中小企業のクラウドアーキテクト | 
| 移行するワークロードに優先順位を付け、評価する。 | オンプレミスのすべてのワークロードを評価して、移行が最も簡単なワークロードを決定します。ミッションクリティカルではないアプリケーションは、顧客への影響が最小限になるため、最初に移行するのが最適です。ミッションクリティカルなワークロードは、他のワークロードの移行に成功したら、最後に保存しておきます。一時的な (CDP データエンジニアリング) ワークロードは、永続的な (CDP データウェアハウス) ワークロードよりも移行が簡単です。移行の際には、データ量と場所を考慮することも重要です。課題としては、データをオンプレミス環境からクラウドに継続的に複製することや、データをクラウドに直接インポートするようにデータインジェストパイプラインを変更することが挙げられます。 | 移行リード | 
| CDH、HDP、CDP、レガシーアプリケーションの移行アクティビティについて話し合う。 | Cloudera ワークロードマネージャーを使用して、以下のアクティビティを検討し、計画を開始してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.html) | 移行リード | 
| Cloudera レプリケーションマネージャーの要件と推奨事項をすべて記入してください。 | Cloudera プロフェッショナルサービスおよび SI と協力して、AWS 上の CDP パブリッククラウド環境にワークロードを移行する準備をしてください。 以下の要件と推奨事項を理解しておくと、Replication Manager サービスのインストール中およびインストール後に発生する一般的な問題を回避するのに役立ちます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws.html) | 移行リード | 

### CDP を AWS に移行する
<a name="migrate-cdp-to-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Cloudera ワークロードマネージャーを使用して、開発/テスト環境の最初のワークロードを移行します。 | SI は、最初のワークロードを AWS クラウドに移行するのに役立ちます。これは、顧客向けのものでもミッションクリティカルなものでもないアプリケーションでなければなりません。開発/テスト移行の理想的な候補は、CDP Data Engineering ワークロードなど、クラウドで簡単にデータを取り込めるアプリケーションです。これは、中断のないアクセスを必要とする多数のユーザーがいる可能性のある CDP データウェアハウスワークロードのような永続的なワークロードと比較して、通常はアクセスするユーザーが少ない一時的なワークロードです。データエンジニアリングのワークロードは永続的ではないため、何か問題が発生した場合のビジネスへの影響を最小限に抑えることができます。ただし、これらのジョブはプロダクションレポートにとって重要になる可能性があるため、影響の少ないデータエンジニアリングのワークロードを最初に優先してください。 | 移行リード | 
| 必要に応じて移行手順を繰り返します。 | Cloudera ワークロードマネージャーは、クラウドに最適なワークロードを特定するのに役立ちます。クラウドのパフォーマンス評価、ターゲット環境のサイジング/キャパシティプラン、レプリケーションプランなどの指標を提供します。移行に最適な候補は、季節的なワークロード、臨時のレポート、リソースをあまり消費しない断続的なジョブです。Cloudera Replication Managerは、データをオンプレミスからクラウドへ、そしてクラウドからオンプレミスへと移動します。ワークロードマネージャーを使用して、データウェアハウス、データエンジニアリング、機械学習のワークロード、アプリケーション、パフォーマンス、インフラストラクチャ容量をプロアクティブに最適化します。データウェアハウスをモダナイズする方法の詳細なガイドについては、「[Cloudera ウェブサイト](https://www.cloudera.com/content/dam/www/marketing/resources/webinars/modern-data-warehouse-fundamentals.png.landing.html)」をご覧ください。 | Cloudera SME | 

## 関連リソース
<a name="migrate-on-premises-cloudera-workloads-to-cloudera-data-platform-on-aws-resources"></a>

Cloudera ドキュメント
+ 「[CDP、Cloudera マネージャー、レプリケーションマネージャーへのクラシッククラスターの登録:](https://docs.cloudera.com/replication-manager/cloud/operations/topics/rm-requirements-for-bdr-cdh-clusters.html)」
  + 「[マネジメントコンソール](https://docs.cloudera.com/management-console/cloud/overview/topics/mc-management-console.html)」
  + 「[レプリケーションマネージャーハイブレプリケーション](https://docs.cloudera.com/replication-manager/cloud/core-concepts/topics/rm-replication-of-data-using-hive.html)」
+ 「[Sentry レプリケーション](https://docs.cloudera.com/replication-manager/cloud/core-concepts/topics/rm-sentry-policy-replication.html)」 
+ 「[Sentry アクセス許可](https://docs.cloudera.com/replication-manager/cloud/core-concepts/topics/rm-sentry-ranger-permissions.html)」
+ 「[データハブクラスター計画チェックリスト](https://docs.cloudera.com/data-hub/cloud/cluster-planning/topics/dh-cluster-checklist.html)」
+ 「[ワークロードマネージャーアーキテクチャ](https://docs.cloudera.com/workload-manager/cloud/configuration/topics/wm-public-architecture-wm.html)」
+ 「[レプリケーションマネージャー要件](https://docs.cloudera.com/replication-manager/cloud/index.html)」
+ 「[Cloudera データプラットフォームのオブザーバビリティ](https://www.cloudera.com/products/observability.html)」
+ 「[AWS 要件](https://docs.cloudera.com/cdp-public-cloud/cloud/requirements-aws/topics/mc-requirements-aws.html)」

AWS ドキュメント
+ [クラウドへのデータ移行](https://aws.amazon.com/cloud-data-migration/)

# Microsoft SQL サーバーを AWS クラウドに移行した後に接続エラーを解決する
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud"></a>

*Premkumar Chelladurai、Amazon Web Services*

## 概要
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-summary"></a>

Windows Server 2008 R2、2012、または 2012 R2 で実行中の Microsoft SQL Server をAmazon Web Services (AWS) クラウド上の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに移行後、SQL Server への接続が失敗し、次のエラーが表示されます。 
+ `[Microsoft][ODBC SQL Server Driver][DBNETLIB] General Network error`
+ `ERROR [08S01] [Microsoft][SQL Native Client]Communication link failure. System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)`
+ `TCP Provider: The semaphore timeout period has expired`

このパターンでは、Windows Server 2008 R2、2012、または 2012 R2 で実行中の SQL Server のオペレーティングシステム (OS) とネットワークインターフェイスレベルで Windows スケーラブルネットワークパック (SNP) 機能をオフにすることでこれらのエラーを解決する方法を説明します。

## 前提条件と制限
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-prereqs"></a>

**前提条件**
+ Windows サーバーの管理者特権。
+ AWS アプリケーション移行サービスを移行ツールとして使用した場合は、次の Windows Server バージョンのいずれかが必要です。
  + Windows Server 2008 R2 サービスパック 1、2012、または 2012 R2
+ CloudEndure Migration を移行ツールとして使用した場合は、次の Windows Server バージョンのいずれかが必要です。
  + Windows Server 2003 R2 Service Pack 3、2008、2008 R2 サービスパック 1、2012、または 2012 R2

## ツール
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-tools"></a>
+ 「[Amazon EC2](https://docs.aws.amazon.com/ec2/index.html)」— Amazon Elastic Compute Cloud (Amazon EC2) は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。Amazon EC2 を使用して必要な分だけ仮想サーバーを起動し、スケールアウトまたはスケールインできます。 
+ [Windows サーバー](https://docs.microsoft.com/en-us/windows-server/) — Windows Server は、接続されたアプリケーション、ネットワーク、および Web サービスのインフラストラクチャを構築するプラットフォームです。

## エピック
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-epics"></a>

### OS レベルと伸縮性ネットワークインターフェイスレベルで SNP 機能をオフにする
<a name="turn-off-snp-features-at-the-os-and-elastic-network-interface-levels"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| OS レベルで SNP 機能をオフにします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.html) | AWS 管理者、AWS システム管理者、移行エンジニア、クラウド管理者 | 
| 伸縮性のあるネットワークインターフェイスレベルで SNP 機能をオフにします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.html) | AWS 管理者、クラウド管理者、AWS システム管理者 | 

## 関連リソース
<a name="resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud-resources"></a>
+ [RSS、NetDMA などの高度なネットワークパフォーマンス機能のトラブルシューティング方法](https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/troubleshoot-network-performance-features-rss-netdma)

# RHEL ソースサーバーを再起動した後、SELinux を無効にせずに AWS レプリケーションエージェントを自動的に再起動する
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server"></a>

*Anil Kunapareddy、Venkatramana Chintha、Shanmugam Shanker、Amazon Web Services*

## 概要
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-summary"></a>

AWS アプリケーション移行サービスは、Red Hat Enterprise Linux (RHEL) ワークロードの Amazon Web Services (AWS) クラウドへの移行を簡素化、促進、自動化するのに役立ちます。ソースサーバーをアプリケーション移行サービスに追加するには、サーバーに AWS Replication エージェントをインストールします。

アプリケーション移行サービスでは、ブロックレベルの非同期レプリケーションをリアルタイムで行うことができます。つまり、レプリケーションプロセス全体を通して通常の IT 運用を継続できるということです。 これらの IT 運用では、移行中に RHEL ソースサーバーの再起動または再起動が必要になる場合があります。この場合、AWS Replication エージェントは自動的に再起動せず、データレプリケーションは停止します。通常、セキュリティ強化版 Linux (SELinux) を**無効**モードまたは**許可**モードに設定すると、AWS レプリケーションエージェントが自動的に再起動されます。ただし、組織のセキュリティポリシーで SELinux の無効化が禁止されている場合や、[ファイルのラベルを変更](https://access.redhat.com/solutions/3176) しなければならない場合もあります。

このパターンは、RHEL ソースサーバーが再起動または移行中に再起動したときに SELinux をオフにせずに AWS Replication エージェントを自動的に再起動する方法を示しています。 

## 前提条件と制限事項
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ AWS クラウドに移行したいオンプレミスの RHEL ワークロード。 
+ アプリケーション移行サービスコンソールから初期化されたアプリケーション移行サービス。初期化が必要なのは、このサービスを初めて使用するときだけです。手順については、[AWS Service Catalog のドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/mandatory-setup.html)を参照してください。
+ Application Migration Service 用の既存の [AWS Identity and Access Management (IAM) ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。詳細については、[Android アプリケーション ID のドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/mgn-policies.html)を参照してください。

バージョン
+ RHEL バージョン 7 以降

## ツール
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-tools"></a>

**AWS サービス**
+ [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) は、高度に自動化されたリフトアンドシフト (リホスト) ソリューションです。これにより、AWS へのアプリケーションの移行を簡略化、迅速化し、コストを削減します。

**Linux コマンド**

次の表は、RHEL ソースサーバーで実行する Linux コマンドの一覧です。これらは、このパターンのエピックやストーリーにも記載されています。 


| 
| 
| コマンド | 説明 | 
| --- |--- |
| `#systemctl –version` | システムバージョンを識別します。 | 
| `#systemctl list-units --type=service` | RHEL サーバーで利用できるすべてのアクティブなサービスを一覧表示します。 | 
| `#systemctl list-units --type=service \| grep running` | RHEL サーバー上で現在実行中のすべてのサービスを一覧表示します。 | 
| `#systemctl list-units --type=service \| grep failed` | RHEL サーバーの再起動または再起動後にロードに失敗したすべてのサービスを一覧表示します。 | 
| `restorecon -Rv /etc/rc.d/init.d/aws-replication-service` | コンテキストを `aws-replication-service` に変更します。 | 
| `yum install policycoreutils*` | SELinux システムの運用に必要なポリシーコアユーティリティをインストールします。 | 
| `ausearch -c "insmod" --raw \| audit2allow -M my-modprobe` | 監査ログを検索し、ポリシーのモジュールを作成します。 | 
| `semodule -i my-modprobe.pp` | ポリシーを有効にします。 | 
| `cat my-modprobe.te` | `my-modprobe.te` ファイルの内容を表示します。 | 
| `semodule -l \| grep my-modprobe` | ポリシーが SELinux モジュールに読み込まれているかどうかを確認します。 | 

## エピック
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-epics"></a>

### AWS レプリケーションエージェントをインストールし、RHEL ソースサーバーを再起動します。
<a name="install-the-aws-replication-agent-and-reboot-the-rhel-source-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アクセスキーとシークレットアクセスキーを使用してApplication Migration Service ユーザーを作成します。 | AWS Replication エージェントをインストールするには、必要な AWS 認証情報を使用してアプリケーション移行サービスユーザーを作成する必要があります。手順については、[AWS Service Catalog のドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/credentials.html)を参照してください。 | 移行エンジニア | 
| AWS レプリケーションエージェントをインストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server.html) | 移行エンジニア | 
| RHEL ソースサーバーを再起動または再起動します。 | [Migration ダッシュボード](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html)の **[データ複製ステータス]** が **Stalled** と表示されたら、RHEL ソースサーバーを再起動します。 | 移行エンジニア | 
| データレプリケーションステータス | 1 時間待ってから、Migration ダッシュボードで**データ複製のステータス**をもう一度確認します。これは **Healthy** 状態になっているはずです。 | 移行エンジニア | 

### RHEL ソースサーバーの AWS レプリケーションエージェントのステータスを確認する
<a name="check-aws-replication-agent-status-on-the-rhel-source-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| システムバージョンを識別します。 | RHEL ソースサーバーのコマンドラインインターフェイスを開き、以下のコマンドを実行してシステムバージョンを確認します。`#systemctl –version` | 移行エンジニア | 
| すべてのアクティブなサービスを一覧表示します。 | RHEL サーバー上で利用可能なすべてのアクティブなサービスを一覧表示するには、以下のコマンドを実行します。`#systemctl list-units --type=service` | 移行エンジニア | 
| 実行中のすべてのサービスを一覧表示します。 | RHEL サーバー上で現在実行中のすべてのサービスを一覧表示します。`#systemctl list-units --type=service \| grep running` | 移行エンジニア | 
| ロードに失敗したサービスをすべて一覧表示します。 | RHEL サーバーの再起動または再起動後にロードに失敗したすべてのサービスを一覧表示します。`#systemctl list-units --type=service \| grep failed` | 移行エンジニア | 

### SELinux モジュールを作成して実行します。
<a name="create-and-run-the-selinux-module"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セキュリティコンテキストを変更します。 | RHEL ソースサーバーのコマンドラインインターフェイスで、次のコマンドを実行してセキュリティコンテキストを AWS レプリケーションサービスに変更します。`restorecon -Rv /etc/rc.d/init.d/aws-replication-service` | 移行エンジニア | 
| コアユーティリティをインストールします。 | SELinux システムとそのポリシーの運用に必要なコアユーティリティをインストールするには、以下のコマンドを実行します。`yum install policycoreutils*` | 移行エンジニア | 
| 監査ログを検索し、ポリシーのモジュールを作成します。 | コマンドを実行します。`ausearch -c "insmod" --raw \| audit2allow -M my-modprobe` | 移行エンジニア | 
| my-modprobe-te ファイルの内容を表示します。 | この `my-modprobe.te` ファイルは **audit2allow **コマンドによって生成されます。このファイルには SELinux ドメイン、ポリシーソースディレクトリ、サブディレクトリが含まれ、ドメインに関連するアクセスベクトルルールとトランジションが指定されます。次のコマンドを実行して、 ファイルの内容を表示します。`cat my modprobe.te` | 移行エンジニア | 
| ポリシーを有効にします。 | モジュールを挿入してポリシーパッケージをアクティブにするには、以下のコマンドを実行します。`semodule -i my-modprobe.pp` | 移行エンジニア | 
| モジュールがロードされているか確認してください。 | コマンドを実行します。`semodule -l \| grep my-modprobe`SELinux モジュールがロードされると、移行中に SELinux を**無効** モードまたは**許可**モードに設定する必要がなくなります。 | 移行エンジニア | 
| RHEL ソースサーバーを再起動または再起動し、データ複製のステータスを確認します。 | AWS Migration Service コンソールを開き、**データ複製の進行**状況に移動して、RHEL ソースサーバーを再起動または再起動します。これで、RHEL ソースサーバーの再起動後にデータ複製が自動的に再開されるはずです。 | 移行エンジニア | 

## 関連リソース
<a name="restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server-resources"></a>
+ [アプリケーション移行サービスドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)
+ [テクニカルトレーニング資料](https://docs.aws.amazon.com/mgn/latest/ug/mgn-training.html)
+ [AWS レプリケーションエージェントの問題のトラブルシューティング](https://docs.aws.amazon.com/mgn/latest/ug/Troubleshooting-Agent-Issues.html)
+ [Application Migration Service ポリシー](https://docs.aws.amazon.com/mgn/latest/ug/mgn-policies.html)

# リアーキテクト
<a name="migration-rearchitect-pattern-list"></a>

**Topics**
+ [Oracle の VARCHAR2 (1) データ型を Amazon Aurora PostgreSQL のブールデータ型に変換](convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.md)
+ [Aurora PostgreSQL-Compatible でのアプリケーションユーザーとロールの作成](create-application-users-and-roles-in-aurora-postgresql-compatible.md)
+ [PostgreSQL 互換の Aurora グローバルデータベースを使用して Oracle DR をエミュレート](emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.md)
+ [SQL Server から PostgreSQL に移行する際に、PII データに SHA1 ハッシュを実装する](implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.md)
+ [Oracle SQL Developer と AWS SCT を使用して Amazon RDS for Oracle から Amazon RDS for PostgreSQL に段階的に移行](incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.md)
+ [Aurora PostgreSQL 互換のファイルエンコーディングを使用して BLOB ファイルを TEXT にロード](load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.md)
+ [AWS SCT と AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行する AWS CLI CloudFormation](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.md)
+ [AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行します](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.md)
+ [Oracle SERIALLY\$1REUSABLE プラグマパッケージを PostgreSQL に移行](migrate-oracle-serially-reusable-pragma-packages-into-postgresql.md)
+ [Oracle 外部テーブルを Amazon Aurora PostgreSQL 互換に移行](migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible.md)
+ [関数ベースのインデックスを Oracle から PostgreSQL に移行する](migrate-function-based-indexes-from-oracle-to-postgresql.md)
+ [エクステンションを使用して Oracle のネイティブ関数を PostgreSQL に移行](migrate-oracle-native-functions-to-postgresql-using-extensions.md)
+ [AWS DMS を使用して Db2 データベースを Amazon EC2 から Aurora MySQL 互換のデータベースに移行する](migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.md)
+ [AWS DMS を使用して Microsoft SQL Server データベースを Amazon EC2 から Amazon DocumentDB に移行します](migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms.md)
+ [オンプレミスの ThoughtSpot Falcon データベースを Amazon Redshift に移行する](migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift.md)
+ [Oracle GoldenGate を使用して Oracle Database から Amazon RDS for PostgreSQL に移行](migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.md)
+ [AWS DMS を使用して Oracle パーティションテーブルを PostgreSQL に移行](migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms.md)
+ [Amazon RDS for Oracle から Amazon RDS for MySQL に移行する](migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql.md)
+ [AWS DMS と AWS SCT を使用して IBM Db2 on Amazon EC2 から Aurora PostgreSQL 互換に移行する](migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.md)
+ [SharePlex と AWS DMS を使用して、Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms.md)
+ [マテリアライズドビューと AWS DMS を使用して Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms.md)
+ [AWS DMS と AWS SCT を使用して Oracle on Amazon EC2 から Amazon RDS for MySQL に移行する](migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [AWS DMS と AWS SCT を使用して、Oracle データベースを Amazon EC2 から Amazon RDS for MariaDB に移行する](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct.md)
+ [AWS DMS と AWS SCT を使用してオンプレミスの Oracle データベースを Amazon RDS for MySQL に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [Oracle バイスタンダーと AWS DMS を使用して、オンプレミスの Oracle データベースを Amazon RDS for PostgreSQL に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.md)
+ [AWS DMS と AWS SCT を使用して Oracle データベースを Amazon Redshift に移行する](migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct.md)
+ [AWS DMS と AWS SCT を使用して Oracle データベースを Aurora PostgreSQL に移行](migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct.md)
+ [オンプレミスの Oracle データベースから Aurora PostgreSQL にデータを移行する](migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql.md)
+ [AWS DMS を使用して SAP ASE から Amazon RDS for SQL Server）に移行する](migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms.md)
+ [AWS DMS を使用してオンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms.md)
+ [AWS SCT データ抽出エージェントを使用して、オンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.md)
+ [レガシーアプリケーションを Oracle Pro\$1C から ECPG に移行する](migrate-legacy-applications-from-oracle-pro-c-to-ecpg.md)
+ [仮想生成列をOracleから PostgreSQL に移行](migrate-virtual-generated-columns-from-oracle-to-postgresql.md)
+ [Aurora PostgreSQL-Compatible で Oracle UTL\$1FILE 機能をセットアップする](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Oracle から Amazon Aurora PostgreSQL への移行後にデータベースオブジェクトを検証する](validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql.md)

# Oracle の VARCHAR2 (1) データ型を Amazon Aurora PostgreSQL のブールデータ型に変換
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql"></a>

*Naresh Damera (Amazon Web Services)*

## 概要
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-summary"></a>

Oracle 用 Amazon Relational Database Service (Amazon RDS) から Amazon Aurora PostgreSQL 互換エディションへの移行中に、 AWS Database Migration Service () で移行を検証するときにデータの不一致が発生する可能性がありますAWS DMS。この不一致を防止するために、VARCHAR2 (1) データ型をブールデータ型に変換できます。

VARCHAR2 データ型には可変長のテキスト文字列が格納され、VARCHAR2 (1) は文字列の長さが 1 文字または 1 バイトであることを示します。VARCHAR2 の詳細については、[Oracle のビルドインデータ型](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020) (Oracle ドキュメント) を参照してください。

このパターンでは、サンプルソースデータテーブル列の VARCHAR2 (1) データは、**Y** (*はい*)、または **N** (*いいえ*) です。 このパターンには、 AWS DMS と AWS Schema Conversion Tool (AWS SCT) を使用して、このデータ型を VARCHAR2(1) の **Y** 値と **N** 値からブール値の **true** 値または **false** 値に変換する手順が含まれています。

**対象者**

このパターンは、 AWS DMSを使用して Oracle データベースを Aurora PostgreSQL 互換に移行した経験があるユーザーに推薦されます。移行が完了したら、[「Converting Oracle to Amazon RDS for PostgreSQL or Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.ToPostgreSQL.html)」(AWS SCT ドキュメント) の推奨事項に従ってください。

## 前提条件と制限
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-prereqs"></a>

**前提条件**
+ アクティブ AWS アカウント。
+ 認証情報、権限、セキュリティグループの設定など、環境が Aurora に対応していることを確認します。詳細については、「[Amazon Aurora の環境をセットアップする](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_SettingUp_Aurora.html)」(Aurora ドキュメント) を参照してください。
+ VARCHAR2 (1) データの入ったテーブル列を含むソース Amazon RDS for Oracle データベース。
+ Amazon Aurora PostgreSQL 互換のターゲットデータベースインスタンス。詳細については、[データベースクラスターを作成して Aurora PostgreSQL データベースクラスターのデータベースに接続](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html#CHAP_GettingStarted.AuroraPostgreSQL.CreateDBCluster) (Aurora ドキュメント) を参照してください。

**製品バージョン**
+ Oracle バージョン 12.1.0.2 以降用の Amazon RDS for Oracle
+ AWS DMS バージョン 3.1.4 以降。詳細については、[「Using an Oracle database as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」および[「Using a PostgreSQL database as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) (AWS DMS documentation)」を参照してください。最も包括的なバージョンと機能のサポート AWS DMS には、 の最新バージョンを使用することをお勧めします。
+ AWS Schema Conversion Tool (AWS SCT) バージョン 1.0.632 以降。最も包括的なバージョンと機能のサポート AWS SCT には、 の最新バージョンを使用することをお勧めします。
+ Aurora には、[Aurora PostgreSQL 互換のデータベースエンジンバージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) (Aurora ドキュメント) に一覧表示された PostgreSQL バージョンが適用されます。

## アーキテクチャ
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-architecture"></a>

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

Amazon RDS for Oracle データベースインスタンス

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

Amazon Aurora PostgreSQL 互換エディションに基づく DB インスタンス上のデータベース

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

![\[データ型を VARCHAR2 (1) からブール値に変更\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5d4dc568-20d8-4883-a942-21c81039d8e6/images/9fd82ae2-56e6-439c-b4cd-9e74fe77b480.png)


## ツール
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-tools"></a>

**AWS のサービス**
+ [Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングに役立つ、フルマネージド型のACID準拠のリレーショナルデータベースエンジンです。
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) は、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行するのに役立ちます。
+ [Oracle 向け Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用すると、 AWS クラウドで Oracle リレーショナルデータベースをセットアップ、運用、スケールできます。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行をサポートします。

**その他のサービス**
+ [Oracle SQL Developer](https://docs.oracle.com/en/database/oracle/sql-developer/) は、従来のデプロイとクラウドベースのデプロイの両方で Oracle データベースの開発と管理を簡素化する統合開発環境です。このパターンでは、このツールを使用して Amazon RDS for Oracle データベースインスタンスに接続し、データをクエリします。
+ [pgAdmin](https://www.pgadmin.org/docs/) はPostgreSQL用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。このパターンでは、このツールを使用して Aurora データベースインスタンスに接続し、データをクエリします。

## エピック
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベース移行レポートを作成する | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html) | DBA、開発者 | 
| 外部キーの制約とトリガーをターゲットデータベースにドロップします。 | PostgreSQLでは、トリガーを使用して、外部キーが実装されます。全ロードフェーズ中、 は各テーブルを一度に 1 つずつ AWS DMS ロードします。次のいずれかの方法を使用して、全ロード中に外部キーの制約を無効にすることを強くお勧めします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html)外部キー制約を無効にすることが不可能な場合は、親テーブルと子テーブルに固有のプライマリデータの AWS DMS 移行タスクを作成します。 | DBA、開発者 | 
| ターゲットデータベースのプライマリキーとユニークキーを無効にします。 | 次のコマンドを使用して、ターゲットデータベースの主キーと制約を無効にします。これにより、初期ロードタスクのパフォーマンスを改善します。<pre>ALTER TABLE <table> DISABLE PRIMARY KEY;</pre><pre>ALTER TABLE <table> DISABLE CONSTRAINT <constraint_name>;</pre> | DBA、開発者 | 
| 初期ロードタスクを作成します。 | で AWS DMS、初期ロードの移行タスクを作成します。手順については、「[Creating a task](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html)」を参照してください。移行方法は、**[既存のデータを移行する]** を選択します。この移行方法は、API** **で `Full Load` と呼ばれます。このタスクはまだ開始しないでください。 | DBA、開発者 | 
| 初期ロードタスクのタスク設定を編集します。 | タスク設定を編集してデータ検証を追加します。これらの検証設定は JSON ファイルで作成する必要があります。手順と例については、[タスク設定を指定](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.html) を参照してください。以下の検証を追加します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html)残りのデータ移行を検証するには、タスクでデータ検証を有効にします。詳細については、[データ検証のタスク設定](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.DataValidation.html)をご参照ください。 | AWS 管理者、データベース管理者 | 
| 継続的レプリケーションタスクの作成 | で AWS DMS、ターゲットデータベースをソースデータベースと同期させる移行タスクを作成します。手順については、[タスクの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html)を参照してください。移行方法には、**データ変更のみを複製**を選択します。このタスクはまだ開始しないでください。 | DBA | 

### 移行タスクをテストします。
<a name="test-the-migration-tasks"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テストのサンプルデータを作成します。 | ソースデータベースで、テストのデータを含むサンプルテーブルを作成します。 | 開発者 | 
| 競合するアクティビティがないことを確認します。 | `pg_stat_activity` を使用して、移行に影響する可能性のあるサーバのアクティビティがないか確認します。詳細については、[統計コレクター](https://www.postgresql.org/docs/current/monitoring-stats.html)（PostgreSQL ドキュメント）を参照してください。 | AWS 管理者 | 
|  AWS DMS 移行タスクを開始します。 |  AWS DMS コンソールの **Dashboard** ページで、前のエピックで作成した初期ロードタスクと継続的なレプリケーションタスクを開始します。 | AWS 管理者 | 
| タスクとテーブルのロード状態を監視します。 | 移行中は、[タスクの状態](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html#CHAP_Tasks.Status) と[テーブルの状態](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html#CHAP_Tasks.CustomizingTasks.TableState) を監視します。初期化ロードタスクが完了した場合、**テーブル統計** タブで次の操作を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.html) | AWS 管理者 | 
| 移行結果を検証します。 | pgAdmin を使用して、ターゲットデータベースのテーブルをクエリします。クエリが成功する場合、データが正常に移行されたことを示します。 | 開発者 | 
| ターゲットデータベースにプライマリキーと外部キーを追加します。 | ターゲットデータベースにプライマリキーと外部キーを作成します。詳細については、[テーブルを変更](https://www.postgresql.org/docs/current/sql-altertable.html) (PostgreSQL ウェブサイト) を参照してください。 | DBA | 
| テストデータをクリーンアップします。 | ソースデータベースとターゲットデータベースで、ユニットテストに作成されたデータをクリーンアップします。 | 開発者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行が完了しました。 | 前のエピックスを繰り返して、実際のソースデータを使用して、*移行タスクをテストします*。これにより、ソースからターゲットデータベースにデータが移行されます。 | 開発者 | 
| ソースデータベースとターゲットデータベースが同期していることを確認する | ソースデータベースとターゲットデータベースが同期していることを確認します。詳細と手順については、「[AWS DMS data validation](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)」を参照してください。 | 開発者 | 
| ソースデータベースの停止 | Amazon RDS for Oracle データベースを停止します。詳細については、「[一時的に Amazon RDS DB インスタンスを停止する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_StopInstance.html)」を参照してください。ソースデータベースを停止すると、 の初期ロードと継続的なレプリケーションタスク AWS DMS が自動的に停止します。これらのタスクを停止するために、追加のアクションは必要ありません。 | 開発者 | 

## 関連リソース
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-resources"></a>

**AWS リファレンス**
+ [AWS DMS と を使用して Oracle データベースを Aurora PostgreSQL に移行する AWS SCT](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct.html) (AWS 規範ガイダンス)
+ [Oracle を Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL に変換する](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.ToPostgreSQL.html) (AWS SCT ドキュメント)
+ [AWS DMS の仕組み](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.html) (AWS DMS ドキュメント)

**その他のリファレンス**
+ [Boolean data type](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-boolean/) (PostgreSQL ドキュメント)
+ [Oracle built-in data types](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020) (Oracle ドキュメント)
+ [pgAdmin](https://www.pgadmin.org/) (pgAdmin ウェブサイト)
+ [SQL Developer](https://www.oracle.com/database/technologies/appdev/sql-developer.html) (Oracle ウェブサイト)

**チュートリアルと動画**
+ [の開始方法 AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Getting Started With Amazon RDS](https://aws.amazon.com/rds/getting-started/)
+ [Introduction to AWS DMS](https://www.youtube.com/watch?v=ouia1Sc5QGo) (ビデオ)
+ [Understanding Amazon RDS](https://www.youtube.com/watch?v=eMzCI7S1P9M) (ビデオ)

## 追加情報
<a name="convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql-additional"></a>

**データ検証スクリプト**

次のデータ検証スクリプトは、**1** を **Y**、**0** を **N** に変換します。 これにより、 AWS DMS タスクが正常に完了し、テーブルの検証に合格します。

```
{
"rule-type": "validation",
"rule-id": "5",
"rule-name": "5",
"rule-target": "column",
"object-locator": {
"schema-name": "ADMIN",
"table-name": "TEMP_CHRA_BOOL",
"column-name": "GRADE"
},
"rule-action": "override-validation-function",
"target-function": "case grade when '1' then 'Y' else 'N' end"
        }
```

`case` スクリプトのステートメントが検証を実行します。検証が失敗した場合、 はターゲットデータベースインスタンスの **public.awsdms\$1validation\$1failures\$1v1** テーブルにレコード AWS DMS を挿入します。このレコードには、テーブル名、エラー時間、およびソーステーブルとターゲットテーブルの不一致値に関する詳細が含まれます。

このデータ検証スクリプトを AWS DMS タスクに追加せず、データがターゲットテーブルに挿入されると、 AWS DMS タスクは検証状態を**不一致レコード**として表示します。

 AWS SCT 変換中、 AWS DMS 移行タスクは VARCHAR2(1) データ型のデータ型をブール値に変更し、`"NO"`列にプライマリキー制約を追加します。

# Aurora PostgreSQL-Compatible でのアプリケーションユーザーとロールの作成
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible"></a>

*Amazon Web Services、Abhishek Verma*

## 概要
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-summary"></a>

Amazon Aurora PostgreSQL-Compatible Edition に移行する場合、ソースデータベースに存在するデータベースユーザーとロールは Aurora PostgreSQL -Compatible データベースで作成する必要があります。Aurora PostgreSQL-Compatible でユーザーとロールを作成するには、次の 2 つの方法があります。
+ ターゲットではソースデータベースと同様のユーザーとロールを使用します。この方法では、ユーザーとロールのデータ定義言語 (DDL) がソースデータベースから抽出されます。その後、それらは変換され、ターゲットの Aurora PostgreSQL-Compatible データベースに適用されます。たとえば、ブログ記事「[SQL で Oracle から PostgreSQL にユーザ、ロールと権限をマッピング](https://aws.amazon.com/blogs/database/use-sql-to-map-users-roles-and-grants-from-oracle-to-postgresql)」では、Oracle ソースデータベースエンジンからの抽出の使用について説明しています。
+ 開発、管理およびデータベースでのその他の関連操作の実行によく使用される、標準化されたユーザーとロールを使用してください。これには、各ユーザーが実行する読み取り専用、読み取り/書き込み、開発、管理とデプロイ操作が含まれています。

このパターンには、標準化されたユーザーとロールのアプローチに必要な Aurora PostgreSQL -Compatible でのユーザーとロールの作成に必要なグラントが含まれています。ユーザーとロールの作成手順は、データベースユーザーに与える権限を最小限に抑えるというセキュリティポリシーに従っています。次の表は、ユーザー、対応するロールとデータベース上の詳細を示しています。


| 
| 
| [ユーザー] | ロール | 目的 | 
| --- |--- |--- |
| `APP_read` | `APP_RO` | スキーマ `APP` の読み取り専用アクセスに使用されます | 
| `APP_WRITE` | `APP_RW` | スキーマ `APP` の書き込み操作と読み取り操作に使用されます | 
| `APP_dev_user` | `APP_DEV` | スキーマ `APP_DEV` の開発目的で使用され、スキーマ `APP` への読み取り専用アクセス権が付与されます | 
| `Admin_User` | `rds_superuser` | データベースの管理者操作を実行するために使用されます | 
| `APP` | `APP_DEP` | `APP` スキーマの下にオブジェクトを作成し、または `APP` スキーマにオブジェクトをデプロイするために使用されます | 

## 前提条件と制限事項
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-prereqs"></a>

**前提条件**
+ アクティブな Amazon Web Services (AWS) アカウント
+ PostgreSQL データベース、Amazon Aurora PostgreSQL-Compatible Edition データベースまたは PostgreSQL データベース用の Amazon Relational Database Service (Amazon RDS)

**製品バージョン**
+ PostgreSQL のすべてのバージョン

## アーキテクチャ
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-architecture"></a>

**ソーステクノロジースタック**
+ 任意のデータベース

**ターゲットテクノロジースタック**
+ Amazon Aurora PostgreSQL 互換

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

次の図は、Aurora PostgreSQL-Compatible データベースのユーザーロールとスキーマアーキテクチャを示しています。

![\[Aurora PostgreSQL-Comaptible データベース用のユーザーロールとスキーマアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/80105a81-e3d1-4258-b3c1-77f3a5e78592/images/b95cb9bc-8bf7-47d1-92e7-66cfb37d7ce7.png)


                                                                                                                                    

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

このパターンには、ユーザー、ロールとスキーマ作成スクリプトが含まれており、ソースまたはターゲットデータベースの既存ユーザーに影響を与えることなく複数回実行できます。

## ツール
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-tools"></a>

**AWS サービス**
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援する、フルマネージド型で ACID 準拠のリレーショナルデータベースエンジンです。

**その他のサービス**
+ [「psql」](https://www.postgresql.org/docs/current/app-psql.html)は、PostgreSQL データベースをインストールするたびにインストールされるターミナルベースのフロントエンドツールです。SQL、PL-PGSQL とオペレーティングシステムのコマンドを実行するためのコマンドラインインターフェースを備えています。
+ [「pgAdmin」](https://www.pgadmin.org/) はPostgreSQL用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。

## エピック
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-epics"></a>

### ユーザーとロールの作成
<a name="create-the-users-and-roles"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| デプロイユーザーの作成 | デプロイメントユーザー `APP` は、デプロイ中にデータベースオブジェクトの作成と変更に使用されます。以下のスクリプトを使用して、スキーマ `APP` にデプロイユーザーロール `APP_DEP` を作成します。アクセス権を検証して、このユーザーには必要なスキーマ `APP` 内のオブジェクトを作成する権限のみが付与されていることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 読み取り専用ユーザーを作成します。 | 読み取り専用ユーザー `APP_read` は、スキーマ `APP` の読み取り専用操作を実行するために使用されます。以下のスクリプトを使用して読み取り専用ユーザーを作成します。アクセス権を検証して、このユーザーがスキーマ `APP` 内のオブジェクトを読み取る権限のみを持っていることおよびスキーマ `APP` に作成された新しいオブジェクトに対する読み取りアクセス権を自動的に付与する権限を持っていることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 読み取り/書き込みユーザーを作成します。 | 読み取り/書き込みユーザー `APP_WRITE` は、スキーマ `APP` の読み取りと書き込み操作の実行に使用されます。以下のスクリプトを使用して読み取り/書き込みユーザーを作成し、そのユーザーに `APP_RW` ロールを付与します。アクセス権を検証して、このユーザーがスキーマ `APP` 内のオブジェクトに対してのみ読み取り権限と書き込み権限を持っていることを確認し、スキーマ `APP` 内に作成された新しいオブジェクトに対する読み取りと書き込みアクセス権を自動的に付与します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) |  | 
| 管理者ユーザーを作成します。 | 管理者ユーザー `Admin_User` は、データベースの管理操作を実行するために使用されます。これらの操作の例は `CREATE ROLE` と `CREATE DATABASE` `Admin_User` です。`rds_superuser` はビルトインロールを使用してデータベースの管理操作を実行します。以下のスクリプトを使用して、データベース内の管理者ユーザー `Admin_User` の権限を作成してテストします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 開発ユーザーを作成します。 | 開発ユーザー `APP_dev_user` には、ローカルスキーマ `APP_DEV` にオブジェクトを作成する権限とスキーマ `APP` の読み取りアクセス権が付与されます。以下のスクリプトを使用して、データベース内のユーザー `APP_dev_user` の権限を作成してテストします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 

## 関連リソース
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-resources"></a>

PostgreSQL ドキュメント
+ 「[ロールの作成](https://www.postgresql.org/docs/9.1/sql-createrole.html)」
+ 「[ユーザーの作成](https://www.postgresql.org/docs/8.0/sql-createuser.html)」
+ 「[定義済みのロール](https://www.postgresql.org/docs/14/predefined-roles.html)」

 

## 追加情報
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-additional"></a>

PostgreSQL 14 エンハンスメント

PostgreSQL 14 には、事前定義されたロールのセットが用意されており、一般的に必要とされる特定の特権的な機能や情報へのアクセスを可能にしています。管理者 (`CREATE ROLE` 権限を持つロールを含む) は、これらのロールや環境内の他のロールをユーザーに付与して、指定された機能や情報にアクセスできるようにすることができます。

管理者は `GRANT` コマンドを使用してこれらのロールへのアクセス権をユーザーに付与できます。たとえば、`pg_signal_backend` ロールに `Admin_User` を付与するには、以下のコマンドを実行します。

```
GRANT pg_signal_backend TO Admin_User;
```

この `pg_signal_backend` ロールは、管理者が信頼できる非スーパーユーザーロールが他のバックエンドにシグナルを送信できるようにすることを目的としています。詳細については、「[PostgreSQL 14 の機能拡張](https://www.postgresql.org/docs/14/predefined-roles.html)」を参照してください。

アクセスの微調整

場合によっては、より詳細なアクセス（テーブルベースのアクセスや列ベースのアクセスなど）をユーザーに提供することが必要になる場合があります。このような場合は、追加ロールを作成して、それらの権限をユーザーに付与することができます。詳細については、「[PostgreSQL Grants](https://www.postgresql.org/docs/8.4/sql-grant.html)」を参照してください。

# PostgreSQL 互換の Aurora グローバルデータベースを使用して Oracle DR をエミュレート
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database"></a>

*Amazon Web Services、HariKrishna Boorgadda*

## 概要
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-summary"></a>

エンタープライズディザスタリカバリ (DR) のベストプラクティスは、基本的に、最小限の介入で、理想的にはデータを失うことなく、災害に耐え (*事業継続*)、通常の運用を再開できる (*事業再開*) 耐障害性のあるハードウェアおよびソフトウェアシステムの設計と実装です。エンタープライズ DR の目標を達成するために耐障害性のある環境を構築するには、費用と時間がかかる場合があり、企業による強いコミットメントが必要です。

Oracle Database には、Oracle データを保護する他のどのアプローチよりも最高レベルのデータ保護と可用性を提供する 3 つの異なる DR アプローチがあります。
+ Oracle データ損失ゼロ・リカバリー・アプライアンス
+ Oracle Active Data Guard
+ Oracle GoldenGate

このパターンは、Amazon Aurora Global Database を使用して Oracle GoldenGate DR をエミュレートする方法を提供します。リファレンスアーキテクチャでは、3 つの AWS リージョンにわたる DR に Oracle GoldenGate を使用しています。このパターンは、ソースアーキテクチャを Amazon Aurora PostgreSQL 互換エディションに基づくクラウドネイティブ Aurora グローバルデータベースにリプラットフォーム化する手順を示しています。

Aurora Global Database は、グローバルフットプリントを持つアプリケーション向けに設計されています。1 つの Aurora データベースは、最大 5 つのセカンダリリージョンの複数の AWS リージョンにまたがっています。Aurora グローバルデータベースには次の特徴量があります。
+ 物理ストレージレベルのレプリケーション
+ 低レイテンシーのグローバル読み取り
+ 地域全体の障害からの迅速なディザスタリカバリ
+ クロスリージョン集の高速移行
+ リージョン間のレプリケーション遅延が少ない
+ データベースへのパフォーマンスへの影響はほとんど、あるいはまったくない

Aurora Global Database 特徴量と利点については、「[Amazon Aurora Global Database の使用](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-overview)」 を参照してください。計画外フェイルオーバーとマネージドフェールオーバーの詳細については、「[Amazon Aurora Global Database でのフェイルオーバーの使用](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-failover)」 を参照してください。

## 前提条件と制限事項
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ アプリケーション接続用の Java Database Connectivity (JDBC) PostgreSQL ドライバー。
+ Amazon Aurora PostgreSQL 互換エディションに基づく Aurora グローバルデータベース
+ Oracle Real Application クラスター (RAC) データベースが Aurora PostgreSQL 互換の Aurora グローバルデータベースに移行されました

Aurora Global Database の制限
+ Aurora グローバルデータベースが AWS リージョンに使用不可です。サポートされているリージョンのリストについては、「[Aurora PostgreSQL による Aurora グローバルデータベース](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.apg)」 を参照してください。
+ サポートされていない特徴量や Aurora グローバルデータベースのその他の制限については、「[Amazon Aurora Global Database の制限事項](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database.limitations)」 を参照してください。

**製品バージョン**
+ Amazon Aurora PostgreSQL 互換エディションバージョン 10.14 以降

## アーキテクチャ
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-architecture"></a>

**ソーステクノロジースタック**
+ Oracle RAC 4 ノードデータベース
+ Oracle GoldenGate

ソースアーキテクチャ

次の図は、Oracle GoldenGate を使用してレプリケートされた、異なる AWS リージョンにある 4 ノード Oracle RAC を持つ 3 つのクラスターを示しています。

![\[1 つのプライマリリージョンと 2 つのセカンダリリージョンの Oracle RAC。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/11d4265b-31af-4ebf-a766-24196193ee01/images/9fc740fc-d339-422e-beaf-1f65690c9d14.png)


**ターゲットテクノロジースタック**
+ Aurora PostgreSQL と互換性のある 3 クラスターの Amazon Aurora Global Database。プライマリリージョンに 1 つのクラスター、異なるセカンダリリージョンに 2 つのクラスターがあります

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

![\[1 つのプライマリリージョンと 2 つのセカンダリリージョンの Amazon Aurora。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/11d4265b-31af-4ebf-a766-24196193ee01/images/8e3deca9-03f2-437c-9341-795ac17e2b42.png)


## ツール
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-tools"></a>

**AWS サービス**
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」 は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型で ACID 準拠のリレーショナルデータベースエンジンです。
+ 「[Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html)」は、複数の AWS リージョンにまたがり、低レイテンシーのグローバル読み取りを提供し、AWS リージョン全体に影響が及ぶ可能性のある機能停止から、すばやい復旧を行います。

## エピック
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-epics"></a>

### リーダー DB インスタンスのリージョンを追加
<a name="add-regions-with-reader-db-instances"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 1 つ以上のセカンダリの Aurora クラスターを接続します。 | [AWS マネジメントコンソール] で、[Amazon Aurora] を選択します。プライマリクラスターを選択し、**[アクション]** を選択し、ドロップダウンリストから **[リージョンを追加]** を選択します。 | DBA | 
| インスタンスクラスを選択します。 | セカンダリクラスターのインスタンスクラスは変更できます。ただし、プライマリクラスターインスタンスクラスと同じにしておくことをお勧めします。 | DBA | 
| 3 番目のリージョンを追加します。 | このエピックの手順を繰り返して、3 番目のリージョンにクラスターを追加します。 | DBA | 

### Aurora グローバルデータベースのフェイルオーバー
<a name="fail-over-the-aurora-global-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Aurora グローバルデータベース からプライマリクラスターを削除します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.html) | DBA | 
| 新しく昇格させたクラスターに書き込みトラフィックを振り向けるようにアプリケーションを設定し直します。 | アプリケーションのエンドポイントを、新しくプロモートされたクラスターのエンドポイントに変更します。 | DBA | 
| 使用できないクラスターへの書き込み操作をすべて停止します。 | 削除したクラスターに対するアプリケーションとデータ操作言語 (DML) アクティビティを停止します。 | DBA | 
| 新しいAurora グローバルデータベースを作成します。 | 今、新しく昇格させたクラスターをプライマリクラスターとして Aurora グローバルデータベースを作成します。 | DBA | 

### プライマリクラスターを起動します。
<a name="start-the-primary-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| グローバルデータベースから起動するプライマリクラスターを選択します。 | Amazon Aurora コンソールのグローバルデータベースセットアップで、プライマリクラスターを選択します。 | DBA | 
| クラスターを開始します。 | **[アクション]** ドロップダウンリストで **[開始]** を選択します。このプロセスには時間がかかる場合があります。画面を更新してステータスを確認するか、操作完了後に **[ステータス]** 列でクラスターの現在の状態を確認します。 | DBA | 

### リソースをクリーンアップします。
<a name="clean-up-the-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 残りの二次クラスターを削除します。 | フェイルオーバーパイロットが完了したら、グローバルデータベースからセカンダリクラスターを解除します。 | DBA | 
| プライマリクラスターを削除します。 | クラスタを削除します。 | DBA | 

## 関連リソース
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-resources"></a>
+ 「[Amazon Aurora Global Database の使用](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-detaching)」 
+ 「[Amazon Aurora Global Database を使用した Aurora PostgreSQL ディザスタリカバリソリューション](https://aws.amazon.com/blogs/database/aurora-postgresql-disaster-recovery-solutions-using-amazon-aurora-global-database/)」 (ブログ記事)

# SQL Server から PostgreSQL に移行する際に、PII データに SHA1 ハッシュを実装する
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql"></a>

*Amazon Web Services、Rajkumar Raghuwanshi および Jagadish Kantubugata*

## 概要
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-summary"></a>

このパターンでは、SQL Server から Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換に移行する際に、E メールアドレスにセキュアハッシュアルゴリズム 1 (SHA1) ハッシュを実装する方法について説明します。E メールアドレスは、*個人を特定できる情報* (PII) の一例です。PII は、直接閲覧した場合、または他の関連データと組み合わせた場合に、個人の身元を合理的に推測するために使用できる情報です。

このパターンでは、さまざまなデータベースの照合順序と文字エンコーディングにわたって一貫したハッシュ値を維持するという課題について説明し、PostgreSQL 関数とトリガーを使用したソリューションを提供します。このパターンは SHA1 ハッシュに重点を置いていますが、PostgreSQL の `pgcrypto` モジュールでサポートされている他のハッシュアルゴリズムにも適応できます。機密データを扱う場合には、ハッシュ戦略のセキュリティ上の影響を常に考慮し、セキュリティエキスパートに相談してください。

## 前提条件と制限事項
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ ソース SQL Server データベース
+ ターゲット PostgreSQL データベース (Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換)
+ PL/PgSQL コーディングの専門知識

**制限事項**
+ このパターンでは、ユースケースに基づいてデータベースレベルの照合順序を変更する必要があります。
+ 大規模なデータセットに対するパフォーマンスの影響は評価されていません。
+ 一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「[AWS サービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、[「サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照して、サービスのリンクを選択してください。

**製品バージョン**
+ Microsoft SQL Server 2012 以降

## アーキテクチャ
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-architecture"></a>

**ソーステクノロジースタック **
+ SQL Server
+ 特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

**ターゲットテクノロジースタック**
+ [PostgreSQL]
+ `pgcrypto` エクステンション

**自動化とスケール**
+ メンテナンスを容易にするために、ハッシュ関数をストアドプロシージャとして実装することを検討します。
+ 大規模なデータセットの場合は、パフォーマンスを評価し、バッチ処理またはインデックス作成戦略を検討します。

## ツール
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-tools"></a>

**AWS のサービス**
+ [Amazon Aurora PostgreSQL 互換](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型の ACID 互換リレーショナルデータベースエンジンです。
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) を使用すると、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行できます。
+ [Amazon Relational Database Service Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) を使用すると、 AWS クラウドで PostgreSQL リレーショナルデータベースのセットアップ、運用、スケーリングができます。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行をサポートします。

**その他のツール**
+ 「[pgAdmin](https://www.pgadmin.org/)」 は PostgreSQL 用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。
+ [SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms) は、SQL Server インフラストラクチャを管理するための統合環境です。

## ベストプラクティス
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-best-practices"></a>
+ ターゲットデータベース側で特殊文字を処理するには、適切な照合順序設定を使用します。
+ 非 ASCII 文字のアドレスなど、さまざまな E メールアドレスで徹底的にテストします。
+ アプリケーションレイヤーとデータベースレイヤーの間で大文字と小文字の処理の一貫性を維持します。
+ ハッシュ値を使用してクエリのパフォーマンスをベンチマークします。

## エピック
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-epics"></a>

### ソースハッシュの実装を分析する
<a name="analyze-source-hashing-implementation"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SQL Server コードを確認します。 | SHA1 ハッシュを生成する SQL Server コードを確認するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | データエンジニア、DBA、アプリケーション開発者 | 
| ハッシュアルゴリズムとデータ変換を文書化します。 | ハッシュアルゴリズムとデータ変換を正確に文書化するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリケーション開発者、データエンジニア、DBA | 

### PostgreSQL ハッシュ関数を作成する
<a name="create-postgresql-hashing-function"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| `pgcrypto` エクステンションを作成します。 | `pgcrypto` エクステンションを作成するには、`pgAdmin/psql` を使用して次のコマンドを実行します。<pre>CREATE EXTENSION pgcrypto;</pre> | DBA、データエンジニア | 
| PostgreSQL 関数を実装します。 | SQL Server のハッシュロジックをレプリケートするには、次の PostgreSQL 関数を実装します。大まかに言うと、この関数では次のステップを使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html)<pre>CREATE OR REPLACE FUNCTION utility.hex_to_bigint ( <br />     par_val character varying, <br />     par_upper character varying DEFAULT 'lower'::character varying) <br />RETURNS bigint <br />LANGUAGE 'plpgsql' <br />AS $BODY$ <br />DECLARE <br />    retnumber bigint; <br />    digest_bytes bytea;<br />BEGIN <br />    if lower(par_upper) = 'upper' <br />    then <br />        digest_bytes := digest(upper(par_val), 'sha1');<br />    else <br />        digest_bytes := digest((par_val), 'sha1');<br />    end if; <br />    retnumber := ('x' || encode(substring(digest_bytes, length(digest_bytes)-10+1), 'hex'))::bit(64)::bigint; <br />    RETURN retnumber; <br />END; <br />$BODY$;</pre> | データエンジニア、DBA、アプリケーション開発者 | 
| 関数をテストします。 | 関数をテストするには、SQL Server のサンプルデータを使用して、一致するハッシュ値を検証します。次のコマンドを実行します。<pre>select 'alejandro_rosalez@example.com' as Email, utility.hex_to_bigint('alejandro_rosalez@example.com','upper') as HashValue;<br /><br />--OUTPUT<br />/*<br />email 	        hashvalue<br />"alejandro_rosalez@example.com"	451397011176045063<br />*/<br /></pre> | アプリ開発者、DBA、データエンジニア | 

### 自動ハッシュのトリガーを実装する
<a name="implement-triggers-for-automatic-hashing"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 関連するテーブルでトリガーを作成します。 | 挿入または更新時にハッシュ値を自動的に生成するためのトリガーを、関連するテーブルで作成するには、次のコマンドを実行します。<pre>CREATE OR REPLACE FUNCTION update_email_hash() <br />RETURNS TRIGGER <br />AS $$ <br />BEGIN <br />    NEW.email_hash = utility.hex_to_bigint(NEW.email, 'upper'); <br />    RETURN NEW; <br />END; <br />$$ LANGUAGE plpgsql;</pre><pre>CREATE TRIGGER email_hash_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_email_hash();</pre> | アプリケーション開発者、データエンジニア、DBA | 

### 既存のデータを移行する
<a name="migrate-existing-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行スクリプトを開発するか、 を使用します AWS DMS。 | 移行スクリプトを作成するか AWS DMS 、 を使用して既存のデータのハッシュ値 (`BIGINT`ソースシステムに として保存されているハッシュ値を含む) を入力します。以下のタスクを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | データエンジニア、アプリケーション開発者、DBA | 
| 新しい PostgreSQL ハッシュ関数を使用します。 | 新しい PostgreSQL ハッシュ関数を使用して一貫性を確保するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリ開発者、DBA、DevOps エンジニア | 

### アプリケーションクエリを更新する
<a name="update-application-queries"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクエリを特定します。 | ハッシュ値を使用するアプリケーションクエリを特定するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリ開発者、DBA、データエンジニア | 
| クエリを変更します。 | 必要に応じて、新しい PostgreSQL ハッシュ関数を使用するようにクエリを変更します。以下の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリ開発者、DBA、データエンジニア | 

### テストと検証
<a name="test-and-validate"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テストを実行します。 | 本番データのサブセットを使用して徹底的なテストを実行するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリケーション開発者、データエンジニア、DBA | 
| ハッシュ値が一致することを検証します。 | SQL Server と PostgreSQL 間でハッシュ値が一致することを検証するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリケーション開発者、データエンジニア、DBA | 
| アプリケーションの機能を検証します。 | 移行されたデータと新しいハッシュ実装を使用してアプリケーションの機能を検証するには、以下を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | アプリ開発者、DBA、データエンジニア | 

## トラブルシューティング
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| ハッシュ値が一致しません。 | ソースとターゲット間の文字エンコードと照合順序を検証します。詳細については、「[Manage collation changes in PostgreSQL on Amazon Aurora and Amazon RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)」(AWS ブログ) を参照してください。 | 

## 関連リソース
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-resources"></a>

**AWS ブログ**
+ [Amazon Aurora および Amazon RDS で PostgreSQL の照合順序の変更を管理する](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)
+ [Migrate SQL Server to Amazon Aurora PostgreSQL using best practices and lessons learned from the field](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)

**その他のリソース**
+ [PostgreSQL pgcrypto モジュール](https://www.postgresql.org/docs/current/pgcrypto.html) (PostgreSQL ドキュメント)
+ [PostgreSQL トリガー関数](https://www.postgresql.org/docs/current/plpgsql-trigger.html) (PostgreSQL ドキュメント)
+ [SQL Server HASHBYTES 関数](https://docs.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql) (Microsoft ドキュメント)

# Oracle SQL Developer と AWS SCT を使用して Amazon RDS for Oracle から Amazon RDS for PostgreSQL に段階的に移行
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct"></a>

*Amazon Web Services、Pinesh Singal*

## 概要
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-summary"></a>

多くの移行策略やアプローチは、複数のフェーズに分かれて、数週間から数ヶ月間かかることもあります。この間、PostgreSQL DB インスタンスに移行するソース Oracle DB インスタンスのパッチ適用またはアップグレードが原因で、遅延が発生する可能性があります。このような状況を回避するには、残りの Oracle データベースコードを PostgreSQL データベースコードに段階的に移行することを推奨します。

このパターンでは、最初の移行後に多数のトランザクションが実行される、そして PostgreSQL データベースに移行する必要があるマルチテラバイトの Oracle DB インスタンスに対して、ダウンタイムのない、段階的な移行戦略を提供します。このパターンのステップバイステップのアプローチを使用すれば、 Amazon Web Services (AWS) マネジメントコンソールにサインインする必要なく、Oracle DB インスタンスのAmazon Relational Database Service (Amazon RDS) を Amazon RDS for PostgreSQL インスタンスに段階的に移行できます。

このパターンでは、「[Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html)」 を使用して、ソース Oracle データベース内の二つのスキーマの差分を見つけます。次に、AWS Schema Conversion Tool (AWS SCT) を使用して、 Amazon RDS for Oracle データベーススキーマオブジェクトを Amazon RDS for PostgreSQL データベーススキーマオブジェクトに変換します。次に、Windows コマンドプロンプトで Python スクリプトを実行して、ソースデータベースオブジェクトへの段階的な変更のために AWS SCT オブジェクトを作成します。

**注記**  
本番環境のワークロードを移行する前に、テスト環境または非本稼働環境で、このパターンのアプローチの概念実証 (PoC) を実行することを推奨します。

## 前提条件と制限事項
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ 既存の Amazon RDS for Oracle DB インスタンス。 
+ 既存の Amazon RDS for PostgreSQL DB インスタンス。
+ AWS SCT、Oracle および PostgreSQL データベースエンジンの JDBC ドライバーにインストールされ、設定されたAWS SAWS SCT。これの詳細については、AWS SCT ドキュメントの「[AWS SCTをインストール](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.Procedure)」 、および「[必要なデータベースドライバーをインストール](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html#CHAP_Installing.JDBCDrivers)」 を参照してください。 
+ インストール、設定されたOracle SQL Developer。これの詳細については、「[Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html)」 ドキュメントを参照してください。 
+ ローカルのコンピュータにダウンロードされた、`incremental-migration-sct-sql.zip` ファイル(添付)。

機能制限
+ ソースである Amazon RDS for Oracle DB インスタンスの最小要件は次のとおりです:
  + Enterprise、Standard、Standard One、Standard Two エディションの、10.2 以降 (バージョン 10.x)、11g (バージョン 11.2.0.3.v1 以降)、および12.2、18c までのOracle バージョン 
+ ターゲット Amazon RDS for PostgreSQL DB インスタンスの最小要件は次のとおりです： 
  + PostgreSQL バージョン 9.4 以降 (バージョン 9.x 用)、10.x、11.x。
+ このパターンでは、Oracle SQL Developer を使用します。他のツールを使用してスキーマの差分を見つけてエクスポートすると、結果が異なる場合があります。
+ [Oracle SQL Developer より生成される 「SQL スクリプト](https://docs.oracle.com/database/121/AEUTL/sql_rep.htm#AEUTL191)」では、変換エラーが発生する可能性があるため、手動で移行を行う必要があります。
+ AWS SCT のソースとターゲットのテスト接続が失敗した場合、着信トラフィックを受け入れるために、JDBC ドライバーバージョンと Virtual Private Cloud (VPC) セキュリティグループの受信ルールを設定することを確保します。

**製品バージョン**
+ Amazon RDS for Oracle DB インスタンスバージョン 12.1.0.2 (バージョン 10.2 以降)
+ Amazon RDS for PostgreSQL DB インスタンスバージョン 11.5 (バージョン 9.4 以降)
+ Oracle SQL Developer バージョン 19.1 以降
+ AWS SCT バージョン 1.0.632 以降

## アーキテクチャ
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-architecture"></a>

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

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

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

次の図表は、Amazon RDS for Oracle DB インスタンスを Amazon RDS for PostgreSQL DB インスタンスに移行する方法を示しています。

![\[Amazon RDS for Oracle から Amazon RDS for PostgreSQL への移行ワークフローです。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/c7eed517-e496-4e8e-a520-c1e43397419e/images/bfbbed5e-db13-4a22-99aa-1a17f00f5faf.png)


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

1. Oracle SQL Developer を開き、ソースデータベースとターゲットデータベースに接続します。

1. 「[差分レポート](https://docs.oracle.com/cd/E93130_01/rules_palette/Content/Diff%20Reports/Detailed_Diff_Reports.htm)」 を生成し、次医スキーマ差分オブジェクトの SQL スクリプトファイルを生成します。差分レポートの詳細については、Oracle ドキュメントの「[詳細な差分レポート](https://docs.oracle.com/cd/E93130_01/rules_palette/Content/Diff%20Reports/Detailed_Diff_Reports.htm)」 を参照してください。

1. AWS SCT を設定し、Python コードを実行します。

1. SQL スクリプトファイルは Oracle から PostgreSQL に変換します。

1. ターゲット PostgreSQL DB インスタンスで SQL スクリプトファイルを実行します。 

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

Python スクリプトに、1 つのプログラム内の複数の機能に関するパラメータやセキュリティ関連の変更を追加することで、この移行を自動化できます。

## ツール
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-tools"></a>
+ 「[AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」 — AWS Schema Conversion Tool (AWS SCT) は、既存のデータベーススキーマをあるデータベースエンジンから別のデータベースエンジンに変換します。
+ 「[Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html)」 — Oracle SQL Developer は、従来のデプロイメントとクラウドベースのデプロイメントの両方で Oracle データベースの開発と管理を簡素化する統合開発環境 (IDE) です。

**Code **

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

## エピック
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-epics"></a>

### ソースデータベースのスキーマの差分に対応する SQL スクリプトファイルを作成します。
<a name="create-the-sql-scripts-file-for-the-source-database-schema-differences"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle SQL Developer でデータベース差分を実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.html) | DBA | 
| SQL スクリプトファイルを生成します。 | **スクリプトを生成**を選択して、SQL ファイルで差分を生成します。 これにより、AWS SCT がデータベースを Oracle から PostgreSQL に変換するために使用する SQL スクリプトファイルが生成されます。 | DBA | 

### Python スクリプトを使用して、AWS SCT にターゲット DB オブジェクトを作成します。
<a name="use-the-python-script-to-create-the-target-db-objects-in-aws-sct"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Windows コマンドプロンプトを使用して AWS SCT を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.html)<pre>#source_vendor,source_hostname,source_dbname,source_user,source_pwd,source_schema,source_port,source_sid,target_vendor,target_hostname,target_user,target_pwd,target_dbname,target_port<br /><br />ORACLE,myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com,ORCL,orcl,orcl1234,orcl,1521,ORCL,POSTGRESQL,mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com,pguser,pgpassword,pgdb,5432</pre>4. 要件に応じて AWS SCT 設定パラメータを変更し、SQL スクリプトファイルを `input` サブディレクトリの作業ディレクトリにコピーします。 | DBA | 
|  Python スクリプトを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.html) | DBA | 
|  Amazon RDS for PostgreSQL でオブジェクトを作成 | SQL ファイルを実行し、Amazon RDS for PostgreSQL DB インスタンスにオブジェクトを作成します。 | DBA | 

## 関連リソース
<a name="incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct-resources"></a>
+ [Amazon RDS 上の Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ 「[Amazon RDS 上の PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)」 
+ 「[AWS SCT ユーザーインターフェイスの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)」 
+ 「[ AWS SCTのソースとしての Oracle の使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)」

## アタッチメント
<a name="attachments-c7eed517-e496-4e8e-a520-c1e43397419e"></a>

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

# Aurora PostgreSQL 互換のファイルエンコーディングを使用して BLOB ファイルを TEXT にロード
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible"></a>

*Amazon Web Services、Bhanu Ganesh Gudivada および Jeevan Shetty*

## 概要
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-summary"></a>

多くの場合、移行中に、ローカルファイルシステムのファイルからロードされた非構造化データや構造化データを処理しなければならない場合があります。データがデータベースの文字セットと異なる文字セットになっている場合もあります。

これらのファイルには以下の種類のデータが格納されています。
+ **メタデータ** – このデータはファイル構造を記述します。
+ **半構造化データ** – JSON や XML などの特定の形式のテキスト文字列です。このようなデータについて、「常に '<' で始まる」や「改行文字を一切含まない」などのアサーションができる場合があります。
+ **全文** – このデータには通常、改行文字や引用符を含むあらゆる種類の文字が含まれます。UTF-8 のマルチバイト文字で構成されている場合もあります。
+ **バイナリデータ** – このデータには、バイト、または NULL とファイル末尾マーカーを含むバイトの組み合わせが含まれる場合があります。

これらの種類のデータが混在してロードするのは難しい場合があります。

このパターンでは、オンプレミスの Oracle データベース、Amazon Web Services (AWS) クラウドの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにある Oracle データベース、および Oracle データベースの Amazon Relational Database Service (Amazon RDS) で使用できます。例として、このパターンでは Amazon Aurora PostgreSQL 互換エディションを使用しています。

Oracle データベースでは、`BFILE` (バイナリファイル) ポインタ、`DBMS_LOB` パッケージ、および Oracle システム関数を使用して、ファイルからロードし、文字エンコーディングを使用して CLOB に変換できます。PostgreSQL は Amazon Aurora PostgreSQL 互換エディションデータベースへの移行時に BLOB データ型が適用されないため、これらの関数は PostgreSQL 互換のスクリプトに変換する必要があります。

このパターンでは、Amazon Aurora PostgreSQL 互換データベースの 1 つのデータベース列にファイルをロードする方法が 2 つあります。
+ 方法 1 —エンコードオプション付けの `aws_s3` 拡張機能の `table_import_from_s3` 関数を使用して、 Amazon Simple Storage Service (Amazon S3) バケットからデータをインポートします。
+ 方法 2 – データベースの外部で 16 進数にエンコードし、次にデータベース内で `TEXT` を表示するようにデコードします。

Aurora PostgreSQL 互換は、`aws_s3` の拡張機能つ直接統合されているため、アプローチ 1 を使用することを推薦します。

このパターンでは、マルチバイト文字と独自の形式を持つ E メールテンプレートを含むフラットファイルを Amazon Aurora PostgreSQL 互換データベースにロードする例を使用します。

## 前提条件と制限事項
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ Amazon RDS インスタンスまたは Aurora PostgreSQL 互換インスタンス
+ SQL およびリレーショナルデータベース管理システム (RDBMS) の基本的な理解
+ 1 つの Amazon Simple Storage Service (Amazon S3) バケット
+ OracleとPostgreSQLのシステム機能に関する知識
+ RPM Package HexDump-XXD-0.1.1 (Amazon Linux 2 に含まれています)
**注記**  
Amazon Linux 2 のサポートは間もなく終了します。詳細については、「[Amazon Linux 2 のよくある質問](https://aws.amazon.com/amazon-linux-2/faqs/)」を参照してください。

**制限事項**
+ `TEXT` データ型の場合、保存できる最長の文字列は約 1 GB です。

**製品バージョン**
+ Auroraには [Amazon Aurora PostgreSQL 更新](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) に記載されている PostgreSQL バージョンが適用されます。

## アーキテクチャ
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-architecture"></a>

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換

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

*アプローチ 1 – aws\$1s\$1s3.table\$1import\$1from\$1s3 を使用*

オンプレミスサーバーから、マルチバイト文字とカスタムフォーマットの E メールテンプレートを含むファイルが Amazon S3 に転送されます。このパターンで提供されるカスタムデータベース関数は、`file_encoding` 付けの `aws_s3.table_import_from_s3` 関数を使用して、ファイルをデータベースにロードし、クエリ結果を `TEXT` データ型として返します。

![\[オンプレミスサーバーから Aurora データベースの TEXT 出力までの 4 ステップのプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/cbf63cac-dcea-4e18-ab4f-c4f6296f60e7/images/9c46b385-e8a0-4e50-b856-d522c44d79e3.png)


1. ファイルはステージング S3 バケットに転送されます。

1. ファイルは Amazon Aurora PostgreSQL 互換データベースにアップロードされます。

1. pgAdmin クライアントを使用して、カスタム関数 `load_file_into_clob` が Aurora データベースにデプロイされます。

1. カスタム関数が内部的に file\$1encoding `table_import_from_s3` と組み合わせて使用します。この関数からの出力は、`array_to_string` と `array_agg` を使用して、`TEXT` 出力として取得されます。

方法 2 – データベースの外部では 16 進数にエンコードし、データベース内の TEXT を表示するにはデコードします。

オンプレミスサーバーまたはローカルファイルシステムのファイルは 16 進ダンプに変換されます。次に、ファイルが `TEXT` フィールドとして、 PostgreSQL にインポートされます。

![\[16 進数ダンプを使用した 3 ステップのプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/cbf63cac-dcea-4e18-ab4f-c4f6296f60e7/images/563038ca-f890-4874-85df-d0f82d99800a.png)


1. `xxd -p` オプションを使用して、コマンドラインでファイルを 16 進数ダンプに変換します。

1. `\copy` オプションを使用して、 16 進数ダンプファイルを Aurora PostgreSQL 互換にアップロードし、16 進数ダンプファイルをバイナリにデコードします。

1. バイナリデータを `TEXT` エンコードしてとして返します。

## ツール
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-tools"></a>

**AWS サービス**
+ [Amazon Aurora PostgreSQL 互換版](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型のリレーショナルデータベースエンジンです。
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。

**その他のツール**
+ [PgAdmin4](https://www.pgadmin.org/) は PostgreSQL のオープンソースの管理および開発プラットフォームです。PgAdmin4 は Linux、UNIX、Mac OS、および Windows で使用して PostgreSQL を管理できます。  

## エピック
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-epics"></a>

### アプローチ 1：Amazon S3 からの Aurora PostgreSQL 互換のデータをインポート
<a name="approach-1-import-data-from-amazon-s3-to-aurora-postgresql-compatible"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスの起動 | インスタンスを起動する手順については、[インスタンスを起動する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html) を参照してください。 | DBA | 
| PostgreSQL クライアント pgAdmin ツールをインストールします。 | [pgAdmin](https://www.pgadmin.org/download/) をダウンロードし、インストールします。 | DBA | 
| IAM ポリシーを作成します。 | ファイルが保存される S3 バケットへのアクセスを許可する `aurora-s3-access-pol` と名前付けられたAWS アイデンティティアクセス管理(IAM) ポリシーを作成します。次のコードを使用して、S3 バケットの名で `<bucket-name>` を置き換わります。<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:DeleteObject",<br />                "s3:ListMultipartUploadParts",<br />                "s3:PutObject",<br />                "s3:ListBucket"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::<bucket-name>/*",<br />                "arn:aws:s3:::<bucket-name>"<br />            ]<br />        }<br />    ]<br />}</pre> | DBA | 
| Amazon S3 から Aurora PostgreSQL 互換にオブジェクトをインポートするための IAM ロールを作成します。 | 次のコードを使用して、[AssumeRole](https://docs.amazonaws.cn/en_us/STS/latest/APIReference/API_AssumeRole.html) 信頼関係を持ち、`aurora-s3-import-role` と名前付けられた IAM ロールを作成します。`AssumeRole` は、ユーザーの代わりに Aurora が他の AWS のサービスにアクセスすることを許可します。<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow","Principal": {<br />        "Service": "rds.amazonaws.com"<br />      },"Action": "sts:AssumeRole"<br />    }<br />  ]<br />}<br /></pre> | DBA | 
| IAM ロールをクラスターに関連付けます。 | IAM ロールを Aurora PostgreSQL 互換データベースクラスターに関連付けるには、次の AWS CLI コマンドを実行します。Aurora PostgreSQL 互換データベースをホストする AWS アカウントの ID を `<Account-ID>` に変更します。これにより、Aurora PostgreSQL 互換データベースが S3 バケットにアクセスできるようになります。<pre>aws rds add-role-to-db-cluster --db-cluster-identifier aurora-postgres-cl<br />--feature-name s3Import --role-arn arn:aws:iam::<Account-ID>:role/aurora-s3-import-role</pre> | DBA | 
| このファイルを Amazon S3 にアップロードします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.html) | DBA、アプリ所有者 | 
| カスタム関数をデプロイします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.html) | アプリ所有者、DBA | 
| データをデータベースにインポートするために、カスタム関数を実行します。 | 次の SQL コマンドを実行し、山括弧内の項目を適切な値に置き換えます。<pre>select load_file_into_clob('aws-s3-import-test'::text,'us-west-1'::text,'employee.salary.event.notification.email.vm'::text);</pre>コマンドを実行する前に、山括弧内の項目を、次の例に示されているように、適切な値に置き換わります。<pre>Select load_file_into_clob('aws-s3-import-test'::text,'us-west-1'::text,'employee.salary.event.notification.email.vm'::text);</pre>このコマンドは Amazon S3 からファイルをロードし、`TEXT` として出力を返します。 | アプリ所有者、DBA | 

### アプローチ 2：テンプレートファイルをローカル Linux システムの 16 進数ダンプに変換
<a name="approach-2-convert-the-template-file-into-a-hex-dump-in-a-local-linux-system"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テンプレートファイルを 16 進数ダンプに変換します。 | Hexdump ユーティリティは、バイナリファイルの内容を 16 進数、10 進数、8 進数、または ASCII 形式で表示します。`hexdump` コマンドが `util-linux` パッケージの一部で、、Linux ディストリビューションにプリインストールされています。Hexdump RPM パッケージは Amazon Linux 2 の一部でもあります。(: Amazon Linux 2 のサポートは間もなく終了します。詳細については、「[Amazon Linux 2 のよくある質問](https://aws.amazon.com/amazon-linux-2/faqs/)」を参照してください。）ファイルの内容を 16 進数ダンプに変換するには、次のシェルコマンドを実行します。<pre>xxd -p </path/file.vm> | tr -d '\n' > </path/file.hex></pre>パスとファイルを次の例に示されているように、適切な値に置き換わります。<pre>xxd -p employee.salary.event.notification.email.vm | tr -d '\n' > employee.salary.event.notification.email.vm.hex</pre> | DBA | 
| hexdump ファイルをデータベーススキーマにロードします。 | 次のコマンドを使用して、hexdump ファイルを Aurora PostgreSQL 互換データベースにロードします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.html) | DBA | 

## 関連リソース
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-resources"></a>

**リファレンス**
+ [PostgreSQL データベースを AWS Database Migration Service のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)
+ [Oracle データベース 19c から PostgreSQL 互換 (12.4) 対応 Amazon Aurora への移行プレイブック](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook-12.4.pdf)
+ [IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)
+ [IAM ロールと Amazon Aurora MySQL DB クラスターの関連付け](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.html)
+ [pgAdmin](https://www.pgadmin.org/)

**チュートリアル**
+ [Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)
+ [ Oracle から Amazon Aurora への移行](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)

## 追加情報
<a name="load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible-additional"></a>

**load\$1file\$1into\$1clob カスタム関数**

```
CREATE OR REPLACE FUNCTION load_file_into_clob(
    s3_bucket_name text,
    s3_bucket_region text,
    file_name text,
    file_delimiter character DEFAULT '&'::bpchar,
    file_encoding text DEFAULT 'UTF8'::text)
    RETURNS text
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
    blob_data BYTEA;
    clob_data TEXT;
    l_table_name CHARACTER VARYING(50) := 'file_upload_hex';
    l_column_name CHARACTER VARYING(50) := 'template';
    l_return_text TEXT;
    l_option_text CHARACTER VARYING(150);
    l_sql_stmt CHARACTER VARYING(500);
        
BEGIN
    
    EXECUTE format ('CREATE TEMPORARY TABLE %I (%I text, id_serial serial)', l_table_name, l_column_name);
    
    l_sql_stmt := 'select ''(format text, delimiter ''''' || file_delimiter || ''''', encoding ''''' || file_encoding ||  ''''')'' ';
    
    EXECUTE FORMAT(l_sql_stmt)
    INTO l_option_text;
    
    EXECUTE FORMAT('SELECT aws_s3.table_import_from_s3($1,$2,$6, aws_commons.create_s3_uri($3,$4,$5))')
    INTO l_return_text
    USING l_table_name, l_column_name, s3_bucket_name, file_name,s3_bucket_region,l_option_text;
    
    EXECUTE format('select array_to_string(array_agg(%I order by id_serial),E''\n'') from %I', l_column_name, l_table_name)
    INTO clob_data;
    
    drop table file_upload_hex;
    
    RETURN clob_data;
END;
$BODY$;
```

**E メールテンプレート**

```
######################################################################################
##                                                                                    ##
##    johndoe Template Type: email                                                    ##
##    File: johndoe.salary.event.notification.email.vm                                ##
##    Author: Aimée Étienne    Date 1/10/2021                                                ##
##  Purpose: Email template used by EmplmanagerEJB to inform a johndoe they         ##
##        have been given access to a salary event                                    ##
##    Template Attributes:                                                             ##
##        invitedUser - PersonDetails object for the invited user                        ##
##        salaryEvent - OfferDetails object for the event the user was given access    ##
##        buyercollege - CompDetails object for the college owning the salary event    ##
##        salaryCoordinator - PersonDetails of the salary coordinator for the event    ##
##        idp - Identity Provider of the email recipient                                ##
##        httpWebRoot - HTTP address of the server                                    ##
##                                                                                    ##
######################################################################################

$!invitedUser.firstname $!invitedUser.lastname,

Ce courriel confirme que vous avez ete invite par $!salaryCoordinator.firstname $!salaryCoordinator.lastname de $buyercollege.collegeName a participer a l'evenement "$salaryEvent.offeringtitle" sur johndoeMaster Sourcing Intelligence.

Votre nom d'utilisateur est $!invitedUser.username

Veuillez suivre le lien ci-dessous pour acceder a l'evenement.

${httpWebRoot}/myDashboard.do?idp=$!{idp}

Si vous avez oublie votre mot de passe, utilisez le lien "Mot de passe oublie" situe sur l'ecran de connexion et entrez votre nom d'utilisateur ci-dessus.

Si vous avez des questions ou des preoccupations, nous vous invitons a communiquer avec le coordonnateur de l'evenement $!salaryCoordinator.firstname $!salaryCoordinator.lastname au ${salaryCoordinator.workphone}.

*******

johndoeMaster Sourcing Intelligence est une plateforme de soumission en ligne pour les equipements, les materiaux et les services.

Si vous avez des difficultes ou des questions, envoyez un courriel a support@johndoeMaster.com pour obtenir de l'aide.
```

# 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)」

# AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行します
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms"></a>

*Amazon Web Services、Pinesh Singal*

## 概要
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-summary"></a>

このパターンは、Amazon Relational Database Service (Amazon RDS) を、Amazon Amazon Web Services (AWS) クラウド上の Amazon RDS for PostgreSQL データベースに移行する際のガイダンスを提供します。データベース間の接続を暗号化するために、このパターンでは Amazon RDS と AWS Database Migration Service (AWS DMS) の認証局 (CA) と SSL モードを使用します。

このパターンは、トランザクション数が多い数テラバイトの Oracle ソースデータベースに対して、ダウンタイムをほとんどまたはまったく発生させないオンライン移行戦略を示しています。データセキュリティのため、このパターンではデータ転送時に SSL を使用します。

このパターンでは、AWS Schema Conversion Tool (AWS SCT) を使用して Amazon RDS for Oracle データベーススキーマを Amazon RDS for PostgreSQL スキーマに変換します。このパターンでは、AWS SCT を使用してデータを Amazon RDS for Oracle から Amazon RDS for PostgreSQL に移行します。

## 前提条件と制限事項
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ ***rds-ca-rsa2048-g1*** のみで設定された Amazon RDS データベース認証局 (CA) 
  + ***rds-ca-2019*** 証明書は、2024 年 8 月に失効しました。
  + ***rds-ca-2015*** 証明書は、2020 年 3 月 5 日に失効しました。
+ AWS SCT
+ AWS DMS
+ pgAdmin
+ SQL ツール (SQL Developer や SQL\$1Plus など)

**制限事項**
+ Amazon RDS for Oracle — 最小要件は、エンタープライズエディションおよびスタンダード 2 エディションの Oracle バージョン 19c です。
+ Amazon RDS for PostgreSQL — 最小要件は PostgreSQL バージョン 12 以降 (バージョン 9.x 以降用) です。

**製品バージョン**
+ Amazon RDS for Oracle DB インスタンスバージョン 12.1.0.2 以降
+ Amazon RDS for PostgreSQL データベースバージョン 11.5 インスタンス

## アーキテクチャ
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ バージョン 12.1.0.2.v18 の Amazon RDS for Oracle データベースインスタンス。

**ターゲットテクノロジースタック**
+ AWS DMS
+ バージョン 11.5 以降のAmazon RDS for PostgreSQL データベースインスタンス

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

次の図は、Oracle (ソース) データベースと PostgreSQL (ターゲット) データベース間のデータ移行アーキテクチャのアーキテクチャを示しています。このアーキテクチャには以下が含まれます。
+ 仮想プライベートクラウド (VPC)
+ アベイラビリティゾーン
+ プライベートサブネット
+ Amazon RDS for Oracle のデータベース
+ AWS DMS レプリケーションインスタンスを作成します。
+ RDS for PostgreSQL データベース

ソースデータベースとターゲットデータベースの接続を暗号化するには、Amazon RDS と AWS DMS で CA と SSL モードを有効にする必要があります。

![\[RDS for Oracle と AWS DMS 間、および AWS DMS と RDS for PostgreSQL 間でデータを移動します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7098e2a3-b456-4e14-8881-c97145aef483/images/55b50ff7-1e6a-4ff0-9bcd-2fd419d5316a.png)


## ツール
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-tools"></a>

AWS サービス
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ 「[OracleのAmazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)」 によって、AWS クラウドで Oracleリレーショナルデータベースをセットアップ、運用、スケーリングができます。
+ 「[Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)」 を使用して、AWS クラウドでの PostgreSQL リレーショナルデータベースをセットアップ、運用、スケーリングできます。
+ 「[AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベース移行をサポートします。

**その他のサービス**
+ 「[pgAdmin](https://www.pgadmin.org/)」 は PostgreSQL 用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。

## ベストプラクティス
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-best-practices"></a>

Amazon RDS では、AWS セキュリティのベストプラクティスとして、新しい CA 証明書を提供しています。新しい証明書とサポートされている AWS リージョンの詳細については、「[SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)」を参照してください。

RDS インスタンスの現在の CA 証明書が `rds-ca-2019` で、これを `rds-ca-rsa2048-g1` にアップグレードする場合は、「[DB インスタンスまたはクラスターの変更による CA 証明書の更新](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-updating)」または「[メンテナンスの適用による CA 証明書の更新](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-maintenance-update)」の手順に従います。

## エピック
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-epics"></a>

### Amazon RDS for Oracle インスタンスの設定
<a name="configure-the-amazon-rds-for-oracle-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle データベースインスタンスを作成します。 | AWS アカウントにサインインし、AWS マネジメントコンソールを開いて Amazon RDS コンソールに移動します。コンソールで **[データベースの作成]** を選択し、**[Oracle]** を選択します。 | AWS 全般、DBA | 
| セキュリティグループを設定します。 | インバウンドおよびアウトバウンドのセキュリティグループを設定します。 | AWS 全般 | 
| オプショングループを作成します。 | Amazon RDS for Oracle データベースと同じ VPC およびセキュリティグループにオプショングループを作成します。**[オプション]** では、**[SSL]** を選択します。**[ポート]** では、**[2484]** (SSL 接続用) を選択します。 | AWS 全般 | 
| オプション設定を行います。 | 以下の設定を使用します。[\[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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| RDS for Oracle DB インスタンスを変更します。 | **rds-ca-rsa2048-g1** として CA 証明書を設定します。**[オプショングループ]** で、以前に作成したオプショングループをアタッチします。 | AWS 全般、DBA | 
| RDS for Oracle DB インスタンスが使用可能であることを確認します。 | Amazon RDS for Oracle データベースインスタンスが稼働中であり、データベーススキーマにアクセスできることを確認します。RDS for Oracle DB に接続するには、`sqlplus` コマンドラインからコマンドを使用します。<pre>$ sqlplus orcl/****@myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com:1521/ORCL<br />SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 15 18:11:07 2019<br />Copyright (c) 1982, 2016, Oracle.  All rights reserved.<br />Last Successful login time: Mon Dec 16 2019 23:17:31 +05:30<br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br />SQL></pre> | DBA | 
| RDS for Oracle データベースにオブジェクトとデータを作成します。 | オブジェクトを作成し、スキーマにデータを挿入します。 | DBA | 

### Amazon RDS for PostgreSQL インスタンスの設定
<a name="configure-the-amazon-rds-for-postgresql-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| RDS for PostgreSQL データベースを作成します。 | Amazon RDS コンソールの **[データベースの作成]** ページで、**[PostgreSQL]** を選択して Amazon RDS for PostgreSQL データベースインスタンスを作成します。 | AWS 全般、DBA | 
| セキュリティグループを設定します。 | インバウンドおよびアウトバウンドのセキュリティグループを設定します。 | AWS 全般 | 
| パラメータグループを作成します。 | PostgreSQL バージョン 11.x を使用している場合は、パラメータグループを作成して SSL パラメータを設定します。PostgreSQL バージョン 12 では、SSL パラメータグループはデフォルトで有効になっています。 | AWS 全般 | 
| パラメータの編集。 | `rds.force_ssl` パラメータを `1` (オン)に変更します。デフォルトでは、 `ssl` パラメータが `1` (オン)です。`rds.force_ssl` パラメータを `1` に設定すると、すべての接続が SSL モードでのみ接続するように強制されます。 | AWS 全般 | 
| RDS for PostgreSQL DB インスタンスを更新します。 | **rds-ca-rsa2048-g1** として CA 証明書を設定します。PostgreSQL のバージョンに応じて、デフォルトのパラメータグループまたは以前に作成したパラメータグループを添付します。 | AWS 全般、DBA | 
| RDS for PostgreSQL DB インスタンスが使用可能であることを確認します。 | Amazon RDS for PostgreSQL データベースが稼働していることを確認します。この `psql` コマンドは、コマンドラインから `sslmode` set を使用して SSL 接続を確立します。1 つの方法は、`sslmode=1` パラメーターグループに設定し、`psql` コマンドに `sslmode` パラメーターを含めずに接続を使用することです。次の出力は、SSL 接続が確立されたことを示しています。<pre>$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser"<br />Password for user pguser:<br />psql (11.3, server 11.5)<br />SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)<br />Type "help" for help.<br />pgdb=></pre>2 つ目の方法は、`sslmode=1` パラメータグループに設定し、その `sslmode` パラメータを `psql` コマンドに含めることです。次の出力は、SSL 接続が確立されたことを示しています。<pre>$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser sslmode=require"<br />Password for user pguser: <br />psql (11.3, server 11.5)<br />SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)<br />Type "help" for help.<br />pgdb=></pre> | DBA | 

### AWS SCT の設定と実行
<a name="configure-and-run-aws-sct"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をインストールします。 | AWS SCT アプリケーションの最新バージョンをインストールします。 | AWS 全般 | 
| JDBC ドライバーを使用して AWS SCT を設定します。 | Oracle (「[ojdbc8.jar](https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc8.jar)」) と PostgreSQL ([postgresql-42.2.5.jar](https://jdbc.postgresql.org/download/postgresql-42.2.19.jar)) 用の Java データベース接続 (JDBC) ドライバーをダウンロードしてください。AWS SCT でドライバを設定するには、**[設定]**、**[グローバル設定]**、**[ドライバー]** を選択します。 | AWS 全般 | 
| AWS SCT プロジェクトを作成します。 | Oracle をソース DB エンジンとして、Amazon RDS for PostgreSQL をターゲット DB エンジンとして使用して、AWS SCT プロジェクトとレポートを作成します。[\[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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| データベースオブジェクトを検証します。 | [\[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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般、DBA | 

### AWS DMS の設定と実行
<a name="configure-and-run-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションインスタンスを作成します。 | [\[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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| 証明書をインポートします。 | AWS リージョンの[証明書バンドル (PEM)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesAllRegions) をダウンロードします。バンドルには、`rds-ca-2019` 中間証明書とルート証明書の両方が含まれています。またバンドルには、`rds-ca-rsa2048-g1`、`rds-ca-rsa4096-g1`、および `rds-ca-ecc384-g1` ルート CA 証明書も含まれています。アプリケーション信頼ストアでは、ルート CA 証明書の登録のみが必要です。 | AWS 全般 | 
| ソースエンドポイントを作成します。 | [\[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-in-ssl-mode-by-using-aws-dms.html)詳細については、「[AWS Database Migration Service に対して、 Oracle のデータベースをソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」 を参照してください。 | AWS 全般 | 
| ターゲットエンドポイントを作成します。 | [\[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-in-ssl-mode-by-using-aws-dms.html)詳細については、「[AWS データベース移行サービスのターゲットとして PostgreSQL データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)」 を参照してください。 | AWS 全般 | 
| エンドポイントをテストします。 | [\[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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| 移行タスクを作成します。 | フルロードと変更データキャプチャ (CDC) またはデータ検証用の移行タスクを作成するには、次の手順を実行します。[\[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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| 本番稼働を計画する。 | アプリケーション所有者などの利害関係者とダウンタイムを確認し、本番システムで 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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| データを検証します。 | 移行タスクの結果と、移行元の Oracle データベースと移行先の 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-in-ssl-mode-by-using-aws-dms.html) | DBA | 
| 移行タスクを停止します。 | データ検証が正常に完了したら、移行タスクを停止します。 | AWS 全般 | 

### リソースをクリーンアップします。
<a name="clean-up-the-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| AWS DMS エンドポイントを削除します。 | 作成したソースエンドポイントとターゲットエンドポイントを選択し、**[アクション]** を選択して、**[削除]** を選択します。 | AWS 全般 | 
| AWS DMS レプリケーションインスタンスを削除します。 | レプリケーションインスタンスを選択し、**[アクション]** を選択して、**[削除]** を選択します。 | AWS 全般 | 
| 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-in-ssl-mode-by-using-aws-dms.html) | AWS 全般 | 
| Oracle データベースを削除します。 | Amazon RDS コンソールで Oracle データベースインスタンスを選択し、**[アクション]** を選択し、**[削除]** を選択します。 | AWS 全般 | 

## トラブルシューティング
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| AWS SCT のソースとターゲットのテスト接続が失敗しています。 | 受信トラフィックを受け入れるように JDBC ドライバーバージョンと VPC セキュリティグループのインバウンドルールを設定します。 | 
| ソースまエンドポイントのテスト実行が失敗しました。 | エンドポイントの設定と、レプリケーションインスタンスが使用可能かどうかを確認します。 | 
| AWS DMS タスクの全ロード実行が失敗します。 | ソースデータベースとターゲットデータベースに、一致しているデータ型とサイズがあるかを確認します。 | 
| 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-in-ssl-mode-by-using-aws-dms.html) | 

## 関連リソース
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-resources"></a>

**データベース**
+ 「[Amazon RDS for Oracle](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)

SSL DB 接続
+ 「[SSL/TLS を使用して、 DB インスタンスへの接続を暗号化](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)」 
  + 「[RDS for Oracle DB インスタンスでの SSL の使用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Concepts.SSL.html)」 
  + 「[SSL/TLS を使用して RDS for PostgreSQL への接続を保護する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.Security.html)」 
  + [特定の AWS リージョンの証明書バンドルをダウンロード](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesAllRegions)
    + [CA-2019 ルート証明書をダウンロード](https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem) (2024 年 8 月に失効)
+ 「[オプショングループを使用する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html)」 
  + 「[Oracle DB インスタンスへのオプションの追加](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.html)」 
  + 「[Oracle Secure Sockets Layer](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.SSL.html)」 
+ 「[パラメータグループを使用する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)」 
+ 「[PostgreSQL SSL モード接続パラメーター](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE)」
+ 「[JDBC からの SSL の使用](https://jdbc.postgresql.org/documentation/ssl/)」
+ [SSL/TLS 証明書の更新](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
  + [DB インスタンスまたはクラスターを変更して CA 証明書を更新する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-updating)
  + [メンテナンスを適用して CA 証明書を更新する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html#UsingWithRDS.SSL-certificate-rotation-maintenance-update)

AWS SCT
+ 「[AWS スキーマ変換ツール](https://aws.amazon.com/dms/schema-conversion-tool/)」 
+ 「[AWS スキーマ変換ツールユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」 
+ 「[AWS SCT ユーザーインターフェースの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)」 
+ 「[AWS SCT のソースとして、Oracle Database の使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)」 

AWS DMS
+ AWS Database Migration Service
+ 「[AWS Database Migration Service ユーザーガイド](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 
  + 「[AWS DMSのソースとして Oracle データベースを使用](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)」 
+ 「[AWS データベース移行サービスを組み合わせて SSL を使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.SSL.html)」 
+ 「[リレーショナルデータベースを実行するアプリケーションの AWS への移行](https://d1.awsstatic.com/whitepapers/Migration/migrating-applications-to-aws.pdf)」

## 追加情報
<a name="migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms-additional"></a>

Amazon RDS 認証局証明書 `rds-ca-2019` は、2024 年 8 月に失効しました。RDS DB インスタンスまたはマルチ AZ DB クラスターに接続するために証明書検証付きの SSL または TLS を使用している場合、または使用する予定がある場合は、新しい CA 証明書 (`rds-ca-rsa2048-g1`、`rds-ca-rsa4096-g1`、または `rds-ca-ecc384-g1`) のいずれかを使用することを検討してください。

# Oracle SERIALLY\$1REUSABLE プラグマパッケージを PostgreSQL に移行
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql"></a>

*Amazon Web Services、Vinay Paladi*

## 概要
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-summary"></a>

このパターンは、SERIALLY\$1REUSABLE プラグマとして定義されている Oracle パッケージをAmazon Web Services (AWS) 上の PostgreSQL に移行するための段階的なアプローチを提供します。このアプローチでは、SERIALLY\$1REUSABLE プラグマの機能が維持されます。

PostgreSQL はパッケージの概念と SERIALLY\$1REUSABLE プラグマをサポートしていません。PostgreSQL でも同様の機能を実現するには、パッケージ用のスキーマを作成し、関連するすべてのオブジェクト (関数、プロシージャ、タイプなど) をスキーマ内にデプロイできます。SERIALLY\$1REUSABLE プラグマの機能を実現するために、このパターンで提供されるラッパー関数スクリプトの例では、「[AWS Schema Conversion Tool (AWS SCT) 拡張パック](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html)」を使用しています。

詳細については、Oracle ドキュメントの「[SERIALLY\$1REUSABLE Pragma](https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems046.htm)」を参照してください。

## 前提条件と制限
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ AWS SCT の最新バージョンと必要なドライバー
+ Amazon Aurora PostgreSQL 互換エディションデータベースまたは PostgreSQL データベース用の Amazon Relational Database Service (Amazon RDS) 

**製品バージョン**
+ Oracle データベースバージョン 10g 以降

## アーキテクチャ
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-architecture"></a>

**ソーステクノロジースタック**
+ Oracle Database のオンプレミス

**ターゲットテクノロジースタック**
+ 「[Aurora PostgreSQL 互換](https://aws.amazon.com/rds/aurora/details/postgresql-details/)」または Amazon RDS for PostgreSQL
+ AWS SCT

**移行アーキテクチャ**

![\[AWS SCT、.sql ファイル、手動変換、PostgreSQL を使用して AWS に送信されるオンプレミスの Oracle DB データ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/fe3c45d2-6ea4-43b5-adb1-18f068f126b9/images/2dc90708-e300-4251-9d12-de97b6588b72.png)


## ツール
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-tools"></a>

**AWS サービス**
+ 「[AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベース移行をサポートします。
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型で ACID 準拠のリレーショナルデータベースエンジンです。
+ 「[Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)」を使用して、AWS クラウドでの PostgreSQL リレーショナルデータベースをセットアップ、運用、スケーリングできます。

その他のツール
+ 「[pgAdmin](https://www.pgadmin.org/)」は PostgreSQL 用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。

## エピック
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-epics"></a>

### AWS SCT を使用して Oracle パッケージを移行する
<a name="migrate-the-oracle-package-by-using-aws-sct"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を設定します。 | ソースデータベースへの AWS SCT 接続を設定します。詳細については、「[AWS SCTのソースとしての Oracle データベースの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。 | DBA、開発者 | 
| スクリプトを変換します。 | AWS SCT を使用して Oracle パッケージを変換します。そのためには、ターゲットデータベースを Aurora PostgreSQL 互換として選択します。 | DBA、開発者 | 
| .sql ファイルを保存します。 | .sql ファイルを保存する前に、AWS SCT の **[プロジェクト設定]** オプションを **[ステージごとの単一ファイル]** に変更します。AWS SCT は、.sql ファイルをオブジェクトタイプに基づいて複数の.sql ファイルに分割します。 | DBA、開発者 | 
| コードを変更してください。 | AWS SCT によって生成された `init` 関数を開き、「*追加情報*」セクションの例に示すように変更します。機能 `pg_serialize = 0` を実現するための変数が追加されます。 | DBA、開発者 | 
| 変換をテストします。 | `init` 関数を Aurora PostgreSQL 互換データベースにデプロイし、結果をテストします。 | DBA、開発者 | 

## 関連リソース
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-resources"></a>
+ 「[AWS スキーマ変換ツール](https://aws.amazon.com/dms/schema-conversion-tool/)」
+ 「[Amazon RDS](https://aws.amazon.com/rds/)」 
+ 「[Amazon Aurora 機能](https://aws.amazon.com/rds/aurora/postgresql-features/)」
+ 「[SERIALLY\$1REUSABLE Pragma プラグマ](https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/seriallyreusable_pragma.htm#LNPLS01346)」

## 追加情報
<a name="migrate-oracle-serially-reusable-pragma-packages-into-postgresql-additional"></a>

```
Source Oracle Code:

CREATE OR REPLACE PACKAGE test_pkg_var
IS
PRAGMA SERIALLY_REUSABLE;
PROCEDURE function_1
 (test_id number);
PROCEDURE function_2
 (test_id number
 );
END;

CREATE OR REPLACE PACKAGE BODY test_pkg_var
IS
PRAGMA SERIALLY_REUSABLE;
v_char VARCHAR2(20) := 'shared.airline';
v_num number := 123;

PROCEDURE function_1(test_id number)
IS
begin
dbms_output.put_line( 'v_char-'|| v_char);
dbms_output.put_line( 'v_num-'||v_num);
v_char:='test1';
function_2(0);
END;

PROCEDURE function_2(test_id number)
is
begin
dbms_output.put_line( 'v_char-'|| v_char);
dbms_output.put_line( 'v_num-'||v_num);
END;
END test_pkg_var;

Calling the above functions

set serveroutput on


EXEC test_pkg_var.function_1(1);


EXEC test_pkg_var.function_2(1);


Target Postgresql Code:


CREATE SCHEMA test_pkg_var;

CREATE OR REPLACE FUNCTION test_pkg_var.init(pg_serialize IN INTEGER DEFAULT 0)

RETURNS void
AS
$BODY$

DECLARE

BEGIN

if aws_oracle_ext.is_package_initialized( 'test_pkg_var' ) AND pg_serialize = 0

then

return;

end if;

PERFORM aws_oracle_ext.set_package_initialized( 'test_pkg_var' );

PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'shared.airline.basecurrency'::CHARACTER

VARYING(100));

PERFORM aws_oracle_ext.set_package_variable('test_pkg_var', 'v_num', 123::integer);

END;

$BODY$

LANGUAGE plpgsql;


CREATE OR REPLACE FUNCTION test_pkg_var.function_1(pg_serialize int default 1)

RETURNS void
AS

$BODY$
DECLARE

BEGIN

PERFORM test_pkg_var.init(pg_serialize);

raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char');

raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num');

PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'test1'::varchar);

PERFORM test_pkg_var.function_2(0);
END;

$BODY$
LANGUAGE plpgsql;


CREATE OR REPLACE FUNCTION test_pkg_var.function_2(IN pg_serialize integer default 1)

RETURNS void

AS

$BODY$

DECLARE

BEGIN

PERFORM test_pkg_var.init(pg_serialize);

raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char');

raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num');

END;
$BODY$
LANGUAGE plpgsql;


Calling the above functions

select test_pkg_var.function_1()

 select test_pkg_var.function_2()
```

# Oracle 外部テーブルを Amazon Aurora PostgreSQL 互換に移行
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible"></a>

*Amazon Web Services、anuradha chintha、Rakesh Raghav*

## 概要
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-summary"></a>

外部テーブルにより、Oracle がデータベースの外部にあるフラットファイルに保存されているデータをクエリできます。ORACLE\$1LOADER ドライバーを使用して、SQL\$1Loader ユーティリティでロードできるあらゆる形式で保存されているデータにアクセスできます。外部テーブルではデータ操作言語 (DML) を使用できませんが、クエリ、結合、ソート操作には外部テーブルを使用できます。

Amazon Aurora PostgreSQL 互換エディションには、Oracle の外部テーブルと類似する機能はありません。代わりに、モダナイゼーションを使用して、機能要件を満たし、かつ質素なスケーラブルなソリューションを開発する必要があります。

このパターンでは、`aws_s3` 拡張を使用して、さまざまなタイプの Oracle 外部テーブルをAmazon Web Services (AWS) クラウド上の Aurora PostgreSQL 互換エディションに移行する手順を示しています。

実稼働環境に実装する前に、このソリューションを徹底的にテストすることを推奨します。

## 前提条件と制限事項
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ AWS コマンドラインインターフェイス (AWS CLI)
+ 使用可能な Aurora PostgreSQL 互換データベースインスタンス。
+ 外部テーブルのあるオンプレミスの Oracle データベース
+ PG. クライアント API
+ データファイル 

**機能制限 **
+ このパターンには Oracle 外部テーブルの置き換えの機能がありません。ただし、手順とサンプルコードをさらに拡張して、データベースのモダナイゼーション目標を達成することができます。
+ ファイルには、`aws_s3` エクスポート関数とインポート関数で区切り文字として渡される文字を含んではなりません。

**製品バージョン**
+ Amazon S3 から PostgreSQL の RDS にインポートするには、データベースで PostgreSQL バージョン 10.7 以降を実行する必要があります。

## アーキテクチャ
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-architecture"></a>

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

**ソースアーキテクチャ**

![\[オンプレミスの Oracle データベースのディレクトリとテーブルに送られるデータファイルの図表。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/555e69af-36fc-4ff5-b66c-af22b4cf262a/images/3fbc507d-b0fa-4e05-b999-043dc7327ed7.png)


**ターゲットテクノロジースタック**
+ Amazon Aurora PostgreSQL- 互換
+ Amazon CloudWatch
+ AWS Lambda
+ AWS Secrets Manager
+ Amazon Simple Notiﬁcation Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)

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

以下の図表は、このソリューションの概要を示しています。

![\[図表の後に説明があります。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/555e69af-36fc-4ff5-b66c-af22b4cf262a/images/5421540e-d2e3-4361-89cc-d8415fcb21fd.png)


1. ファイルが S3 バケットにアップロードされます。

1. Lambda 関数が初期化されます。

1. Lambda 関数は DB 関数呼び出しを開始します。

1. Secrets Manager は、データベースにアクセスするための認証情報を提供します。

1. DB 関数によって、SNS アラームが作成されます。

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

外部テーブルへの追加や変更は、メタデータのメンテナンスで処理できます。

## ツール
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-tools"></a>
+ 「[Amazon Aurora PostgreSQL-互換](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)」 — Amazon Aurora PostgreSQL 互換エディションは、フルマネージド型で PostgreSQL 互換で、ACID 準拠のリレーショナルデータベースエンジンです。ハイエンドの商用データベースのスピードと信頼性を、オープンソースデータベースの高いコスト効率を経験できます。
+ 「[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」 — AWS コマンドラインインターフェイス (AWS CLI)は、AWS のサービスを管理するための統合ツールです。ダウンロードおよび設定用の１つのツールのみを使用して、コマンドラインから複数の AWS サービスを制御し、スクリプトを使用してこれらを自動化することができます。
+ 「[Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)」 — Amazon CloudWatch は Amazon S3 のリソースと利用状況を監視します。
+ 「[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)」 — AWS Lambdaは、サーバーのプロビジョニングや管理、ワークロードに対応したクラスタースケーリングロジックの作成、イベント統合の維持、あるいはランタイムの管理などを行うことなくコードを実行でき、サーバーレスコンピューティングサービスです。このパターンでは、ファイルが Amazon S3 にアップロードされるたびに、Lambda がデータベース関数を実行します。
+ 「[AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)」 — AWS Secrets Manager は、認証情報を保存および取得するためのサービスです。Secrets Manager を使用して、コードにハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得できます。
+ 「[Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)」 — Amazon Simple Storage Service (Amazon S3) は、Aurora PostgreSQL 互換クラスターとの間で消費および送信するファイルを受信および保存するためのストレージレイヤーを提供します。
+ 「[aws\$1s3](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#aws_s3.table_import_from_s3)」 — `aws_s3` の拡張は Amazon S3 と Aurora PostgreSQL 互換を統合します。
+ 「[Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)」 — Amazon Simple Notiﬁcation Service (Amazon SNS)は、パブリッシャーやクライアントの間のメッセージ配信や送信を調整および管理します。このパターンでは、Amazon SNS を使用して通知を送信します。

**Code **

ファイルを S3 バケットに配置するたびに、DB 関数を作成して処理アプリケーションまたは Lambda 関数から呼び出す必要があります。詳細については、コード (添付) を参照してください。

## エピック
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-epics"></a>

### 外部ファイルの作成
<a name="create-an-external-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 外部ファイルをソースデータベースに追加します。 | 外部ファイルを作成し、`oracle` ディレクトリに移動します。 | DBA | 

### ターゲットの設定 (Aurora PostgreSQL 互換の) 設定
<a name="configure-the-target-aurora-postgresql-compatible"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Aurora PostgreSQL データベースを作成します。 | Amazon Aurora PostgreSQL 互換クラスターに DB インスタンスを作成します。 | DBA | 
| スキーマ、aws\$1s3 エクステンション、テーブルを作成します。 | 「*追加情報*」セクションの `ext_tbl_scripts` にあるコードを使用します。テーブルには、実際のテーブル、ステージングテーブル、エラーとログテーブル、およびメタテーブルが含まれます。 | DBA、開発者 | 
| DB関数を作成します。 | DB 関数を作成するには、*追加情報*セクションの `load_external_table_latest` 関数の下のコードを使用します。 | DBA、開発者 | 

### Lambda 関数を作成して設定する
<a name="create-and-configure-the-lambda-function"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ロールを作成します。 | Amazon S3 と Amazon Relational Database Service　(Amazon RDS) にアクセスする権限を持つロールを作成します。このロールは、パターンを実行するための Lambda に割り当てられます。 | DBA | 
| Lambda 関数の作成 | Amazon S3 (例: `file_key = info.get('object', {}).get('key')`)からファイル名を読み取り、そのファイル名を入力パラメータとして DB 関数 (例、`curs.callproc("load_external_tables", [file_key])`) を呼び出す Lambda 関数を作成します。関数呼び出しの結果に応じて、SNS 通知が開始されます (例、`client.publish(TopicArn='arn:',Message='fileloadsuccess',Subject='fileloadsuccess')` )。ビジネスニーズに基づいて、必要に応じて追加のコードを使用して Lambda 関数を作成できます。詳細については、Lambda の「[ドキュメント](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)」 を参照してください。 | DBA | 
| S3 バケットイベントトリガーを設定します。 | S3 バケットのすべてのオブジェクト作成イベントで Lambda 関数を呼び出すメカニズムを設定します。 | DBA | 
| シークレットを作成します。 | Secrets Manager を使用して、データベース認証情報のシークレット名を作成します。Lambda 関数にシークレットを渡します。 | DBA | 
| Lambda サポートファイルをアップロードします。 | Lambda サポートパッケージを Aurora PostgreSQL 互換に接続するための添付の Python スクリプトを含む.zip ファイルをアップロードします。Python コードは、データベースで作成した関数を呼び出します。 | DBA | 
| SNS トピックを作成します。 | SNS トピックを作成して、データロードの成功または失敗のメールを送信します。 | DBA | 

### Amazon S3 との統合を追加する
<a name="add-integration-with-amazon-s3"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | Amazon S3 コンソールで、先頭にスラッシュを含まない一意の名前で S3 バケットを作成します。S3 バケット名はグローバルに一意であり、名前空間はすべての AWS アカウントによって共有されます。 | DBA | 
| IAM ポリシーを作成します。 | AWS 識別とアクセス管理(IAM) ポリシーを作成するには、*追加情報*セクションの `s3bucketpolicy_for_import` の配下のコードを使用します。 | DBA | 
| ロールを作成します。 | Aurora PostgreSQL 互換用に 2 つのロールを作成します。1 つはインポート用で、もう 1 つはエクスポート用です。対応するポリシーをロールに割り当てます。 | DBA | 
| ロールを Aurora PostgreSQL 互換クラスターにアタッチします。 | **ロールの管理**で、Aurora PostgreSQL クラスターにインポートロールとエクスポートロールをアタッチします。 | DBA | 
| Aurora PostgreSQL 互換のサポートオブジェクトを作成します。 | テーブルスクリプトについては、*追加情報*セクション `ext_tbl_scripts` の配下にあるコードを使用します。カスタム関数については、*追加情報*セクションの `load_external_Table_latest` の配下にあるコードを使用します。 | DBA | 

### テストファイルを処理
<a name="process-a-test-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットにファイルをアップロードします。 | テストファイルを S3 バケットにアップロードするには、コンソールまたは AWS CLIにある以下のコマンドを使用します。 <pre>aws s3 cp /Users/Desktop/ukpost/exttbl/"testing files"/aps s3://s3importtest/inputext/aps</pre>ファイルがアップロードされるとすぐに、バケットイベントによって Lambda 関数が開始されますが、それによりAurora PostgreSQL 互換関数が実行されます。 | DBA | 
| データ、ログ、エラーファイルを確認してください。 | Aurora PostgreSQL 互換関数はファイルをメインテーブルに読み込み、S3 バケットに `.log` と `.bad` のファイルを作成します。 | DBA | 
| ソリューションを監視します。 | Amazon CloudWatch コンソールで、Lambda 関数をモニタリングします。 | DBA | 

## 関連リソース
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-resources"></a>
+ 「[Amazon S3 統合](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html)」
+ 「[Amazon S3](https://aws.amazon.com/s3/)」
+ 「[Amazon Aurora PostgreSQL-互換エディションと連携](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」
+ 「[AWS Lambda](https://aws.amazon.com/lambda/)」
+ 「[Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)」
+ 「[AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)」
+ 「[Amazon SNS 通知のセットアップ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)」

## 追加情報
<a name="migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible-additional"></a>

**ext\$1table\$1scripts**

```
CREATE EXTENSION aws_s3 CASCADE;
CREATE TABLE IF NOT EXISTS meta_EXTERNAL_TABLE
(
    table_name_stg character varying(100) ,
    table_name character varying(100)  ,
    col_list character varying(1000)  ,
    data_type character varying(100)  ,
    col_order numeric,
    start_pos numeric,
    end_pos numeric,
    no_position character varying(100)  ,
    date_mask character varying(100)  ,
    delimeter character(1)  ,
    directory character varying(100)  ,
    file_name character varying(100)  ,
    header_exist character varying(5)
);
CREATE TABLE IF NOT EXISTS ext_tbl_stg
(
    col1 text
);
CREATE TABLE IF NOT EXISTS error_table
(
    error_details text,
    file_name character varying(100),
    processed_time timestamp without time zone
);
CREATE TABLE IF NOT EXISTS log_table
(
    file_name character varying(50) COLLATE pg_catalog."default",
    processed_date timestamp without time zone,
    tot_rec_count numeric,
    proc_rec_count numeric,
    error_rec_count numeric
);
sample insert scripts of meta data:
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'source_filename', 'character varying', 2, 8, 27, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'record_type_identifier', 'character varying', 3, 28, 30, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'fad_code', 'numeric', 4, 31, 36, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'session_sequence_number', 'numeric', 5, 37, 42, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
INSERT INTO meta_EXTERNAL_TABLE (table_name_stg, table_name, col_list, data_type, col_order, start_pos, end_pos, no_position, date_mask, delimeter, directory, file_name, header_exist) VALUES ('F_EX_APS_TRANSACTIONS_STG', 'F_EX_APS_TRANSACTIONS', 'transaction_sequence_number', 'numeric', 6, 43, 48, NULL, NULL, NULL, 'databasedev', 'externalinterface/loaddir/APS', 'NO');
```

**s3bucketpolicy\$1for import**

```
---Import role policy
--Create an IAM policy to allow, Get,  and list actions on S3 bucket
 {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "s3import",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::s3importtest",
                "arn:aws:s3:::s3importtest/*"
            ]
        }
    ]
}
--Export Role policy
--Create an IAM policy to allow, put,  and list actions on S3 bucket
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "s3export",
            "Action": [
                "S3:PutObject",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::s3importtest/*"
            ]
        }
    ]
}
```

**Sample DB function load\$1external\$1tables\$1latest**

```
CREATE OR REPLACE FUNCTION public.load_external_tables(pi_filename text)
 RETURNS character varying
 LANGUAGE plpgsql
AS $function$
/* Loading data from S3 bucket into a APG table */
DECLARE
 v_final_sql TEXT;
 pi_ext_table TEXT;
 r refCURSOR;
 v_sqlerrm text;
 v_chunk numeric;
 i integer;
 v_col_list TEXT;
 v_postion_list CHARACTER VARYING(1000);
 v_len  integer;
 v_delim varchar;
 v_file_name CHARACTER VARYING(1000);
 v_directory CHARACTER VARYING(1000);
 v_table_name_stg CHARACTER VARYING(1000);
 v_sql_col TEXT;
 v_sql TEXT;
 v_sql1 TEXT;
 v_sql2 TEXT;
 v_sql3 TEXT;
 v_cnt integer;
 v_sql_dynamic TEXT;
 v_sql_ins TEXT;
 proc_rec_COUNT integer;
 error_rec_COUNT integer;
 tot_rec_COUNT integer;
 v_rec_val integer;
 rec record;
 v_col_cnt integer;
 kv record;
 v_val text;
 v_header text;
 j integer;
 ERCODE VARCHAR(5);
 v_region text;
 cr CURSOR FOR
 SELECT distinct DELIMETER,
   FILE_NAME,
   DIRECTORY
 FROM  meta_EXTERNAL_TABLE
 WHERE table_name = pi_ext_table
   AND DELIMETER IS NOT NULL;


 cr1 CURSOR FOR
   SELECT   col_list,
   data_type,
   start_pos,
   END_pos,
   concat_ws('',' ',TABLE_NAME_STG) as TABLE_NAME_STG,
   no_position,date_mask
 FROM  meta_EXTERNAL_TABLE
 WHERE table_name = pi_ext_table
 order by col_order asc;
cr2 cursor FOR
SELECT  distinct table_name,table_name_stg
   FROM  meta_EXTERNAL_TABLE
   WHERE upper(file_name) = upper(pi_filename);


BEGIN
 -- PERFORM utl_file_utility.init();
   v_region := 'us-east-1';
   /* find tab details from file name */


   --DELETE FROM  ERROR_TABLE WHERE file_name= pi_filename;
  -- DELETE FROM  log_table WHERE file_name= pi_filename;


 BEGIN


   SELECT distinct table_name,table_name_stg INTO strict pi_ext_table,v_table_name_stg
   FROM  meta_EXTERNAL_TABLE
   WHERE upper(file_name) = upper(pi_filename);
 EXCEPTION
   WHEN NO_DATA_FOUND THEN
    raise notice 'error 1,%',sqlerrm;
    pi_ext_table := null;
    v_table_name_stg := null;
      RAISE USING errcode = 'NTFIP' ;
    when others then
        raise notice 'error others,%',sqlerrm;
 END;
 j :=1 ;
  
for rec in  cr2
 LOOP




  pi_ext_table     := rec.table_name;
  v_table_name_stg := rec.table_name_stg;
  v_col_list := null;


 IF pi_ext_table IS NOT NULL
  THEN
    --EXECUTE concat_ws('','truncate table  ' ,pi_ext_table) ;
   EXECUTE concat_ws('','truncate table  ' ,v_table_name_stg) ;




       SELECT distinct DELIMETER INTO STRICT v_delim
       FROM  meta_EXTERNAL_TABLE
       WHERE table_name = pi_ext_table;


       IF v_delim IS NOT NULL THEN
     SELECT distinct DELIMETER,
       FILE_NAME,
       DIRECTORY ,
       concat_ws('',' ',table_name_stg),
       case  header_exist when 'YES' then 'CSV HEADER' else 'CSV' end as header_exist
     INTO STRICT v_delim,v_file_name,v_directory,v_table_name_stg,v_header
     FROM  meta_EXTERNAL_TABLE
     WHERE table_name = pi_ext_table
       AND DELIMETER IS NOT NULL;


     IF    upper(v_delim) = 'CSV'
     THEN
       v_sql := concat_ws('','SELECT aws_s3.table_import_FROM_s3 ( ''',
       v_table_name_stg,''','''',
       ''DELIMITER '''','''' CSV HEADER QUOTE ''''"'''''', aws_commons.create_s3_uri ( ''',
       v_directory,''',''',v_file_name,''', ''',v_region,'''))');
       ELSE
       v_sql := concat_ws('','SELECT aws_s3.table_import_FROM_s3(''',
           v_table_name_stg, ''','''', ''DELIMITER AS ''''^''''',''',','
          aws_commons.create_s3_uri
           ( ''',v_directory, ''',''',
           v_file_name, ''',',
            '''',v_region,''')
          )');
          raise notice 'v_sql , %',v_sql;
       begin
        EXECUTE  v_sql;
       EXCEPTION
         WHEN OTHERS THEN
           raise notice 'error 1';
         RAISE USING errcode = 'S3IMP' ;
       END;


       select count(col_list) INTO v_col_cnt
       from  meta_EXTERNAL_TABLE where table_name = pi_ext_table;






        -- raise notice 'v_sql 2, %',concat_ws('','update ',v_table_name_stg, ' set col1 = col1||''',v_delim,'''');


       execute concat_ws('','update ',v_table_name_stg, ' set col1 = col1||''',v_delim,'''');




       i :=1;
       FOR rec in cr1
       loop
       v_sql1 := concat_ws('',v_sql1,'split_part(col1,''',v_delim,''',', i,')',' as ',rec.col_list,',');
       v_sql2 := concat_ws('',v_sql2,rec.col_list,',');
   --    v_sql3 := concat_ws('',v_sql3,'rec.',rec.col_list,'::',rec.data_type,',');


       case
         WHEN upper(rec.data_type) = 'NUMERIC'
         THEN v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                 coalesce((trim(split_part(col1,''',v_delim,''',', i,')))::NUMERIC,0)::',rec.data_type,' END as ',rec.col_list,',') ;
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask = 'YYYYMMDD'
         THEN v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(split_part(col1,''',v_delim,''',', i,'))),''99990101''),''YYYYMMDD'')::',rec.data_type,' END as ',rec.col_list,',');
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask =  'MM/DD/YYYY hh24:mi:ss'
         THEN v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(split_part(col1,''',v_delim,''',', i,'))),''01/01/9999 0024:00:00''),''MM/DD/YYYY hh24:mi:ss'')::',rec.data_type,' END as ',rec.col_list,',');
          ELSE
        v_sql3 := concat_ws('',v_sql3,' case WHEN length(trim(split_part(col1,''',v_delim,''',', i,'))) =0
                THEN null
                 ELSE
                  coalesce((trim(split_part(col1,''',v_delim,''',', i,'))),'''')::',rec.data_type,' END as ',rec.col_list,',') ;
       END case;


       i :=i+1;
       end loop;


         -- raise notice 'v_sql 3, %',v_sql3;


       SELECT trim(trailing ' ' FROM v_sql1) INTO v_sql1;
       SELECT trim(trailing ',' FROM v_sql1) INTO v_sql1;


       SELECT trim(trailing ' ' FROM v_sql2) INTO v_sql2;
       SELECT trim(trailing ',' FROM v_sql2) INTO v_sql2;


       SELECT trim(trailing ' ' FROM v_sql3) INTO v_sql3;
       SELECT trim(trailing ',' FROM v_sql3) INTO v_sql3;


       END IF;
      raise notice 'v_delim , %',v_delim;


     EXECUTE concat_ws('','SELECT COUNT(*) FROM ',v_table_name_stg)  INTO v_cnt;


    raise notice 'stg cnt , %',v_cnt;


    /* if upper(v_delim) = 'CSV' then
       v_sql_ins := concat_ws('', ' SELECT * from ' ,v_table_name_stg );
     else
      -- v_sql_ins := concat_ws('',' SELECT ',v_sql1,'  from (select col1 from ' ,v_table_name_stg , ')sub ');
       v_sql_ins := concat_ws('',' SELECT ',v_sql3,'  from (select col1 from ' ,v_table_name_stg , ')sub ');
       END IF;*/


v_chunk := v_cnt/100;




for i in 1..101
loop
     BEGIN
    -- raise notice 'v_sql , %',v_sql;
       -- raise notice 'Chunk number , %',i;
       v_sql_ins := concat_ws('',' SELECT ',v_sql3,'  from (select col1 from ' ,v_table_name_stg , ' offset ',v_chunk*(i-1), ' limit ',v_chunk,') sub ');


     v_sql := concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins);
     -- raise notice 'select statement , %',v_sql_ins;
          -- v_sql := null;
     -- EXECUTE concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins, 'offset ',v_chunk*(i-1), ' limit ',v_chunk );
     --v_sql := concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins );


     -- raise notice 'insert statement , %',v_sql;


    raise NOTICE 'CHUNK START %',v_chunk*(i-1);
   raise NOTICE 'CHUNK END %',v_chunk;


     EXECUTE v_sql;


  EXCEPTION
       WHEN OTHERS THEN
       -- v_sql_ins := concat_ws('',' SELECT ',v_sql1, '  from (select col1 from ' ,v_table_name_stg , ' )sub ');
         -- raise notice 'Chunk number for cursor , %',i;


    raise NOTICE 'Cursor - CHUNK START %',v_chunk*(i-1);
   raise NOTICE 'Cursor -  CHUNK END %',v_chunk;
         v_sql_ins := concat_ws('',' SELECT ',v_sql3, '  from (select col1 from ' ,v_table_name_stg , ' )sub ');


         v_final_sql := REPLACE (v_sql_ins, ''''::text, ''''''::text);
        -- raise notice 'v_final_sql %',v_final_sql;
         v_sql :=concat_ws('','do $a$ declare  r refcursor;v_sql text; i numeric;v_conname text;  v_typ  ',pi_ext_table,'[]; v_rec  ','record',';
           begin






           open r for execute ''select col1 from ',v_table_name_stg ,'  offset ',v_chunk*(i-1), ' limit ',v_chunk,''';
           loop
           begin
           fetch r into v_rec;
           EXIT WHEN NOT FOUND;




           v_sql := concat_ws('''',''insert into  ',pi_ext_table,' SELECT ',REPLACE (v_sql3, ''''::text, ''''''::text) , '  from ( select '''''',v_rec.col1,'''''' as col1) v'');
            execute v_sql;


           exception
            when others then
          v_sql := ''INSERT INTO  ERROR_TABLE VALUES (concat_ws('''''''',''''Error Name: '''',$$''||SQLERRM||''$$,''''Error State: '''',''''''||SQLSTATE||'''''',''''record : '''',$$''||v_rec.col1||''$$),'''''||pi_filename||''''',now())'';


               execute v_sql;
             continue;
           end ;
           end loop;
           close r;
           exception
           when others then
         raise;
           end ; $a$');
      -- raise notice ' inside excp v_sql %',v_sql;
          execute v_sql;
      --  raise notice 'v_sql %',v_sql;
       END;
  END LOOP;
     ELSE


     SELECT distinct DELIMETER,FILE_NAME,DIRECTORY ,concat_ws('',' ',table_name_stg),
       case  header_exist when 'YES' then 'CSV HEADER' else 'CSV' end as header_exist
       INTO STRICT v_delim,v_file_name,v_directory,v_table_name_stg,v_header
     FROM  meta_EXTERNAL_TABLE
     WHERE table_name = pi_ext_table                  ;
     v_sql := concat_ws('','SELECT aws_s3.table_import_FROM_s3(''',
       v_table_name_stg, ''','''', ''DELIMITER AS ''''#'''' ',v_header,' '',','
      aws_commons.create_s3_uri
       ( ''',v_directory, ''',''',
       v_file_name, ''',',
        '''',v_region,''')
      )');
         EXECUTE  v_sql;


     FOR rec in cr1
     LOOP


      IF rec.start_pos IS NULL AND rec.END_pos IS NULL AND rec.no_position = 'recnum'
      THEN
        v_rec_val := 1;
      ELSE


       case
         WHEN upper(rec.data_type) = 'NUMERIC'
         THEN v_sql1 := concat_ws('',' case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                 coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1)))::NUMERIC,0)::',rec.data_type,' END as ',rec.col_list,',') ;
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask = 'YYYYMMDD'
         THEN v_sql1 := concat_ws('','case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))),''99990101''),''YYYYMMDD'')::',rec.data_type,' END as ',rec.col_list,',');
         WHEN UPPER(rec.data_type) = 'TIMESTAMP WITHOUT TIME ZONE' AND rec.date_mask = 'YYYYMMDDHH24MISS'
         THEN v_sql1 := concat_ws('','case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                 to_date(coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))),''9999010100240000''),''YYYYMMDDHH24MISS'')::',rec.data_type,' END as ',rec.col_list,',');
          ELSE
        v_sql1 := concat_ws('',' case WHEN length(trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))) =0
                THEN null
                 ELSE
                  coalesce((trim(substring(COL1, ',rec.start_pos ,',', rec.END_pos,'-',rec.start_pos ,'+1))),'''')::',rec.data_type,' END as ',rec.col_list,',') ;
       END case;


      END IF;
      v_col_list := concat_ws('',v_col_list ,v_sql1);
     END LOOP;




           SELECT trim(trailing ' ' FROM v_col_list) INTO v_col_list;
           SELECT trim(trailing ',' FROM v_col_list) INTO v_col_list;


           v_sql_col   :=  concat_ws('',trim(trailing ',' FROM v_col_list) , ' FROM  ',v_table_name_stg,' WHERE col1 IS NOT NULL AND length(col1)>0 ');




           v_sql_dynamic := v_sql_col;


           EXECUTE  concat_ws('','SELECT COUNT(*) FROM ',v_table_name_stg) INTO v_cnt;




         IF v_rec_val = 1 THEN
             v_sql_ins := concat_ws('',' select row_number() over(order by ctid) as line_number ,' ,v_sql_dynamic) ;


         ELSE
               v_sql_ins := concat_ws('',' SELECT' ,v_sql_dynamic) ;
           END IF;


     BEGIN
       EXECUTE concat_ws('','insert into  ', pi_ext_table ,' ', v_sql_ins);
           EXCEPTION
              WHEN OTHERS THEN
          IF v_rec_val = 1 THEN
                  v_final_sql := ' select row_number() over(order by ctid) as line_number ,col1 from ';
                ELSE
                 v_final_sql := ' SELECT col1 from';
               END IF;
       v_sql :=concat_ws('','do $a$ declare  r refcursor;v_rec_val numeric := ',coalesce(v_rec_val,0),';line_number numeric; col1 text; v_typ  ',pi_ext_table,'[]; v_rec  ',pi_ext_table,';
             begin
             open r for execute ''',v_final_sql, ' ',v_table_name_stg,' WHERE col1 IS NOT NULL AND length(col1)>0 '' ;
             loop
             begin
             if   v_rec_val = 1 then
             fetch r into line_number,col1;
             else
             fetch r into col1;
             end if;


             EXIT WHEN NOT FOUND;
              if v_rec_val = 1 then
              select line_number,',trim(trailing ',' FROM v_col_list) ,' into v_rec;
              else
                select ',trim(trailing ',' FROM v_col_list) ,' into v_rec;
              end if;


             insert into  ',pi_ext_table,' select v_rec.*;
              exception
              when others then
               INSERT INTO  ERROR_TABLE VALUES (concat_ws('''',''Error Name: '',SQLERRM,''Error State: '',SQLSTATE,''record : '',v_rec),''',pi_filename,''',now());
               continue;
              end ;
               end loop;
             close r;
              exception
              when others then
              raise;
              end ; $a$');
         execute v_sql;


     END;


         END IF;


   EXECUTE concat_ws('','SELECT COUNT(*) FROM  ' ,pi_ext_table)   INTO proc_rec_COUNT;


   EXECUTE concat_ws('','SELECT COUNT(*) FROM  error_table WHERE file_name =''',pi_filename,''' and processed_time::date = clock_timestamp()::date')  INTO error_rec_COUNT;


   EXECUTE concat_ws('','SELECT COUNT(*) FROM ',v_table_name_stg)   INTO tot_rec_COUNT;


   INSERT INTO  log_table values(pi_filename,now(),tot_rec_COUNT,proc_rec_COUNT, error_rec_COUNT);


   raise notice 'v_directory, %',v_directory;


   raise notice 'pi_filename, %',pi_filename;


   raise notice 'v_region, %',v_region;


  perform aws_s3.query_export_to_s3('SELECT replace(trim(substring(error_details,position(''('' in error_details)+1),'')''),'','','';''),file_name,processed_time FROM  error_table WHERE file_name = '''||pi_filename||'''',
   aws_commons.create_s3_uri(v_directory, pi_filename||'.bad', v_region),
   options :='FORmat csv, header, delimiter $$,$$'
   );


raise notice 'v_directory, %',v_directory;


   raise notice 'pi_filename, %',pi_filename;


   raise notice 'v_region, %',v_region;


  perform aws_s3.query_export_to_s3('SELECT * FROM  log_table WHERE file_name = '''||pi_filename||'''',
   aws_commons.create_s3_uri(v_directory, pi_filename||'.log', v_region),
   options :='FORmat csv, header, delimiter $$,$$'
   );




   END IF;
 j := j+1;
 END LOOP;


       RETURN 'OK';
EXCEPTION
    WHEN  OTHERS THEN
  raise notice 'error %',sqlerrm;
   ERCODE=SQLSTATE;
   IF ERCODE = 'NTFIP' THEN
     v_sqlerrm := concat_Ws('',sqlerrm,'No data for the filename');
   ELSIF ERCODE = 'S3IMP' THEN
    v_sqlerrm := concat_Ws('',sqlerrm,'Error While exporting the file from S3');
   ELSE
      v_sqlerrm := sqlerrm;
   END IF;


 select distinct directory into v_directory from  meta_EXTERNAL_TABLE;




 raise notice 'exc v_directory, %',v_directory;


   raise notice 'exc pi_filename, %',pi_filename;


   raise notice 'exc v_region, %',v_region;


  perform aws_s3.query_export_to_s3('SELECT * FROM  error_table WHERE file_name = '''||pi_filename||'''',
   aws_commons.create_s3_uri(v_directory, pi_filename||'.bad', v_region),
   options :='FORmat csv, header, delimiter $$,$$'
   );
    RETURN null;
END;
$function$
```

# 関数ベースのインデックスを Oracle から PostgreSQL に移行する
<a name="migrate-function-based-indexes-from-oracle-to-postgresql"></a>

*Amazon Web Services、Veeranjaneyulu Grandhi、Navakanth Talluri*

## 概要
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-summary"></a>

インデックスはデータベースのパフォーマンスを向上させる一般的な方法です。インデックスを使用すると、データベースサーバーはインデックスがない場合よりもずっと速く特定の行を検索して取得できます。ただし、インデックスはデータベースシステム全体にオーバーヘッドも発生させるため、適切に使用する必要があります。関数または式に基づく関数ベースのインデックスには、複数の列や数式が含まれる場合があります。関数ベースのインデックスは、インデックス式を使用するクエリのパフォーマンスを向上させます。 

PostgreSQL はもともと、安定と定義されているボラティリティを持つ関数を使った関数ベースのインデックスの作成をサポートしていません。ただし、`IMMUTABLE` としてのボラティリティを持つ関数を作成して、インデックスの作成に使用することはできます。

`IMMUTABLE` 関数はデータベースを変更することはできず、同じ引数が与えられてもずっと同じ結果を返すことが保証されています。このカテゴリにより、クエリが定数引数で関数を呼び出したときに、オプティマイザーは関数を事前評価できます。 

このパターンは、`to_char`、`to_date`、`to_number`などの関数と一緒に使用すると、Oracle の関数ベースのインデックスを同等の PostgreSQL に移行するのに役立ちます。

## 前提条件と制限事項
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-prereqs"></a>

**前提条件**
+ アクティブな Amazon Web Services (AWS) アカウント
+ リスナーサービスがセットアップされて実行されているソース Oracle データベースインスタンス
+ PostgreSQL データベースに関する知識

**制限事項**
+ データベースのサイズ制限は 64 TB です。
+ インデックス作成に使用される関数は IMMUTABLE でなければなりません。

**製品バージョン**
+ バージョン 11g (バージョン 11.2.0.3.v1 以降) および、12.2 および 18c までのすべての Oracle データベースエディション
+ PostgreSQL バージョン 9.6 以降

## アーキテクチャ
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上の Oracle データベース、または Amazon RDS for Oracle DB インスタンス

**ターゲットテクノロジースタック**
+ PostgreSQL エンジンのすべて

## ツール
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-tools"></a>
+ **pgAdmin 4** は Postgres 向けのオープンソース管理ツールです。pgAdmin 4 ツールは、データベースオブジェクトを作成、管理、使用するためのグラフィカルインターフェイスを提供します。
+ **Oracle SQL Developer** は、従来のデプロイとクラウドデプロイの両方で Oracle データベースを開発および管理するための統合開発環境 (IDE) です。

## エピック
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-epics"></a>

### 規定の関数を使用して関数ベースのインデックスを作成する
<a name="create-a-function-based-index-using-a-default-function"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| to\$1char 関数を使用して列に関数ベースのインデックスを作成する。 | 次のコードを使用して、関数を作成します。<pre>postgres=# create table funcindex( col1 timestamp without time zone);<br />CREATE TABLE<br />postgres=# insert into funcindex values (now());<br />INSERT 0 1<br />postgres=# select * from funcindex;<br />            col1<br />----------------------------<br /> 2022-08-09 16:00:57.77414<br />(1 rows)<br /> <br />postgres=# create index funcindex_idx on funcindex(to_char(col1,'DD-MM-YYYY HH24:MI:SS'));<br />ERROR:  functions in index expression must be marked IMMUTABLE</pre> PostgreSQL では、`IMMUTABLE` 句なしで関数ベースのインデックスを作成することはできません。 | DBA、アプリ開発者 | 
| 関数のボラティリティをチェックします。 | 関数のボラティリティをチェックするには、「*追加情報*」セクションのコードを使用してください。   | DBA | 

### ラッパー関数を使用して関数ベースのインデックスを作成する
<a name="create-function-based-indexes-using-a-wrapper-function"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ラッパー関数を作成する。 | ラッパー関数を作成するには、「*追加情報*」セクションのコードを使用してください。 | PostgreSQL 開発者 | 
| ラッパー関数を使用してインデックスを作成します。 | 「*追加情報*」セクションのコードを使用して、アプリケーションと同じスキーマにある `IMMUTABLE` キーワードを含むユーザー定義関数を作成し、索引作成スクリプトで参照します。ユーザー定義の関数が (前の例の) 共通のスキーマで作成されている場合は、`search_path` を次のように更新します。<pre>ALTER ROLE <ROLENAME> set search_path=$user, COMMON;</pre> | DBA、PostgreSQL 開発者 | 

### インデックス作成の検証
<a name="validate-index-creation"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| インデックス作成についての検証を行います。 | クエリのアクセスパターンに基づき、インデックスの作成が必要であることを検証します。 | DBA | 
| インデックスが使用可能であることを検証します。 | PostgreSQL オプティマイザーが関数ベースのインデックスを取得しているか確認するには、「explain」または「explain analyze」で SQL ステートメントを実行します。*「追加情報」セクションのコードを使用してください。*可能であれば、テーブル統計情報も収集します。explain の計画を見ると、PostgreSQL オプティマイザーが述語条件に基づいて関数ベースのインデックスを選択していることがわかります。 | DBA | 

## 関連リソース
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-resources"></a>
+ [関数ベースのインデックス](https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_indexes.htm#ADFNS00505) (Oracle ドキュメント)
+ [式のインデックス](https://www.postgresql.org/docs/9.4/indexes-expressional.html) (PostgreSQL ドキュメント)
+ [PostgreSQL のボラティリティ](https://www.postgresql.org/docs/current/xfunc-volatility.html) (PostgreSQL ドキュメント)
+ [PostgreSQL search\$1path](https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATH) (PostgreSQL ドキュメント)
+ [Oracle Database 19c から Amazon Aurora PostgreSQL への移行プレイブック](https://docs.aws.amazon.com/dms/latest/oracle-to-aurora-postgresql-migration-playbook/chap-oracle-aurora-pg.html) 

## 追加情報
<a name="migrate-function-based-indexes-from-oracle-to-postgresql-additional"></a>

**ラッパー関数を作成する**

```
CREATE OR REPLACE FUNCTION myschema.to_char(var1 timestamp without time zone, var2 varchar) RETURNS varchar AS $BODY$ select to_char(var1, 'YYYYMMDD'); $BODY$ LANGUAGE sql IMMUTABLE;
```

**ラッパー関数を使用してインデックスを作成する**

```
postgres=# create function common.to_char(var1 timestamp without time zone, var2 varchar) RETURNS varchar AS $BODY$ select to_char(var1, 'YYYYMMDD'); $BODY$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION
postgres=# create index funcindex_idx on funcindex(common.to_char(col1,'DD-MM-YYYY HH24:MI:SS'));
CREATE INDEX
```

**関数のボラティリティをチェックする**

```
SELECT DISTINCT p.proname as "Name",p.provolatile as "volatility" FROM pg_catalog.pg_proc p
 LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
 LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
 WHERE n.nspname OPERATOR(pg_catalog.~) '^(pg_catalog)$' COLLATE pg_catalog.default AND p.proname='to_char'GROUP BY p.proname,p.provolatile
ORDER BY 1;
```

**インデックスが使用可能であることを検証する**

```
explain analyze <SQL>
 
 
postgres=# explain select col1 from funcindex where common.to_char(col1,'DD-MM-YYYY HH24:MI:SS') = '09-08-2022 16:00:57';
                                                       QUERY PLAN
------------------------------------------------------------------------------------------------------------------------
 Index Scan using funcindex_idx on funcindex  (cost=0.42..8.44 rows=1 width=8)
   Index Cond: ((common.to_char(col1, 'DD-MM-YYYY HH24:MI:SS'::character varying))::text = '09-08-2022 16:00:57'::text)
(2 rows)
```

# エクステンションを使用して Oracle のネイティブ関数を PostgreSQL に移行
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions"></a>

*Amazon Web Services、Pinesh Singal*

## 概要
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-summary"></a>

この移行パターンでは、`aws_oracle_ext` および `orafce` の拡張を PostgreSQL (`psql`) ネイティブの組み込みコードに変更することにより、Oracle データベースインスタンスの Amazon Relational Database Service (Amazon RDS)をAmazon RDS for PostgreSQL、または Amazon Aurora PostgreSQL 互換バージョンに移行するためのステップバイステップのガイダンスを提供します。これにより、処理時間を節約します。

このパターンでは、トランザクション数が多いマルチテラバイトの Oracle ソースデータベースを、ダウンタイムなしでオフラインで手動で移行する方法を示しています。

移行プロセスでは、`aws_oracle_ext` と `orafce` 拡張付けの AWS Schema Conversion Tool (AWS SCT)を使用して、 Amazon RDS for Oracle データベーススキーマを Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換のデータベーススキーマに変換します。次に、コードを PostgreSQL でサポートされるネイティブ `psql` ビルトインコードに手動で変更します。理由は、拡張呼び出しが PostgreSQL データベースサーバーのコード処理に影響し、すべての拡張コードが PostgreSQL コードに完全に準拠する、または互換性があるわけではないからです。

このパターンは、主に AWS SCT と拡張 `aws_oracle_ext` と `orafce` を使用して、 SQL コードを手動で移行することにフォーカスしています。既に使用されている拡張をネイティブの PostgreSQL (`psql`) ビルトインに変換します。次に、拡張の参照をすべて削除し、それに応じてコードを変換します。

## 前提条件と制限事項
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント 
+ オペレーティングシステム (Windows または Mac) または Amazon EC2 インスタンス (稼働中) 
+ Orafce

**制限事項**

`aws_oracle_ext` または `orafce`の拡張を使用するすべての Oracle 関数が、ネイティブ PostgreSQL 関数に変換できるわけではありません。PostgreSQL ライブラリーでコンパイルするには、手動でやり直す必要があるかもしれません。

AWS SCT 拡張を使用する場合の欠点は、実行しその結果を得られるまでが遅いことです。そのコストは、Oracle の `SYSDATE` 関数を PostgreSQL の `NOW()` 関数へ移行する際に、3 種類のコード (`aws_oracle_ext`、`orafce`、および `psql` のデフォルト) それぞれに対して実行した、シンプルな [PostgreSQL の EXPLAIN プラン](https://www.postgresql.org/docs/current/sql-explain.html) (ステートメントの実行計画) から把握できます。詳細は、添付文書の「*パフォーマンス比較チェック*」セクションで説明されています。

**製品バージョン**
+ **ソース: ** Amazon RDS for Oracle データベース 10.2 以降 (10.x 用)、11g (11.2.0.3.v1 以降）および 12.2、18c、19c (およびそれ以降）まで（エンタープライズエディション、スタンダードエディション、スタンダードエディション １、およびスタンダードエディション 2 用）
+ **ターゲット **: Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換データベース 9.4 以降 (9.x用 )、10.x、11.x、12.x、13.x、14.x (およびそれ以降)
+ **AWS SCT**: 最新バージョン (このパターンは1.0.632でテスト済です)
+ **Orafce**: 最新バージョン (このパターンは 3.9.0 でテスト済です)

## アーキテクチャ
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-architecture"></a>

**ソーステクノロジースタック**
+ バージョン 12.1.0.2.v18 の Amazon RDS for Oracle データベースインスタンス

**ターゲットテクノロジースタック**
+ Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換データベースインスタンス (バージョン 11.5)

**データベース移行アーキテクチャ**

次の図表では、ソース Oracle とターゲット PostgreSQL のデータベース間のデータベース移行アーキテクチャを示しています。アーキテクチャには、AWS クラウド、仮想プライベートクラウド (VPC)、アベイラビリティーゾーン、プライベートサブネット、Amazon RDS for Oracle データベース、AWS SCT、Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換データベース、Oracle ( `aws_oracle_ext` and `orafce` ) の拡張、および構造化言語 (SQL) ファイルが含まれます。

![\[このプロセスは、次のリストで説明されています。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/158847bb-27ef-4915-a9ca-7d87073792c1/images/234b824a-bfe5-4ef0-9fa7-8401370b92a5.png)


1. Amazon RDS for Oracle DB インスタンス (ソース DB) を起動します。

1. `aws_oracle_ext` と `orafce` の拡張パックAWS SCT を使用して、ソースコードを Oracle から PostreSQL に変換します。

1. この変換により、PostgreSQL 適用の移行済みの .sql ファイルが生成されます。

1. 変換されない Oracle 拡張コードを手動で PostgreSQL ( `psql` ）コードに変換します。

1. 手動で変換すると、PostgreSQL 適用の変換済みの .sql ファイルが生成されます。

1. これらの .sql ファイルを、Amazon RDS for PostgreSQL DB インスタンス (ターゲット DB) で実行します。

## ツール
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-tools"></a>

**ツール**

*AWS サービス*
+ 「[AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」 - AWS Schema Conversion Tool (AWS SCT) は、既存のデータベーススキーマをあるデータベースエンジンから別のデータベースエンジンに変換します。リレーショナルオンライントランザクショナル処理（OLTP)スキーマ、またはデータウェアハウススキーマンを変換できます。変換されたスキーマは、Amazon RDS for MySQL DB インスタンス、Amazon Aurora DB クラスター、Amazon RDS for PostgreSQL DB インスタンス、または Amazon Redshift クラスター に適しています。また変換されたスキーマは、Amazon EC2 インスタンスでデータベースと共に使用することも、または Amazon S3 バケットにデータとして保存することもできます。

  AWS SCT には、ソースデータベースのデータベーススキーマをターゲット Amazon RDS インスタンスと互換性のある形式に自動変換するための、プロジェクトベースのユーザーインターフェイスが用意されています。 

  AWS SCT を使用して、Oracle ソースデータベースから前述のターゲットのいずれかに移行します。AWS SCT を使用して、スキーマ、ビュー、ストアドプロシージャ、関数などのソースデータベースオブジェクト定義をエクスポートできます。 

  AWS SCTを使用して、Oracle からのデータをAmazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換エディションに変換できます。 

  このパターンでは、AWS SCT を使用して `aws_oracle_ext` と `orafce` 拡張とを使用して Oracle コードを PostgreSQL に変AWS換および移行し、拡張コードを `psql` デフォルトまたはネイティブの組み込みコードに手動で移行します。
+  [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html) 拡張パックは、オブジェクトをターゲットデータベースに変換する際に必要な、ソースデータベースの関数をエミュレートするアドオンモジュールです。AWS SCT 拡張パックをインストールできるようになるには、データベーススキーマを変換する必要があります。

  データベースまたはデータウェアハウスのスキーマを変換すると、AWS SCT によってターゲットデータベースに別のスキーマが追加されます。この別のスキーマは、ソースデータベースの SQL システム関数を実装します。これらの関数により、変換したスキーマがターゲットデータベースに書き込まれます。この別のスキーマは、拡張パックスキーマと呼ばれます。

  OLTP データベースの拡張パックスキーマは、ソースデータベースに従って名前がつけられます。Oracle データベースの場合、拡張パックスキーマは `AWS_ORACLE_EXT` です。

*その他のツール*
+ 「[Oracle](https://github.com/orafce/orafce)」 — Oracle は Oracle 互換の関数、データ型、およびパッケージを実装するモジュールです。Berkeley Source Distribution (BSD) ライセンスを持つオープンソースのツールで、誰でも使用できます。`orafce` モジュールは、多くの Oracle 関数が PostgreSQL に実装されているため、Oracle から PostgreSQL への移行に役立ちます。

 

**Code**

AWS SCT 拡張コードの使用を避けるために、一般的に使用され、Oracle から PostgreSQL に移行されたすべてのコードのリストについては、添付のドキュメントを参照してください。

## エピック
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-epics"></a>

### Amazon RDS for Oracle ソースデータベースを設定
<a name="configure-the-amazon-rds-for-oracle-source-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle データベースインスタンスを作成します。 | Amazon RDS コンソールから Amazon RDS for Oracle または Aurora PostgreSQL 互換のデータベースインスタンスを作成します。 | AWS 全般、DBA | 
| セキュリティグループを設定します。 | インバウンドとアウトバウンドのセキュリティグループを設定します。 | AWS 全般 | 
| データベースを作成します。 | 必要なユーザーとスキーマを使用して、Oracle データベースを作成します。 | AWS 全般、DBA | 
| オブジェクトを作成します。 | オブジェクトを作成し、スキーマにデータを挿入します。 | DBA | 

### Amazon RDS for PostgreSQL ターゲットデータベースを設定
<a name="configure-the-amazon-rds-for-postgresql-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PostgreSQL データベース インスタンスを作成します。 | Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL データベースインスタンスを、Amazon RDS コンソールから作成します。 | AWS 全般、DBA | 
| セキュリティグループを設定します。 | インバウンドとアウトバウンドのセキュリティグループを設定します。 | AWS 全般 | 
| データベースを作成します。 | 必要なユーザーとスキーマを使用して PostgreSQL データベースを作成します。 | AWS 全般、DBA | 
| エクステンションを確認します。 | `aws_oracle_ext` と `orafce` がPostgreSQL データベースに正しくインストールされ、設定されていることを確保します。 | DBA | 
| PostgreSQL データベースが使用可能であることを確認します。 | PostgreSQL データベースが稼働していることを確認します。 | DBA | 

### AWS SCT とエクステンションを使用して Oracle スキーマを PostgreSQL に移行します
<a name="migrate-the-oracle-schema-into-postgresql-using-aws-sct-and-the-extensions"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をインストールします。 | AWS SCTの最新バージョンをインストールします。 | DBA | 
| AWS SCT を設定します。 | Oracle (`ojdbc8.jar`) と PostgreSQL (`postgresql-42.2.5.jar`) の Java データベース接続 (JDBC) ドライバを使用して AWS SCT を設定します。 | DBA | 
| AWS SCT 拡張パックまたはテンプレートを有効にします。 | AWS SCT **プロジェクト設定**で、Oracle データベーススキーマの `aws_oracle_ext`、および `orafce` 拡張によるビルドイン関数の実装を有効にします。 | DBA | 
| スキーマを変換します。 | AWS SCT で、**スキーマの変換**を選択して、スキーマを Oracle から PostgreSQL に変換し、 .sql ファイルを生成します。 | DBA | 

### AWS SCT 拡張コードを psql コードに変換
<a name="convert-aws-sct-extension-code-to-psql-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| コードを手動で変換します。 | 添付ドキュメントに詳述されているように、拡張適用のコードの各行を `psql` デフォルトのビルトインコードに手動で変換します。例えば、`AWS_ORACLE_EXT.SYSDATE()` または `ORACLE.SYSDATE()` を `NOW()` に変更します。 | DBA | 
| コードを検証 | (オプション) PostgreSQL データベースでコードの各行を一時的に実行して検証します。 | DBA | 
| PostgreSQL データベースにオブジェクトを作成します。 | PostgreSQL データベースにオブジェクトを作成するには、AWS SCT によって生成され、前の 2 つのステップで変更されたv.sql ファイルを実行します。 | DBA | 

## 関連リソース
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-resources"></a>
+ [Database] (データベース)
  + [Amazon RDS 上の Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)
  + [Amazon RDS 上の PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)
  + [Amazon Aurora PostgreSQL の操作](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)
  + 「[PostgreSQL EXPLAIN 計画](https://www.postgresql.org/docs/current/sql-explain.html)」 
+ AWS SCT
  + [AWS スキーマ変換ツールの概要](https://aws.amazon.com/dms/schema-conversion-tool/)
  + 「[AWS SCT ユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」
  + [AWS SCT ユーザーインターフェイスの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)
  + [ AWS SCTのソースとしての Oracle Database の使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)
+ AWS SCT の拡張
  + [AWS SCT 拡張パックの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_ExtensionPack.html)
  + 「[Oracleの機能 (en)](https://postgres.cz/wiki/Oracle_functionality_(en))」 
  + 「[PGX Oracle](https://pgxn.org/dist/orafce/)」 
  + 「[GitHub Oracle](https://github.com/orafce/orafce)」 

## 追加情報
<a name="migrate-oracle-native-functions-to-postgresql-using-extensions-additional"></a>

詳細については、添付文書のコードを手動で変換するための構文および例が付いた詳細なコマンドを参照してください。

## アタッチメント
<a name="attachments-158847bb-27ef-4915-a9ca-7d87073792c1"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/158847bb-27ef-4915-a9ca-7d87073792c1/attachments/attachment.zip)」

# AWS DMS を使用して Db2 データベースを Amazon EC2 から Aurora MySQL 互換のデータベースに移行する
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms"></a>

*Amazon Web Services、Pinesh Singal*

## 概要
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-summary"></a>

「[IBM Db2 for LUW データベース](https://www.ibm.com/docs/en/db2/11.5?topic=federation)」を「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」に移行したら、Amazon Web Services (AWS) のクラウドネイティブデータベースに移行してデータベースを再設計することを検討してください。このパターンは、「[Amazon](https://docs.aws.amazon.com/ec2/)」EC2 インスタンスで実行されている IBM「[Db2](https://www.ibm.com/docs/en/db2/11.5)」for LUW データベースを、AWS 上の「[Amazon Aurora MySQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html)」データベースに移行することを対象としています。 

このパターンは、トランザクション数が多い数テラバイトの Db2 ソースデータベースを、ダウンタイムを最小限に抑えるオンライン移行戦略を示しています。 

このパターンでは、「[AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」を使用して Db2 データベーススキーマを Aurora MySQL 互換スキーマに変換します。次に、パターンは「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」を使用して、Db2 データベースから Aurora MySQL 互換データベースにデータを移行します。AWS SCT によって変換されないコードには、手動での変換が必要になります。

## 前提条件と制限
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-prereqs"></a>

**前提条件**
+ 仮想プライベートクラウド(VPC) を使用するアクティブ的な AWS アカウント
+ AWS SCT
+ AWS DMS

**製品バージョン**
+ AWS SCT 最新バージョン
+ Linux バージョン 11.1.4.4 以降の Db2

## アーキテクチャ
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ EC2 インスタンスにマウントされた DB2/Linux x86-64 ビット 

**ターゲットテクノロジースタック**
+ Amazon Aurora MySQL 互換エディションデータベースインスタンス

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

次の図は、ソース Db2 とターゲット Aurora MySQL 互換データベース間のデータ移行アーキテクチャを示しています。AWS クラウドのアーキテクチャには、仮想プライベートクラウド (VPC) (仮想プライベートクラウド)、アベイラビリティーゾーン、Db2 インスタンスと AWS DMS レプリケーションインスタンスのパブリックサブネット、Aurora MySQL 互換データベースのプライベートサブネットが含まれます。

![\[ソース Db2 とターゲット Aurora MySQL 互換データベース間のデータ移行のアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5abfccc4-148c-4794-8d80-e3c122679125/images/f30664f8-2d6a-4448-8d5c-cff3988a52c7.png)


## ツール
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-tools"></a>

**AWS サービス**
+ 「[Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)」はクラウド用に構築されたフルマネージド型のリレーショナルデータベースエンジンで、MySQL および PostgreSQL と互換性があります。
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
+ 「[AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベース移行をサポートします。AWS SCT は、IBM Db2 for LUW バージョン 9.1、9.5、9.7、10.1、10.5、11.1、11.5 をソースとしてサポートしています。

## ベストプラクティス
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-best-practices"></a>

ベストプラクティスについては、「[AWS Database Migration Service のベストプラクティス](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)」を参照してください。

## エピック
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-epics"></a>

### ソース IBM Db2 データベースを設定します。
<a name="configure-the-source-ibm-db2-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 に IBM Db2 データベースを作成します。 | EC2 インスタンスに IBM Db2 データベースを作成するには、AWS Marketplace Amazon マシンイメージ (AMI) を使用するか、EC2 インスタンスに Db2 ソフトウェアをインストールします。IBM Db2 用の AMI (たとえば、「[IBM Db2 v11.5.7 RHEL 7.9](https://aws.amazon.com/marketplace/pp/prodview-aclrjj4hq2ols?sr=0-1&ref_=beagle&applicationId=AWS-EC2-Console)」) を選択して EC2 インスタンスを起動します。これはオンプレミスデータベースに似ています。 | DBA、AWS 全般 | 
| セキュリティグループを設定する | SSH (セキュアシェル) と TCP の VPC セキュリティグループのインバウンドルールを、それぞれポート 22 と 50000 で設定します。 | AWS 全般 | 
| データベースインスタンスの作成 | 新しいインスタンス (ユーザー) とデータベース (スキーマ) を作成するか、デフォルトの `db2inst1` インスタンスとサンプルデータベースを使用してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | DBA | 
| Db2 DB インスタンスが利用可能であることを確認します。 | Db2 データベースインスタンスが稼働中であることを確認するには、`Db2pd -` コマンドを使用します。 | DBA | 

### ターゲットの Aurora MySQL-Compatible Database を設定する
<a name="configure-the-target-aurora-mysql-compatible-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Aurora MySQL-Compatible Database を作成します。 | AWS RDS サービスから MySQL 対応 Amazon Aurora Database の作成[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | DBA、AWS 全般 | 
| セキュリティグループを設定する | SSH 接続と TCP 接続の VPC セキュリティグループのインバウンドルールを設定します。 | AWS 全般 | 
| Aurora データベースが使用可能であることを確認します。 | Aurora MySQL 互換データベースが稼働していることを確認するには、以下を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | DBA | 

### AWS SCT の設定と実行
<a name="configure-and-run-aws-sct"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をインストールします。 | 「[AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html)」の最新バージョン (現在の最新バージョン 1.0.628) をダウンロードしてインストールします。 | AWS 全般 | 
| AWS SCT を設定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS 全般 | 
| AWS SCT プロジェクトを作成します。 | ソース DB エンジンとして Db2 for LUW を使用し、ターゲット DB エンジンとして Aurora MySQL 互換を使用する AWS SCT プロジェクトとレポートを作成します。Db2 for LUW データベースへの接続に必要な権限を確認するには、「[Db2 LUW を AWS SCT のソースとして使用する](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)」を参照してください。 | AWS 全般 | 
| オブジェクトを検証します。 | **[スキーマのダウンロード]** を選択し、オブジェクトを検証します。ターゲットデータベース上の不正なオブジェクトをすべて更新します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | DBA、AWS 全般 | 

### AWS DMS の設定と実行
<a name="configure-and-run-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションインスタンスを作成します。 | AWS マネジメントコンソールにサインインし、AWS DMS サービスに移動し、ソースデータベースとターゲットデータベースに設定した VPC セキュリティグループの有効な設定を使用してレプリケーションインスタンスを作成します。 | AWS 全般 | 
| エンドポイントを作成します。 | Db2 データベースのソースエンドポイントを作成し、Aurora MySQL 互換データベースのターゲットエンドポイントを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS 全般 | 
| 移行タスクの作成 | 全負荷と CDC またはデータ検証用の 1 つの移行タスクまたは複数の移行タスクを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS 全般 | 
| 本番稼働を計画する。 | アプリケーション所有者などの利害関係者とダウンタイムを確認し、本番システムで AWS DMS を実行してください。 | 移行リード | 
| 移行タスクを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | AWS 全般 | 
| データを検証します。 | 移行タスクの結果と、移行元の Db2 データベースと移行先の MySQL データベースのデータを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | DBA | 
| 移行タスクを停止します。 | データ検証が正常に完了したら、検証移行タスクを停止します。 | AWS 全般 | 

## トラブルシューティング
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| AWS SCT のソースとターゲットのテスト接続が失敗しています。 | 受信トラフィックを受け入れるように JDBC ドライバーバージョンと VPC セキュリティグループのインバウンドルールを設定します。 | 
| Db2 ソースエンドポイントのテスト実行は失敗します。 | 追加接続設定の `CurrentLSN=<scan>;` を行います。 | 
| AWSDMS タスクが Db2 ソースに接続できず、次のエラーが返されます。`database is recoverable if either or both of the database configuration parameters LOGARCHMETH1 and LOGARCHMETH2 are set to ON` | エラーを回避するには、次のコマンドを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.html) | 

## 関連リソース
<a name="migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms-resources"></a>

**Amazon EC2**
+ [Amazon EC2](https://aws.amazon.com/ec2/)
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com/ec2/)」

**データベース**
+ 「[IBM Db2 データベース](https://www.ibm.com/products/db2-database)」
+ [Amazon Aurora](https://aws.amazon.com/rds/aurora/)
+ 「[Amazon Aurora MySQL の操作](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html)」

AWS SCT
+ 「[AWS DMS スキーマ変換](https://aws.amazon.com/dms/schema-conversion-tool/)」
+ 「[AWS スキーマ変換ツールユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」
+ 「[AWS SCT ユーザーインターフェースの使用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html)」
+ 「[IBM Db2 LUW を AWS SCT のソースとして使用する](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)」

AWS DMS
+ AWS Database Migration Service
+ 「[AWS Database Migration Service ユーザーガイド](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」
+ 「[データ移行のソース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)」
+ 「[データ移行のターゲット](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html)」
+ 「[AWS Database Migration Service と AWS Schema Conversion Tool がソースとして IBM Db2 LUW をサポートするようになりました](https://aws.amazon.com/blogs/database/aws-database-migration-service-and-aws-schema-conversion-tool-now-support-ibm-db2-as-a-source/)」(ブログ投稿)
+ 「[リレーショナルデータベースを実行するアプリケーションの AWS への移行](https://d1.awsstatic.com/whitepapers/Migration/migrating-applications-to-aws.pdf)」

# AWS DMS を使用して Microsoft SQL Server データベースを Amazon EC2 から Amazon DocumentDB に移行します
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms"></a>

*Amazon Web Services、Umamaheswara Nooka*

## 概要
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-summary"></a>

このパターンでは、AWS Database Migration Service (AWS DMS) を使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでホストされている Microsoft SQL Server データベースを Amazon DocumentDB (MongoDB 互換の) データベースに移行する方法を説明します。

AWS DMS レプリケーションタスクは SQL Server データベースのテーブル構造を読み取り、Amazon DocumentDB に対応するコレクションを作成し、全負荷移行を実行します。

このパターンを使用して、SQL Server DB インスタンス用のオンプレミスの SQL Server または Amazon Relational Database Service (Amazon RDS) を Amazon DocumentDB に移行することもできます。詳細については、AWS 規範ガイダンスウェブサイトにある「[Microsoft SQL Server データベースの AWS クラウドへの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/welcome.html)」ガイドを参照してください。

## 前提条件と制限事項
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ EC2 インスタンス上の既存の SQL Server データベース。
+ SQL Server データベースの AWS DMS に割り当てられたデータベース (**db\$1owner**) ロールを修正しました。詳細については、SQL Server のドキュメントの「[データベースレベルのロール](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15)」を参照してください。 
+ `mongodump`、`mongorestore`、`mongoexport`、および `mongoimport` の[各ユーティリティを使用して、Amazon DocumentDB クラスターの内外にデータを移動できます](https://docs.aws.amazon.com/documentdb/latest/developerguide/backup_restore-dump_restore_import_export_data.html)。
+ 「[Microsoft SQL Server マネージメントスタジオ](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)」のインストールと設定

**制限事項**
+ Amazon DocumentDB のクラスターサイズ制限は 64 TB です。詳細については、Amazon DocumentDB ドキュメントの「[クラスター制限](https://docs.aws.amazon.com/documentdb/latest/developerguide/limits.html#limits-cluster)」を参照してください。 
+ AWS DMS で複数のソーステーブルを 1 つの Amazon DocumentDB, コレクションにマージすることはできません。
+ AWS DMS がプライマリキーのないソーステーブルからの変更を処理する場合、ソーステーブルのラージオブジェクト (LOB) 列は無視されます。

## アーキテクチャ
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ Amazon EC2

**ターゲットテクノロジースタック**
+ Amazon DocumentDB

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

![\[AWS クラウド architecture showing VPC with private DB subnet and components for SQL Server and DocumentDB.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f186220b-5a94-48b2-840d-f04aedf51651/images/00962b85-8b71-49df-b84a-3adcbc9ad3a3.png)


## ツール
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) — AWS Database Migration Service (AWS DMS) は、データベースを簡単かつ安全に移行するのに役立ちます。
+ [Amazon DocumentDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html) – Amazon DocumentDB は、MongoDB と互換性のある、高速で信頼性が高く、フルマネージドのドキュメントデータベースサービスです。
+ 「[Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)」— Amazon Elastic Compute Cloud (Amazon EC2) は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。
+ [Microsoft SQL サーバー](https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15) — SQL サーバーはリレーショナルデータベース管理システムです。
+ 「[Microsoft SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms?view=sql-server-ver15)」 は、SQL Server コンポーネントへのアクセス、設定、管理など、SQL Server を管理するためのツールです。

## エピック
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-epics"></a>

### VPC の作成と設定
<a name="create-and-configure-a-vpc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC を作成します。 | AWS マネジメントコンソールにサインインし、「Amazon VPC コンソール」 を開きます。IPv4 CIDR ブロック範囲を使用して仮想プライベートクラウド (VPC) を作成します。 | システム管理者 | 
| セキュリティグループとネットワーク ACL を作成します。 | Amazon VPC コンソールで、要件に応じて VPC のセキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) を作成します。これらの設定のデフォルト設定を使用することもできます。このストーリーやその他のストーリーについて詳しくは、「関連リソース」セクションを参照してください。 | システム管理者 | 

### Amazon DocumentDB クラスターの作成と設定
<a name="create-and-configure-the-amazon-documentdb-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  Amazon DocumentDB クラスターを作成します。 | Amazon DocumentDB コンソールを開き、[クラスター] を選択します。[作成] を選択し、1 つのインスタンスを含む Amazon DocumentDB クラスターを作成します。重要：必ず VPC のセキュリティグループを使用してこのクラスターを設定してください。 | システム管理者  | 
|  mongo シェルをインストールします。 | mongo シェルは、Amazon DocumentDB クラスターを接続してクエリするために使用するコマンドラインユーティリティです。インストールするには、「/etc/yum.repos.d/mongodb-org-3.6.repo」コマンドを実行してリポジトリファイルを作成します。「sudo yum install -y mongodb-org-shell」コマンドを実行して mongo シェルをインストールします。転送中のデータを暗号化するには、Amazon DocumentDB のパブリックキーをダウンロードしてから Amazon DocumentDB インスタンスに接続します。このステップの詳細については、「関連リソース」セクションを参照してください。 | システム管理者  | 
| Amazon DocumentDB クラスターでデータベースを作成します。 | データベースの名前を指定して「use」コマンドを実行し、Amazon DocumentDB クラスターにデータベースを作成します。 | システム管理者  | 

### AWS DMS レプリケーションインスタンスを作成して設定します。
<a name="create-and-configure-the-aws-dms-replication-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS レプリケーションインスタンスを作成します。 | AWS DMS コンソールを開き、[レプリケーションインスタンスを作成] を選択します。レプリケーションタスクの名前と説明 (オプション) を入力します。インスタンスクラス、エンジンバージョン、ストレージ、VPC、マルチ AZ を選択し、パブリックにアクセスできるようにします。[アドバンスト] タブを選択して、ネットワークおよび暗号化設定の値を設定します。メンテナンス設定を指定し、[レプリケーションインスタンスを作成] を選択します。 | システム管理者  | 
| SQL Server データベースの設定  | Microsoft SQL Server にログインし、ソースエンドポイントと AWS DMS レプリケーションインスタンス間の通信に関するインバウンドルールを追加します。レプリケーションインスタンスの IP アドレスをソースとして使用します。重要：レプリケーションインスタンスとターゲットエンドポイントは同じ VPC 上にある必要があります。ソースインスタンスとレプリケーションインスタンスで VPC が異なる場合は、セキュリティグループ内の代替ソースを使用してください。 | システム管理者  | 

### AWS DMS でソースエンドポイントとターゲットエンドポイントを作成してテストする
<a name="create-and-test-the-source-and-target-endpoints-in-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースとターゲットデータベースを作成します。 | AWS DMS コンソールを開き、[ソースおよびターゲットデータベースエンドポイントの接続] を選択します。ソースデータベースとターゲットデータベースの接続情報を指定します。必要に応じて [アドバンスト] タブを選択し、[その他の接続属性] の値を設定します。証明書バンドルをダウンロードしてエンドポイント設定で使用します。 | システム管理者  | 
| エンドポイント接続をテストします。 | 接続をテストするには、[テストの実行] を選択します。セキュリティグループの設定と、ソースとターゲットの両方のデータベースインスタンスから AWS DMS レプリケーションインスタンスへの接続を確認して、エラーメッセージのトラブルシューティングを行います。 | システム管理者  | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS 移行タスクを作成します。 | AWS DMS コンソールで、[タスク]、[タスクの作成] の順に選択します。ソースとターゲットのエンドポイント名、レプリケーションインスタンス名などのタスクオプションを指定します。[移行タイプ] で [既存データを移行] と [データ変更のみをレプリケートする] を選択します。[タスクを開始] を選択します。 | システム管理者  | 
| AWS DMS 移行タスクを実行します。 | [タスク設定] で、[何もしない]、[テーブルをターゲットにドロップ]、[切り捨て]、[LOB 列をレプリケーションに含める] など、テーブル準備モードの設定を指定します。AWS DMS が受け付ける最大 LOB サイズを設定し、[ログ記録を有効にする] を選択します。[詳細設定] はデフォルト値のままにして、[タスクを作成] を選択します。 | システム管理者  | 
| 移行を監視します。 | AWS DMS コンソールで [タスク] を選択し、移行タスクを選択します。[タスクのモニタリング] を選択してタスクをモニタリングします。全ロード移行が完了しキャッシュされた変更が適用されると、タスクは停止します。 | システム管理者  | 

### 移行のテストと検証
<a name="test-and-verify-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  モンゴシェルを使用して Amazon DocumentDB クラスターConnect。 | Amazon DocumentDB コンソールを開き、[クラスター] で、クラスターを選択します。[接続性とセキュリティ] タブで、[mongo シェルでこのクラスターに接続する] を選択します。 | システム管理者  | 
| 移行の結果を確認します。 | データベースの名前を指定して「use」コマンドを実行し、「show collections」コマンドを実行します。使用しているデータベースの名前を指定して「db. .count()」コマンドを実行します。結果がソースデータベースと一致すれば、移行は成功です。 | システム管理者  | 

## 関連リソース
<a name="migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms-resources"></a>

**VPC の作成と設定**
+ [VPC 用のセキュリティグループを作成するには](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups)
+ [ネットワーク ACL の作成](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)

** **

**Amazon DocumentDB クラスターの作成と設定**
+ [Amazon DocumentDB クラスターの作成](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-cluster)
+ [Amazon DocumentDB の mongo シェルをインストールします](https://docs.aws.amazon.com/documentdb/latest/developerguide/get-started-guide.html#cloud9-mongoshell)
+ ステップ 5： Amazon DocumentDB クラスターに接続する

** **

**AWS DMS レプリケーションインスタンスを作成して設定**
+ [パブリックおよびプライベートレプリケーション インスタンス](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.PublicPrivate)

** **

**AWS DMS でソースエンドポイントとターゲットエンドポイントを作成してテストする**
+ [Amazon DocumentDB を AWS DMS のターゲットとして使用します](https://docs.aws.amazon.com/dms/latest/userguide/target.docdb.html)
+ [Microsoft SQL Server データベースを &DMS; のソースとして使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)
+ [AWS DMS エンドポイントを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html)

** **

**データを移行**
+ [Amazon DocumentDB への移行](https://docs.aws.amazon.com/documentdb/latest/developerguide/docdb-migration.html)

** **

**その他のリソース**
+ [SQL Server を AWS DMS のソースとして使用する場合の制限](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html#CHAP_Source.SQLServer.Limitations) 
+ [Amazon DocumentDB を使用してアプリケーションを大規模に構築および管理する方法](https://aws.amazon.com/blogs/database/how-to-use-amazon-documentdb-with-mongodb-compatibility-to-build-and-manage-applications-at-scale/)

# オンプレミスの ThoughtSpot Falcon データベースを Amazon Redshift に移行する
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift"></a>

*Amazon Web Services、Battulga Purevragchaa、Antony Prasad Thevaraj*

## 概要
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-summary"></a>

オンプレミスのデータウェアハウスは、特に大規模なデータセットの場合、管理に多大な時間とリソースを必要とします。これらのウェアハウスの構築、維持、拡張にかかる財務コストも非常に高くなります。コストを管理し、抽出、変換、ロード (ETL) の複雑さを低く抑え、データの増加に応じてパフォーマンスを向上させるには、どのデータを読み込み、どのデータをアーカイブするかを常に選択する必要があります。

オンプレミスの [ThoughtSpot Falcon データベース](https://docs.thoughtspot.com/software/latest/data-caching)をAmazon Web Services (AWS) クラウドに移行することで、クラウドベースのデータレイクとデータウェアハウスにアクセスできるようになり、ビジネスの俊敏性、セキュリティ、アプリケーションの信頼性が向上し、インフラストラクチャ全体のコストが削減されます。Amazon Redshift は、データウェアハウスのコストと運用上のオーバーヘッドを大幅に削減するのに役立ちます。Amazon Redshift Spectrum を使用して、データをロードせずに大量のデータをネイティブ形式で分析することもできます。

このパターンでは、ThoughtSpot Falcon データベースをオンプレミスのデータセンターから AWS クラウド上の Amazon Redshift データベースに移行する手順とプロセスを説明しています。

## 前提条件と制限
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスのデータセンターでホストされている ThoughtSpot Falcon データベース

**製品バージョン**
+ ThoughtSpot バージョン 7.0.1 

## アーキテクチャ
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-architecture"></a>

![\[ThoughtSpot Falcon データベースをオンプレミスのデータセンターから Amazon Redshift に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/b0ca29f4-b269-4b57-b386-738693a6b334/images/2b483990-1f30-439c-ba13-dc0cb0650360.png)


 

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

1. データはオンプレミスのリレーショナルデータベースでホストされます。

1. AWS Schema Conversion Tool (AWS SCT) は、Amazon Redshift と互換性のあるデータ定義言語 (DDL) を変換します。

1. テーブルを作成したら、AWS Database Migration Service (AWS DMS) を使用してデータを移行できます。

1. データは Amazon Redshift に読み込まれます。

1. Redshift Spectrum を使用しているか、既に Amazon S3 でデータをホストしている場合、データは Amazon Simple Storage Service (Amazon S3) に保存されます。

## ツール
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) – AWS データ移行サービス (AWS DMS) は、データベースを迅速かつ安全に AWS に移行するのに役立ちます。
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html) – Amazon Redshift は、高速でフルマネージドのペタバイト規模のデータウェアハウスサービスで、既存のビジネスインテリジェンスツールを使用してすべてのデータを簡単かつコスト効率よく効率的に分析できます。
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) – AWS Schema Conversion Tool (AWS SCT) は、既存のデータベーススキーマをあるデータベースエンジンから別のデータベースエンジンに変換します。

## エピック
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 適切な Amazon Redshift 設定を特定する。 | 要件とデータ量に基づいて、適切な Amazon Redshift クラスター設定を特定します。 詳細については、Amazon Redshift ドキュメントの「[Amazon Redshift クラスター](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)」を参照してください。 | DBA | 
| Amazon Redshift を調べて、要件を満たしているかどうかを評価する。 | [Amazon Redshift に関するよくある質問](https://aws.amazon.com/redshift/faqs/)を参照して、Amazon Redshift が要件を満たしているかどうかを理解し、評価します。 | DBA | 

### ターゲットの Amazon Redshift クラスターを準備する
<a name="prepare-the-target-amazon-redshift-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Redshift クラスターを作成します。 | AWS マネジメントコンソールにサインインし、Amazon Redshift コンソールを開いて、仮想プライベートクラウド (VPC) で Amazon Redshift クラスターを作成します。 詳細については、Amazon Redshift のドキュメントの「[VPC でクラスターを作成する](https://docs.aws.amazon.com/redshift/latest/mgmt/getting-started-cluster-in-vpc.html)」を参照してください。 | DBA | 
| Amazon Redshift データベース設計の PoC を実施する。 | Amazon Redshift のベストプラクティスに従い、データベース設計の概念実証 (PoC) を実施します。 詳細については、Amazon Redshift のドキュメントの [Amazon Redshift の概念実証の実施](https://docs.aws.amazon.com/redshift/latest/dg/proof-of-concept-playbook.html)を参照してください。 | DBA | 
| データベースユーザーを作成する。 | Amazon Redshift データベースにユーザーを作成し、スキーマとテーブルにアクセスするための適切なロールを付与します。 詳細については、Amazon Redshift のドキュメントの「[GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html)」を参照してください。 | DBA | 
| ターゲットデータベースに構成設定を適用する。 | 要件に従って、Amazon Redshift データベースに構成設定を適用します。 データベース、セッション、およびサーバーレベルのパラメータを有効にする方法の詳細については、Amazon Redshift ドキュメントの「[設定リファレンス](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_ConfigurationRef.html)」を参照してください。 | DBA | 

### Amazon Redshift クラスターでオブジェクトを作成する
<a name="create-objects-in-the-amazon-redshift-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Redshift で DDL を使用してテーブルを手動で作成する。 | (オプション) AWS SCT を使用する場合、テーブルは自動的に作成されます。ただし、DDL の複製時に障害が発生した場合は、テーブルを手動で作成する必要があります。 | DBA | 
| Redshift Spectrum の外部テーブルを作成する。 | Amazon Redshift Spectrum の外部スキーマを使用して外部テーブルを作成します。外部テーブルを作成するには、外部スキーマの所有者または[データベーススーパーユーザー](https://docs.aws.amazon.com/redshift/latest/dg/r_superusers.html)である必要があります。 詳細については、Amazon Redshift のドキュメントの「[Amazon Redshift Spectrum の外部テーブルの作成](https://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-tables.html)」を参照してください。 | DBA | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS を使用してデータを移行する。 | Amazon Redshift データベースにテーブルの DDL を作成したら、AWS DMS を使用してデータを Amazon Redshift に移行します。詳細な手順については、AWS DMS のドキュメントの「[Using an Amazon Redshift database as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html)」を参照してください。 | DBA | 
| COPY コマンドを使用してデータをロードする。 | Amazon S3 から Amazon Redshift `COPY` コマンドを使用して Amazon Redshift にデータをロードします。詳細については、Amazon Redshift ドキュメントの「[COPY コマンドを使用し、Amazon S3 からロードする](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-tables-from-s3.html)」を参照してください。 | DBA | 

### Amazon Redshift クラスターを確認する
<a name="validate-the-amazon-redshift-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースレコードとターゲットレコードを検証する。 | ソースシステムからロードされたソースレコードとターゲットレコードのテーブル数を検証します。 | DBA | 
| Amazon Redshift のパフォーマンスチューニングのベストプラクティスを実装します。 | Amazon Redshift テーブル設計のベストプラクティスを実装する。 詳細については、ブログ記事「[Top 10 performance tuning techniques for Amazon Redshift](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-techniques-for-amazon-redshift/)」を参照してください。 | DBA | 
| クエリのパフォーマンスを最適化する。 | Amazon Redshift は、SQL ベースのクエリを使用してシステム内のデータとオブジェクトを操作します。データ操作言語 (DML) は、データの表示、追加、変更、削除に使用できる SQL のサブセットです。DDL は、テーブルやビューなどのデータベースオブジェクトを追加、変更、削除するために使用する SQL のサブセットです。詳細については、Amazon Redshift のドキュメントの「[クエリパフォーマンスのチューニング](https://docs.aws.amazon.com/redshift/latest/dg/c-optimizing-query-performance.html)」を参照してください。 | DBA | 
| WLM を実装する。 | ワークロード管理 (WLM) を使用して複数のクエリキューを定義し、ランタイムにクエリを適切なキューに配信することができます。詳細については、Amazon Redshift ドキュメントの「[ワークロード管理の実装](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html)」を参照してください。 | DBA | 
| 同時実行スケーリングを使用する。 | 同時実行スケーリング機能を使用すると、実質的に無制限の同時ユーザーと同時クエリをサポートし、一貫して高速なクエリパフォーマンスを実現できます。詳細については、Amazon Redshift のドキュメントの「[同時実行スケーリングを使用する](https://docs.aws.amazon.com/redshift/latest/dg/concurrency-scaling.html)」を参照してください。 | DBA | 
| テーブル設計に Amazon Redshift のベストプラクティスを使用する。 | データベースをプランニングする際、テーブル設計に関して、全体的なクエリパフォーマンスに多大な影響を与える重要な決定があります。最適なテーブル設計のオプションを選択する方法については、Amazon Redshift のドキュメントの「[Amazon Redshift テーブル設計のベストプラクティス](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html)」を参照してください。 | DBA | 
| Amazon Redshift でマテリアライズドビューを作成する。 | マテリアライズドビューには、1 つ以上のベーステーブルで実行された SQL クエリに基づいて事前計算された結果が含まれています。`SELECT` ステートメントを使用すれば、データベースで他のテーブルやビューをクエリするのと同じ方法でマテリアライズドビューをクエリすることができます。詳細については、Amazon Redshift のドキュメントの「[Amazon Redshift でのマテリアライズドビューの作成](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-overview.html)」を参照してください。 | DBA | 
| テーブル間の結合を定義する。 | ThoughtSpot で複数のテーブルを同時に検索するには、2 つのテーブル間で一致するデータを含む列を指定して、テーブル間の結合を定義する必要があります。これらの列は、結合の `primary key` および `foreign key` を表します。Amazon Redshift または ThoughtSpot の `ALTER TABLE` コマンドを使用してこれらを定義できます。詳細については、Amazon Redshift ドキュメントの「[ALTER TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_TABLE.html)」を参照してください。 | DBA | 

### Amazon Redshift への ThoughtSpot 接続のセットアップ
<a name="set-up-thoughtspot-connection-to-amazon-redshift"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  Amazon Redshift 接続を追加する。 | Amazon Redshift 接続をオンプレミスの ThoughtSpot Falcon データベースに追加します。詳細については、ThoughtSpot ドキュメントの「[Add an Amazon Redshift connection](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-add-connection.html)」を参照してください。 | DBA | 
| Amazon Redshift 接続を編集する。 | Amazon Redshift 接続を編集してテーブルと列を追加できます。詳細については、ThoughtSpot ドキュメントの「[Edit an Amazon Redshift connection](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-edit-connection.html)」を参照してください。 | DBA | 
| Amazon Redshift 接続を再マッピングする。 | Amazon Redshift 接続を追加したときに作成されたソースマッピングの .yaml ファイルを編集して、接続パラメータを変更します。 例えば、既存のテーブルまたは列を、既存のデータベース接続の別のテーブルまたは列に再マップできます。ThoughtSpot では、接続内のテーブルまたは列を再マップする前後に依存関係を確認して、必要に応じて表示されることを確認することを推奨しています。詳細については、ThoughtSpot ドキュメントの「[Remap an Amazon Redshift connection](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-remap-connection.html)」を参照してください。 | DBA | 
| Amazon Redshift 接続からのテーブルを削除する。 | (オプション) Amazon Redshift 接続内のテーブルを削除しようとすると、ThoughtSpot は依存関係をチェックし、依存オブジェクトのリストを表示します。リストされたオブジェクトを選択して削除するか、依存関係を削除できます。その後、テーブルを削除できます。詳細については、ThoughtSpot のドキュメントの「[Delete a table from an Amazon Redshift connection](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-delete-table.html)」を参照してください。 | DBA | 
|  Amazon Redshift 接続から依存オブジェクトを含むテーブルを削除する。 | (オプション) 依存オブジェクトを含むテーブルを削除しようとすると、操作はブロックされます。`Cannot delete` ウィンドウが開き、依存オブジェクトへのリンクのリストが表示されます。依存関係がすべて削除されると、テーブルを削除できます。詳細については、ThoughtSpot ドキュメントの「[Delete a table with dependent objects from an Amazon Redshift connection](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-delete-table-dependencies.html)」を参照してください。 | DBA | 
| Amazon Redshift 接続を削除する。 | (オプション) 接続は複数のデータソースまたはビジュアライゼーションで使用できるので、Amazon Redshift 接続を削除する前に、その接続を使用するすべてのソースとタスクを削除する必要があります。詳細については、ThoughtSpot ドキュメントの「[Delete an Amazon Redshift connection](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-delete-connection.html)」を参照してください。 | DBA | 
|  Amazon Redshift の接続に関するリファレンスを確認する。 | ThoughtSpot ドキュメントの[接続リファレンス](https://cloud-docs.thoughtspot.com/admin/ts-cloud/ts-cloud-embrace-redshift-connection-reference.html)を使用して、Amazon Redshift 接続に必要な情報を必ず提供してください。 | DBA | 

## 追加情報
<a name="migrate-an-on-premises-thoughtspot-falcon-database-to-amazon-redshift-additional"></a>
+ [ThoughtSpot と Amazon Redshift によるあらゆる規模の AI 主導型アナリティクス](https://aws.amazon.com/blogs/apn/ai-driven-analytics-at-any-scale-with-thoughtspot-and-amazon-redshift/)
+ [Amazon Redshift の価格設定](https://aws.amazon.com/redshift/pricing/)
+ [Getting started with AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_GettingStarted.html) 
+ [Amazon Redshift の使用開始](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [Using data extraction agents](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/agents.html)
+ [Chick-fil-A improves speed to insight with ThoughtSpot and AWS](https://www.thoughtspot.com/sites/default/files/pdf/ThoughtSpot-Chick-fil-A-AWS-Case-Study.pdf) 

# Oracle GoldenGate を使用して Oracle Database から Amazon RDS for PostgreSQL に移行
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate"></a>

*Amazon Web Services、Dhairya Jindani、Sinhusha Paturu、Rajeshkumar Sabankar*

## 概要
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-summary"></a>

このパターンでは、Oracle Cloud Infrastructure (OCI) GoldenGate を使って、 Oracle データベースを PostgreSQL の Amazon Relational Database Service (Amazon RDS) に移行する方法を示します。

Oracle GoldenGate を使用して、最小限のダウンタイムで、ソースデータベースと 1 つ以上のデスティネーションデータベース間でデータを複製できます。

**注記**  
ソース Oracle データベースは、オンプレミスでも Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでもかまいません。オンプレミスレプリケーションツールを使用する場合も、同様の手順を使用できます。

## 前提条件と制限事項
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Oracle GoldenGate ライセンス
+ PostgreSQL データベースに接続するための Java データベース接続 (JDBC) ドライバー
+ ターゲットの Amazon RDS for PostgreSQL データベースで、「[AWS Schema Conversion Tool (AWS SCT)](https://aws.amazon.com/dms/schema-conversion-tool/)」 を使用して作成されたスキーマとテーブル

**制限事項**
+ Oracle GoldenGate では、既存のテーブルデータ（初期ロード）と継続的な変更（変更データキャプチャ）のみのレプリケートが可能

**製品バージョン**
+ Oracle Database Enterprise Edition 10g またはそれ以降のバージョン 
+ Oracleまたはそれ以降のバージョン用のOracle GoldenGate 12.2.0.1.1
+ PostgreSQL またはより新しいバージョン用の Oracle GoldenGate 12.2.0.1.1

## アーキテクチャ
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-architecture"></a>

次の図表は、Oracle GoldenGate を使用して Oracle データベースを Amazon RDS for PostgreSQL に移行するためのワークフローの例を示しています：

![\[オンプレミスの Oracle データベースを Amazon RDS for PostgreSQL へ移行するワークフローです。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/384f0eaf-8582-474a-a7f4-ec1048a4feb3/images/de541887-0d5f-4a9a-b136-ce2599355cb8.png)


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

1. Oracle GoldenGate 「[抽出プロセス](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GUID-6419F3A9-71EC-4D14-9C41-3BAA1E3CA19C)」 はソースデータベースに対して実行され、データを抽出します。

1. Oracle GoldenGate 「[Replicat プロセス](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GUID-5EF0326C-9058-4C40-8925-98A223388C95)」は、抽出されたデータをターゲットの Amazon RDS for PostgreSQL データベースに送信します。

## ツール
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-tools"></a>
+ [「Oracle GoldenGate](https://www.oracle.com/integration/goldengate/#:~:text=OCI%20GoldenGate%20is%20a%20real,in%20the%20Oracle%20Cloud%20Infrastructure.)」は、Oracle Cloud Infrastructureにおけるデータレプリケーションおよびストリームデータ処理ソリューションの設計、実行、調整、監視を支援します。
+ [PostrgreSQLのAmazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) は、AWS クラウドの リレーショナルデータベース (DB) をセットアップ、運用、スケーリングを行います。

## エピック
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-epics"></a>

### Oracle GoldenGate をダウンロードしてインストール
<a name="download-and-install-oracle-goldengate"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle GoldenGate をダウンロードします。 | Oracle GoldenGate の次のバージョンをダウンロードします：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.html)ソフトウェアをダウンロードするには、Oracleのウェブサイトの「[Oracle GoldenGate ダウンロード](https://www.oracle.com/middleware/technologies/goldengate-downloads.html)」 を参照してください。 | DBA | 
| Oracle GoldenGate for Oracle を、ソースのOracle データベースサーバーにインストールします。 | 手順については、「[Oracle GoldenGate ドキュメント](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm)」を参照してください。 | DBA | 
| Amazon EC2 インスタンスに Oracle GoldenGate for PostgreSQL データベースをインストールします。 | 手順については、「[Oracle GoldenGate ドキュメント](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm)」を参照してください。 | DBA | 

### ソースおよびターゲットのデータベースで Oracle GoldenGate を設定
<a name="configure-oracle-goldengate-on-the-source-and-target-databases"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースに Oracle データベース用 Oracle GoldenGate を設定します。 | 手順については、「[Oracle GoldenGate ドキュメント](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm)」を参照してください。次のことを必ず設定してください：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.html) | DBA | 
| ターゲットデータベースに Oracle GoldenGate for PostgreSQL を設定します。 | 手順については、Oracle のウェブサイトの「[Part VI Using Oracle GoldenGate for PostgreSQL](https://docs.oracle.com/en/middleware/goldengate/core/19.1/gghdb/using-oracle-goldengate-postgresql.html)」 を参照してください。次のことを必ず設定してください：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.html) | DBA | 

### データキャプチャの設定
<a name="configure-the-data-capture"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースに Extract プロセスを設定します。 | ソース Oracle データベースで、データを抽出するための抽出ファイルを作成します。手順については、Oracle ドキュメンテーションの「[抽出の追加](https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/ggsci_commands006.htm#GWURF122)」 を参照してください。抽出ファイルには、抽出パラメータファイルとトレイルファイルディレクトリの生成物が含まれます。 | DBA | 
| データポンプを設定して、トレイルファイルをソースからターゲットデータベースに転送します。 | Oracle ウェブサイトの*データベースユーティリティ*で「[PARFILE](https://docs.oracle.com/database/121/SUTIL/GUID-7A045C82-5993-44EB-AFAD-B7D39C34BCCD.htm#SUTIL859)」 の手順に従って、EXTRACT パラメータファイルとトレイルファイルディレクトリを作成します。詳細については、Oracleのウェブサイトの「*Oracle GoldenGateを理解するフュージョンミドルウェア*」の「[トレイルとは?](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GUID-88674F53-1E07-4C00-9868-598F82D7113C)」 を参照してください。 | DBA | 
| Amazon EC2 インスタンスでレプリケーションを設定します。 | レプリケーションパラメータファイルとトレイルファイルディレクトリを作成します。レプリケーションパラメータファイルの作成についての詳細は、Oracle Databaseドキュメントのセクション 「[3.5 パラメータファイルの検証](https://docs.oracle.com/en/middleware/goldengate/core/21.3/admin/using-oracle-goldengate-parameter-files.html#GUID-1E32A9AD-25DB-4243-93CD-E643E7116215)」 を参照してください。証跡ファイルディレクトリの作成についての詳細は、Oracle クラウド ドキュメントの「[証跡の作成](https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/creating-trail.html)」 を参照してください。ターゲットの GLOBALS ファイルには、必ずチェックポイントテーブルエントリを追加してください。詳細については、Oracle ウェブサイトの「*フュージョンミドルウェア Oracle GoldenGateを理解する*」にある「[レプリケーションとは何か？](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/processes-and-terminology.htm#GGCON-GUID-5EF0326C-9058-4C40-8925-98A223388C95)」を参照してください。 | DBA | 

### データレプリケーションを設定
<a name="configure-the-data-replication"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースで、初期ロード用のデータを抽出するパラメータファイルを作成します。 | Oracle Cloud ドキュメントの「[GGSCI でのパラメータファイルの作成](https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/using-oracle-goldengate-parameter-files.html#GUID-5C49C522-8B28-4E4B-908D-66A33717CE6C)」の手順に従います。マネージャーがターゲットで実行されていることを確認してください。 | DBA | 
| ターゲットデータベースにパラメータファイルを作成し、初期ロードのデータをレプリケーションします。 | Oracle Cloud ドキュメントの「[GGSCI でのパラメータファイルの作成](https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/using-oracle-goldengate-parameter-files.html#GUID-5C49C522-8B28-4E4B-908D-66A33717CE6C)」の手順に従います。必ず、レプリケーションプロセスを追加して開始してください。 | DBA | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションプロセスを停止し、ソースデータベースとターゲットデータベースが同期していることを確認します。 | ソースデータベースとターゲットデータベースの行数を比較して、データ複製が成功したことを確認します。 | DBA | 
| データ定義言語 (DDL) サポートを設定します。 | DDL スクリプトを実行して、PostgreSQL でトリガー、シーケンス、シノニム、参照キーを作成します。標準的な SQL クライアントアプリケーションであれば、DB クラスターのデータベースへ接続可能です。例えば、「[pgAdmin](https://www.pgadmin.org/)」 を使用して DB インスタンスに接続できます。 | DBA | 

## 関連リソース
<a name="migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate-resources"></a>
+ 「[Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)」(*Amazon RDS ユーザーガイド*)
+ 「[Amazon EC2 ドキュメント](https://docs.aws.amazon.com/ec2/)」
+ 「[Oracle GoldenGate に適用される処理メソッドとデータベース](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD112)」(Oracle ドキュメント)

# AWS DMS を使用して Oracle パーティションテーブルを PostgreSQL に移行
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms"></a>

*Amazon Web Services、Saurav Mishra および Eduardo Valentim*

## 概要
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-summary"></a>

このパターンは、ネイティブパーティショニングをサポートしていない AWS Database Migration Service (AWS DMS) を使用して Oracle から PostgreSQL へのパーティションテーブルのロードを高速化する方法を示しています。ターゲット PostgreSQL データベースは Amazon Elastic Compute Cloud (Amazon EC2) にインストールすることも、Amazon Relational Database Service (Amazon RDS) for PostgreSQL または Amazon Aurora PostgreSQL-Compatible Edition DB インスタンスにすることもできます。 

分割テーブルをアップロードするには、次の手順が含まれます。

1. Oracle パーティションテーブルと同様の親テーブルを作成しますが、パーティションは含めないでください。

1. ステップ 1 で作成した親テーブルを継承する子テーブルを作成します。

1. 親テーブルへの挿入を処理するプロシージャ関数とトリガーを作成します。

ただし、トリガーは挿入のたびに起動されるため、AWS DMS を使用した初期ロードは非常に遅くなる可能性があります。

Oracle から PostgreSQL 9.0 への初期ロードを高速化するために、このパターンはパーティションごとに個別の AWS DMS タスクを作成し、対応する子テーブルをロードします。次に、カットオーバー中にトリガーを作成します。 

PostgreSQL バージョン 10 は、ネイティブパーティションをサポートしています。ただし、場合によっては継承されたパーティショニングを使用することもできます。詳細については、「追加情報」セクションを参照してください。

## 前提条件と制限
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ 分割テーブルを含むソース Oracle データベース
+ AWS 上の PostgreSQL データベース

製品バージョン
+ PostgreSQL 9.6

## アーキテクチャ
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ Oracle のパーティションテーブル。

**ターゲットテクノロジースタック**
+ PostgreSQL のパーティションテーブル (Amazon EC2、Amazon RDS for PostgreSQL、または Aurora PostgreSQL 上)

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

![\[Oracle のパーティション化されたテーブルデータは、パーティションごとに AWS DMS タスクに移動され、その後 PostgreSQL に移動します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7fa2898e-3308-436a-aec8-ab6f680d7bac/images/1b9742ea-a13d-434c-83a7-56686cf76ea0.png)


## ツール
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-tools"></a>
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。

## エピック
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-epics"></a>

### AWS DMS のセットアップ
<a name="set-up-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PostgreSQL でテーブルを作成します。 | パーティションに必要なチェック条件を使用して、PostgreSQLに親テーブルと対応する子テーブルを作成します。 | DBA | 
| パーティションごとに AWS DMS タスクを作成します。 | AWS DMS タスクにパーティションのフィルタ条件を含めます。パーティションを対応する PostgreSQL 子テーブルにマッピングします。 | DBA | 
| フルロードおよび変更データキャプチャ (CDC) を使用して AWS DMS タスクを実行します。 | `StopTaskCachedChangesApplied` パラメータが `true` に設定され、`StopTaskCachedChangesNotApplied` パラメータが `false` に設定されていることを確認します。 | DBA | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションタスクを停止します。 | タスクを停止する前に、ソースとターゲットが同期されていることを確認します。 | DBA | 
| 親テーブルにトリガーを作成します。 | 親テーブルはすべての挿入コマンドと更新コマンドを受け取るため、パーティショニング条件に基づいてこれらのコマンドをそれぞれの子テーブルにルーティングするトリガーを作成します。 | DBA | 

## 関連リソース
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-resources"></a>
+ AWS DMS
+ 「[テーブルパーティショニング (PostgreSQL ドキュメント)](https://www.postgresql.org/docs/10/ddl-partitioning.html)」

## 追加情報
<a name="migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms-additional"></a>

PostgreSQL バージョン 10 はネイティブパーティショニングをサポートしていますが、以下のユースケースでは継承パーティショニングを使用することもできます。
+ パーティショニングでは、すべてのパーティションが親パーティションと同じ列セットを持つ必要があるというルールが適用されますが、テーブル継承では子が追加の列を持つこともサポートされます。
+ テーブル継承は多重継承をサポートします。
+ 宣言型パーティショニングは、リストパーティショニングとレンジパーティショニングのみをサポートします。テーブル継承では、データを必要に応じて分割できます。ただし、制約除外によってパーティションを効果的にプルーニングできなければ、クエリのパフォーマンスが低下します。
+ 一部の操作では、宣言型パーティショニングを使用する方が、テーブル継承を使用する場合よりも強力なロックが必要になります。たとえば、`ACCESS EXCLUSIVE` パーティション化されたテーブルにパーティションを追加または削除するには親テーブルをロックする必要がありますが、`SHARE UPDATE EXCLUSIVE` 通常の継承にはロックで十分です。

個別のジョブパーティションを使用する場合、AWS DMS の検証に問題がある場合はパーティションをリロードすることもできます。パフォーマンスとレプリケーション制御を向上させるには、個別のレプリケーションインスタンスでタスクを実行します。

# Amazon RDS for Oracle から Amazon RDS for MySQL に移行する
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql"></a>

*Amazon Web Services、Jitender Kumar、Srini Ramaswamy、Neha Sharma*

## 概要
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-summary"></a>

このパターンでは、Oracle DB インスタンスの Amazon Relational Database Service (Amazon RDS) を、Amazon Web Services (AWS) 上の Amazon RDS for MySQL DB インスタンスに移行する際のガイダンスを提供します。このパターンでは AWS Database Migration Service (AWS DMS) と AWS Schema Conversion Tool (AWS SCT) を使用します。 

このパターンから、保存済みプロシージャの移行処理についてのベストプラクティスを学ぶことができます。また、アプリケーションレイヤーをサポートするコード変更についても説明します。

## 前提条件と制限事項
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ Amazon RDS for Oracle ソースデータベース
+ Amazon RDS for MySQL ターゲットデータベース。ソースデータベースとターゲットデータベースは、同一の仮想プライベートクラウド (VPC) 内にある必要があります。複数の VPC を使用している場合は、必要なアクセス許可を受けてください。
+ ソースとターゲットのデータベース、AWS SCT、アプリケーションサーバー、および AWS DMS 間の接続を許可するセキュリティグループ。
+ ソースデータベースで AWS SCT を実行するために必要な権限があるユーザーアカウント。
+ ソースデータベースで AWS DMS を実行するための補足ロギングが有効になっている。

**制限事項**
+ ソースとターゲットの Amazon RDS データベースのサイズ制限は 64 TB です。Amazon RDS サイズについて、詳しくは [AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)をご確認ください。
+ Oracle ではデータベースオブジェクトの大文字と小文字は区別されますが、MySQL では区別されません。AWS SCT は、オブジェクトの作成中にこの問題を処理します。ただし、完全な大文字、小文字の区別をサポートするには、いくつかの手動での作業が必要です。
+ この移行では、Oracle ネイティブ機能を有効にするために MySQL 拡張機能は使用されません。AWS SCT がほとんどの変換を処理しますが、コードを手動で変更するには作業が必要です。
+ Java データベース接続 (JDBC) ドライバーの変更がアプリケーションで必要です。

**製品バージョン**
+ Amazon RDS for Oracle 12.2.0.1 以降。現在サポートされている RDS for Oracle のバージョンについては、[AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Concepts.database-versions.html)を参照してください。
+ Amazon RDS for MySQL 8.0.15 以降。現在サポートされている RDS for MySQL のバージョンについては、[AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Concepts.VersionMgmt.html)を参照してください。
+ AWS DMS バージョン 3.3.0 以降。AWS DMS 対応の[ソースエンドポイント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html)および[ターゲットエンドポイント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html)について、詳細は AWS ドキュメントを参照してください。
+ AWS SCT バージョン 1.0.628 以降。 AWS ドキュメントの「[AWS SCT ソースおよびターゲットエンドポイントのサポートマトリクス](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」を参照してください。

## アーキテクチャ
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-architecture"></a>

**ソーステクノロジースタック**
+ Amazon RDS for Oracle 詳しくは、「[AWS DMS のソースとして Oracle データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。 

**ターゲットテクノロジースタック**
+ Amazon RDS for MySQL 詳しくは「[AWS DMS のターゲットとして MySQL 互換データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)」を参照してください。

**移行アーキテクチャ**

次の図では、AWS SCT は Amazon RDS for Oracle のソースデータベースからスキーマオブジェクトをコピーおよび変換し、そのオブジェクトを Amazon RDS for MySQL ターゲットデータベースに送信します。AWS DMS はソースデータベースからデータを複製し、Amazon RDS for MySQL インスタンスに送信します。

![\[プライベートサブネットにデプロイされた AWS SCT、AWS DMS、Amazon RDS。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e1efa7c2-47c1-4677-80bc-6b19250fc0d6/images/b54a8442-9ab9-4074-b8f6-a08f87fa2f52.jpeg)


## ツール
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-tools"></a>
+ [AWS Data Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) を使用することで、データストアの AWS クラウドへの移行、およびクラウドとオンプレミスのセットアップ間での移行が可能になります。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。このパターンでは、[Amazon RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) と [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) を使用します。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html) は、ソースデータベーススキーマとカスタムコードの大部分を、ターゲットデータベースと互換性のある形式に自動的に変換することにより、異種データベース移行をサポートします。

## エピック
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-epics"></a>

### 移行の準備をする
<a name="prepare-for-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットのデータベースのバージョンとエンジンを検証します。 |  | DBA | 
|  ターゲットサーバーインスタンスのハードウェア要件を特定します。 |  | DBA、SysAdmin | 
| ストレージ要件 (ストレージタイプと容量) を特定します。 |  | DBA、SysAdmin | 
| 適切なインスタンスタイプ（容量、ストレージ機能、ネットワーク機能）を選択します。 |  | DBA、SysAdmin | 
| ソースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定します。 |  | DBA、SysAdmin  | 
| アプリケーション移行戦略を選択します。 | カットオーバー作業のために完全なダウンタイムと部分的なダウンタイムのどちらが必要かを検討してください。 | DBA、SysAdmin、アプリ所有者 | 

### インフラストラクチャを設定する
<a name="configure-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC とサブネットを作成します。 |  | SysAdmin | 
| セキュリティグループとネットワークアクセスコントロールリスト (ACL) を作成します。 |  | SysAdmin | 
| Amazon RDS for Oracle インスタンスの設定と起動を行います。 |  | DBA、SysAdmin | 
| Amazon RDS for MySQL インスタンスの設定と起動を行います。 |  | DBA、SysAdmin | 
| コード変換を検証するためのテストケースを準備します。 | これは、変換されたコードのユニットテストに役立ちます。 | DBA、開発者 | 
| AWS DMS インスタンスを設定します。 |  |  | 
| AWS DMS でソースとターゲットのエンドポイントを設定します。 |  |  | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を使用してターゲットデータベースのスクリプトを生成します。 | AWS SCT によって変換されたコードの正確性を確認してください。手作業が必要です。 | DBA、開発者 | 
| AWS SCT で、[大文字と小文字を区別しない] 設定を選択します。 | AWS SCT で、[プロジェクト設定]、[ターゲット大文字と小文字の区別]、[大文字と小文字を区別しない] を選択します。 | DBA、開発者 | 
| AWS SCT では、Oracle ネイティブ関数を使用しないことを選択します。 | プロジェクト設定で、TO\$1CHAR/TO\$1NUMBER/TO\$1DATE 関数をチェックします。　 | DBA、開発者 | 
| "sql%notfound" コードに変更を追加します。 | コードを手動で変換する必要があります。 |  | 
| ストアドプロシージャ内のテーブルとオブジェクトに対するクエリ (小文字のクエリを使用)。 |  | DBA、開発者 | 
| すべての変更が行われた後、プライマリスクリプトを作成し、ターゲットデータベースにデプロイします。 |  | DBA、開発者 | 
| サンプルデータを使用してストアドプロシージャとアプリケーションコールをユニットテストします。 |  |  | 
| ユニットテスト中に作成されたデータをクリーンアップします。 |  | DBA、開発者 | 
| 外部キーの制約をターゲットデータベースにドロップします。 | この手順は、初期データをロードするために必要です。外部キー制約をドロップしたくない場合は、プライマリテーブルとセカンダリテーブルに固有データ用の移行タスクを作成する必要があります。 | DBA、開発者 | 
| プライマリキーとユニークキーをターゲットデータベースにドロップします。 | このステップにより、初期ロードのパフォーマンスが向上します。 | DBA、開発者 | 
| ソースデータベースでの補足的なログ記録を有効にします。 |  | DBA | 
| AWS DMS で初期ロード用の移行タスクを作成します。 | [既存データを移行する] オプションを選択します。 | DBA | 
| プライマリキーと外部キーをターゲットデータベースに追加します。 | 初回ロード後に、制約を追加する必要があります。 | DBA、開発者 | 
| 継続的なレプリケーション用の移行タスクを作成します。 | 継続的なレプリケーションにより、ターゲットデータベースとソースデータベースの同期が維持されます。 | DBA | 

### アプリケーションを移行する
<a name="migrate-applications"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle のネイティブ関数を MySQL のネイティブ関数に置き換えます。 |  | アプリ所有者 | 
| SQL クエリのデータベースオブジェクトには、必ず小文字の名前のみを使用してください。 |  | DBA、SysAdmin、アプリ所有者 | 

### ターゲットデータベースにカットオーバーする
<a name="cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションサーバーをシャットダウンします。 |  | アプリ所有者 | 
| ソースデータベースとターゲットデータベースが同期していることを検証します。 |  | DBA、アプリ所有者 | 
| Amazon RDS for Oracle DB インスタンスを停止します。 |  | DBA | 
| 移行タスクを停止します。 | 前のステップを完了すると、自動的に停止します。 | DBA | 
| JDBC 接続を Oracle から MySQL に変更します。 |  | アプリ所有者、DBA | 
| アプリケーションを起動します |  | DBA、SysAdmin、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プロジェクト文書を確認して検証する。 |  | DBA、SysAdmin | 
| 移行の所要時間、手動タスクとツールタスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、SysAdmin | 
| AWS DMS インスタンスを停止して削除します。 |  | DBA | 
| ソースおよびターゲットのエンドポイントを削除します。 |  | DBA | 
| 移行タスクを削除します。 |  | DBA | 
| Amazon RDS for Oracle DB インスタンスのスナップショットを作成します。 |  | DBA | 
| Amazon RDS for Oracle DB インスタンスを削除します。 |  | DBA | 
| 使用したその他の一時的な AWS リソースをシャットダウンして削除します。 |  | DBA、SysAdmin | 
| プロジェクトを閉じて、フィードバックします。 |  | DBA | 

## 関連リソース
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-resources"></a>
+ AWS DMS
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html)
+ [Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/)
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」

# AWS DMS と AWS SCT を使用して IBM Db2 on Amazon EC2 から Aurora PostgreSQL 互換に移行する
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct"></a>

*Amazon Web Services、Sirsendu Halder、Abhimanyu Chhabra*

## 概要
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-summary"></a>

このパターンでは、Amazon Elastic Compute Cloud (Amazon EC2)インスタンス上の IBM Db2 データベースを Amazon Aurora PostgreSQL 互換エディション DB インスタンスに移行するためのガイダンスが提供されます。このパターンでは、AWS Database Migration Service (AWS DMS) と AWS Schema Conversion Tool (AWS SCT) を使用して、データ移行とスキーマ変換を行います。

このパターンでは、トランザクション数の多いテラバイト規模の IBM Db2 ソースデータベースに対して、ダウンタイムをほとんどまたはまったく発生させないオンライン移行戦略を目指しています。パフォーマンスを向上させるには、PostgreSQL で `NUMERIC` データ型のプライマリキー (PK) と外部キー (FK) の列を `INT` または `BIGINT` に変換することをお勧めします。 

## 前提条件と制限事項
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ EC2 インスタンス上のソース IBM Db2 データベース

**製品バージョン**
+ DB2/LINUXX8664 バージョン 11.1.4.4 以降

## アーキテクチャ
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-architecture"></a>

**ソーステクノロジースタック**** **
+ EC2 インスタンス上の Db2 データベース  

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換バージョン 10.18 以降の DB インスタンス

**データベース移行アーキテクチャ**** **

![\[AWS DMS を使用して、IMB Db2 on Amazon EC2 から Aurora PostgreSQL に互換移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5e737fab-3e04-4887-9fb0-d1c88503b57d/images/789fabcc-8052-40d5-a746-986d799576e9.png)


## ツール
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) を使用すると、AWS クラウドに、またはクラウドとオンプレミスを組み合わせたセットアップの間にデータストアを移行できます。移行中でもソースデータベースが完全に維持され、このデータベースを利用するアプリケーションのダウンタイムは最小限に抑えられます。AWS DMS は、広く普及しているほとんどの商用データベースとオープンソースデータベース間のデータ移行にご利用いただけます。AWS DMS は、IBM Db2 から Aurora PostgreSQL 互換バージョン 10.18 以降への移行など、異なるデータベースプラットフォーム間での異種間の移行をサポートしています。詳細については、AWS DMS ドキュメントの「[データ移行のソース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)」と「[データ移行のターゲット](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html)」を参照してください。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマと大部分のデータベースコードオブジェクト (ビュー、ストアドプロシージャ、関数など) をターゲットデータベースと互換性のある形式に自動的に変換し、異種データベースを簡単に移行できるようにします。自動的に変換されないオブジェクトにはわかりやすいマークが付いており、手動で変換して移行を完了できます。AWS SCT では、アプリケーションのソースコードに埋め込まれた SQL ステートメントをスキャンして変換することもできます。 

## エピック
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-epics"></a>

### 環境をセットアップする
<a name="set-up-the-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Aurora PostgreSQL と互換性のある DB インスタンスを作成します。 | DB インスタンスを作成するには、「[AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)」の指示に従ってください。**[エンジンのタイプ]** には、[Amazon Aurora] を選択します。**[エディション]** には、[Amazon Aurora PostgreSQL 互換エディション] を選択します。Aurora PostgreSQL 互換バージョン 10.18 以降の DB インスタンスは、ソース IBM Db2 データベースと同じ仮想プライベートクラウド (VPC) 内に配置する必要があります。 | Amazon RDS | 

### データベーススキーマを変換する
<a name="convert-your-database-schema"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をインストールして検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | AWS 管理者、データベース管理者、移行エンジニア | 
| AWS SCT を起動してプロジェクトを開始します。 | AWS SCT ツールを起動し、データベース移行評価レポートを実行する新しいプロジェクトを作成するには、[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Launching)の指示に従ってください。 | 移行エンジニア | 
| データベースサーバーを追加し、マッピングルールを追加します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | 移行エンジニア | 
| データベース移行評価レポートを作成します。 | 「[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport)」の手順に従って、データベース移行評価レポートを作成します。 | 移行エンジニア | 
| 評価レポートを表示します。 | データベース移行評価レポートの **[概要]** タブを使用してレポートを表示し、データを分析します。この分析は、移行の複雑さを判断するのに役立ちます。詳細については、「[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.View.html)」を参照してください。 | 移行エンジニア | 
| スキーマを変換します。 | データベーススキーマを変換するには:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html)詳細については、「[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Converting)」を参照してください。 | 移行エンジニア | 
| 変換されたデータベーススキーマをターゲット DB インスタンスに適用します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html)詳細については、「[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.ApplyingConversion)」を参照してください。 | 移行エンジニア | 

### データを移行する
<a name="migrate-your-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC と DB パラメータグループを設定します。 | VPC と DB のパラメータグループを設定し、移行に必要なインバウンドルールとパラメータを設定します。手順については、「[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Prerequisites.html)」を参照してください。VPC セキュリティグループには、Db2 の EC2 インスタンスと Aurora PostgreSQL 互換の DB インスタンスの両方を選択します。　 このレプリケーションインスタンスは、ソースおよびターゲットの DB インスタンスと同じ VPC 内に配置する必要があります。 | 移行エンジニア | 
| ソースとターゲットの DB インスタンスを準備します。　 | 移行に向けてソースとターゲットの DB インスタンスを準備します。　 ソースデータベースは、すでに本番環境で存在しています。ソースデータベースの場合、サーバー名は Db2 が実行されている EC2 インスタンスのパブリックドメインネームシステム (DNS) にする必要があります。ユーザー名には、`db2inst1` コードとポートを使用できます。IBM Db2 の場合は 5000 になります。 | 移行エンジニア | 
| Amazon EC2 クライアントとエンドポイントを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | 移行エンジニア | 
| レプリケーションインスタンスを作成します。 | AWS DMS コンソールを使用してレプリケーションインスタンスを作成し、ソースやターゲットのエンドポイントを指定します。レプリケーション インスタンスは、エンドポイント間でデータ移行を行います。詳細については、[AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html)を参照してください。 | 移行エンジニア | 
| AWS DMS タスクを作成して、データを移行します。 | 「[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Tasks)」の手順に従って、ソース IBM Db2 テーブルをターゲット PostgreSQL DB インスタンスにロードするタスクを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.html) | 移行エンジニア | 

## 関連リソース
<a name="migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct-resources"></a>

**リファレンス**
+ 「[Amazon Aurora ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)」
+ 「[PostgreSQL 外部データラッパー (FDW) に関するドキュメント](https://www.postgresql.org/docs/10/postgres-fdw.html)」 
+ 「[PostgreSQL 外部スキーマのインポートに関するドキュメント](https://www.postgresql.org/docs/10/sql-importforeignschema.html)」 
+ 「[AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/index.html)」  
+ [AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 

**チュートリアルと動画**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/) (チュートリアル)
+ [Amazon EC2 のご紹介 - Elastic クラウドサーバーと AWS でのホスティング](https://www.youtube.com/watch?v=TsRBftzZsQo) (動画)

# SharePlex と AWS DMS を使用して、Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms"></a>

*Amazon Web Services、Kumar Babu P G*

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

このパターンでは、オンプレミスの Oracle 8i または 9i データベースを、Amazon Relational Database Service (Amazon RDS) for PostgreSQL または Amazon Aurora に移行する方法を説明しています。AWS Database Migration Service (AWS DMS) は Oracle 8i または 9i をソースとしてサポートしていないため、Quest SharePlex はオンプレミスの 8i または 9i データベースから、AWS DMS と互換性のある中間の Oracle データベース (Oracle 10g または 11g) にデータを複製します。

中間の Oracle インスタンスから、スキーマとデータは AWS Schema Conversion Tool (AWS SCT) と AWS DMS を使用して AWS 上の PostgreSQL データベースに移行されます。この方法では、レプリケーションの遅延を最小限に抑えながら、ソース Oracle データベースからターゲット PostgreSQL DB インスタンスにデータを継続的にストリーミングできます。この実装では、ダウンタイムは、ターゲット PostgreSQL データベース上のすべての外部キー、トリガー、およびシーケンスを作成または検証するのにかかる時間に制限されます。

移行では、Oracle 10g または 11g がインストールされた Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用して、ソース Oracle データベースからの変更内容をホストします。AWS DMS は、この中間 Oracle インスタンスをソースとして使用し、Amazon RDS for PostgreSQL または Aurora PostgreSQL にデータをストリーミングします。オンプレミスの Oracle データベースから中間 Oracle インスタンスへのデータ複製を一時停止して再開できます。また、中間 Oracle インスタンスからターゲット PostgreSQL データベースに一時停止して再開できるため、AWS DMS データ検証ツールまたはカスタムデータ検証ツールのいずれかを使用してデータを検証できます。

## 前提条件と制限事項
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-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)」に精通している
+ 「[Oracle データベースを AWS DMS ソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)」に精通している
+ Quest SharePlex データレプリケーションに精通している

 

**制限事項**
+ データベースのサイズ制限は 64 TB です
+ オンプレミスの Oracle データベースはエンタープライズエディションである必要があります

 

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

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

**ソーステクノロジースタック**
+ Oracle 8i または 9i データベース 
+ クエスト シェアプレックス 

 

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

** **

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

![\[Architecture diagram showing migration from on-premises Oracle database to AWS cloud using various services.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/b6c30668-fc2e-4293-a59a-e01fd151f4bb/images/25082670-0bf3-4b20-8c80-99c6633b046f.png)


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

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

### EC2 インスタンスを作成して Oracle をインストール
<a name="create-the-ec2-instance-and-install-oracle"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 のネットワークをセットアップします。 | 仮想プライベートクラウド (VPC)、サブネット、インターネットゲートウェイ、ルートテーブル、およびセキュリティグループを作成します。 | AWS SysAdmin | 
| 新しい EC2 インスタンスを作成します。 | EC2 インスタンスの Amazon マシンイメージ (AMI)を選択します。インスタンスサイズを選択し、インスタンスの詳細 (インスタンス数 (1)、前のステップの VPC とサブネット、パブリック IP の自動割り当て、その他のオプション)を設定します。ストレージを追加し、セキュリティグループを設定し、インスタンスを起動します。プロンプトが表示されたら、次のステップのためにキーペアを作成して保存します。 | AWS SysAdmin | 
| EC2 インスタンスに Oracle をインストールします。 | ライセンスと必要な Oracle バイナリを取得し、EC2 インスタンスに Oracle 10g または 11g をインストールします。 | DBA | 

### EC2 インスタンスに SharePlex をセットアップし、データレプリケーションを設定します
<a name="set-up-shareplex-on-an-ec2-instance-and-configure-data-replication"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SharePlex をセットアップします。 | Amazon EC2 インスタンスを作成して、Oracle 8i または 9i と互換性のある SharePlex バイナリをインストールします。 | AWS SysAdmin、DBA | 
| データレプリケーションを設定します。 | SharePlex のベストプラクティスに従って、オンプレミスの Oracle 8i/9i データベースから Oracle 10g/11g インスタンスへのデータレプリケーションを設定します。 | DBA | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT をセットアップします。 | 新しいレポートを作成し、次にソースとして Oracle に、ターゲットとして PostgreSQL に接続します。プロジェクト設定で SQL スクリプトタブを開き、ターゲット SQL スクリプトを「複数ファイル」に変更します。 | DBA | 
| Oracle データベーススキーマを変換します。 | アクションタブで、レポートを生成、スキーマを変換、SQL として保存の順に選択します。 | DBA | 
| AWS SCT によって生成された SQL スクリプトを変更します。 |  | DBA | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS DB インスタンスを作成します。 | Amazon RDS コンソールで、新しい PostgreSQL DB インスタンスを作成します。 | AWS SysAdmin、DBA | 
| DB インスタンスを設定します。 | DB エンジンのバージョン、DB インスタンスクラス、マルチ AZ 配置、ストレージタイプ、ストレージの割り当てを指定します。DB インスタンス識別子、マスターユーザー名、マスターパスワードを入力します。 | AWS SysAdmin、DBA | 
| ネットワークとセキュリティを設定します。 | VPC、サブネットグループ、パブリックアクセシビリティ、アベイラビリティーゾーンプリファレンス、セキュリティグループを指定します。 | AWS SysAdmin、DBA | 
| データベースオプションを設定します。 | データベース名、ポート、パラメータグループ、暗号化、マスターキーを指定します。 | AWS SysAdmin、DBA | 
| バックアップを設定します。 | バックアップ保持期間、バックアップウィンドウ、開始時刻、期間、およびタグをスナップショットにコピーするかどうかを指定します。　 | AWS SysAdmin、DBA | 
| モニタリングオプションを設定します。 | 拡張モニタリングとパフォーマンスインサイトの有効または無効にします。 | AWS SysAdmin、DBA | 
| メンテナンスオプションを設定します。 | マイナーバージョンの自動マイナーアップグレード、メンテナンスウィンドウ、および開始日、時刻、および期間を指定します。 | AWS SysAdmin、DBA | 
| AWS SCT から移行前スクリプトを実行します。 | Amazon RDS インスタンスで、create\$1database.sql、create\$1sequence.sql、create\$1table.sql、create\$1view.sql、create\$1function.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)、サーバー名 (Amazon EC2 プライベート DNS 名)、ポート、SSL モード、ユーザー名、パスワード、SID、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\$1index.sql と create\$1constraint.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 データベースのリスナーをシャットダウンし、ALTER SYSTEM SWITCH ログファイルを実行します。アクティビティが表示されない場合は、AWS DMS タスクを停止します。 | DBA | 
| AWS SCT から移行後のスクリプトを実行します。 | Amazon RDS for PostgreSQL では、create\$1foreign\$1key\$1constraint.sql と create\$1triggers.sql というスクリプトを実行します。 | DBA | 
| Amazon RDS for PostgreSQL のその他のステップをすべて完了します。 | 必要に応じて Oracle と一致するようにシーケンスをインクリメントし、VACUUM と ANALYZE を実行し、コンプライアンスのためのスナップショットを作成します。 | DBA | 
| [Amazon RDS for PostgreSQL に接続] を選択します。 | Amazon RDS for PostgreSQL から AWS DMS セキュリティグループを削除し、実稼働セキュリティグループを追加して、アプリケーションを新しいデータベースに接続します。 | DBA | 
| AWS リソースをクリーンアップします。 | エンドポイント、レプリケーションタスク、レプリケーションインスタンス、EC2 インスタンスを削除します。 | SysAdmin、DBA | 

## 関連リソース
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-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) 
+ [Quest SharePlex ドキュメント](https://support.quest.com/shareplex/9.0.2/technical-documents)

# マテリアライズドビューと 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)」

# AWS DMS と AWS SCT を使用して Oracle on Amazon EC2 から Amazon RDS for MySQL に移行する
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct"></a>

*Amazon Web Services、Anil Kunapareddy*

*Harshad Gohil*

## 概要
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-summary"></a>

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Oracle データベースを管理するには、リソースが必要でコストがかかります。これらのデータベースを MySQL データベースインスタンスの Amazon Relational Database Service (Amazon RDS) に移行することで、IT 予算全体を最適化して作業を軽減できます。Amazon RDS for MySQL には、マルチ AZ、スケーラビリティ、自動バックアップなどの機能も用意されています。 

このパターンでは、Amazon EC2 上で実行するソース Oracle データベースをターゲット Amazon RDS for MySQL DB インスタンスに移行する手順を順番に説明します。AWS Database Migration Service (AWS DMS) を使用してデータを移行し、AWS Schema Conversion Tool (AWS SCT) を使用してソースデータベース スキーマとオブジェクトを Amazon RDS for MySQL と互換性のあるフォーマットに変換します。

## 前提条件と制限事項
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ インスタンスサービスとリスナーサービスが ARCHIVELOG モードで実行されているソースデータベース
+ データ移行のための十分なストレージを備えた、ターゲット Amazon RDS for MySQL データベース

**制限事項**
+ AWS DMS はターゲットデータベースにスキーマを作成しないので、ユーザーが作成する必要があります。スキーマ名がすでに存在している必要があります。ソーススキーマのテーブルは、AWS DMS がターゲットインスタンスへの接続に使用するユーザーまたはスキーマにインポートされます。複数のスキーマに移行する必要がある場合、複数のレプリケーションタスクを作成する必要があります。

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

## アーキテクチャ
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-architecture"></a>

**ソーステクノロジースタック**
+ EC2 インスタンス上の Oracle データベース  

**ターゲットテクノロジースタック**
+ Amazon RDS for MySQL DB インスタンス

**データ移行アーキテクチャ**

![\[AWS DMS を使用して Oracle on Amazon EC2 から Amazon RDS for MySQL に移行する\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/8a8e346e-7944-4999-bc11-208efead3792/images/c00f908c-f348-41dd-a31c-3931b990777a.png)


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

![\[AWS DMS と AWS SCT を使用して Oracle on Amazon EC2 から Amazon RDS for MySQL に移行する\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/8a8e346e-7944-4999-bc11-208efead3792/images/e7ba7ac0-3094-4142-b355-fb192e242432.png)


## ツール
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-tools"></a>
+ **AWS DMS** - [AWS Database Migration Service](https://docs.aws.amazon.com/dms/) (AWS DMS) は、オンプレミス、Amazon RDS DB インスタンス、または EC2 インスタンス上のデータベースから、Amazon RDS for MySQL や EC2 インスタンスなどの AWS サービス上のデータベースにデータを移行するために使用できるウェブサービスです。データベースを AWS Service からオンプレミスのデータベースに移行することもできます。異種または同種のデータベースエンジン間でデータを移行できます。
+ **AWS SCT** - [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) は、ソースデータベーススキーマと大部分のカスタムコードオブジェクト (ビュー、ストアドプロシージャ、関数など) をターゲットデータベースと互換性のある形式に自動的に変換し、異種データベースを簡単に移行できるようにします。AWS SCT を使用してデータベーススキーマとコードオブジェクトを変換した後、AWS DMS を使用してソースデータベースからターゲットデータベースにデータを移行し、移行プロジェクトを完了できます。

## エピック
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースとターゲットデータベースについて、バージョンとエンジンを特定します。 |  | DBA/開発者 | 
| DMS レプリケーションインスタンスを特定します。 |  | DBA/開発者 | 
| ストレージ要件 (ストレージタイプと容量) を特定します。 |  | DBA/開発者 | 
| レイテンシーや帯域幅などのネットワーク要件を特定します。 |  |  DBA/開発者 | 
| Oracle 互換性リストと容量要件に基づいて、ターゲットサーバーインスタンスのハードウェア要件を特定します。 |  | DBA/開発者 | 
| ソースおよびターゲットのデータベースのネットワークアクセスセキュリティ要件を特定します。 |  | DBA/開発者 | 
| AWS SCT と Oracle ドライバーをインストールします。 |  | DBA/開発者 | 
| バックアップ戦略を決定します。 |  | DBA/開発者 | 
| 可用性の要件を決定します。 |  | DBA/開発者 | 
| アプリケーションの移行/切り替え戦略を特定します。 |  | DBA/開発者 | 
| 容量、ストレージ、ネットワーク機能に基づいて、適切な DB インスタンスタイプを選択します。 |  | DBA/開発者 | 

### 環境を設定する
<a name="configure-the-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。ソース、ターゲット、レプリケーションインスタンスは、同じ VPC 上に存在する必要があります。これらを同じアベイラビリティゾーンに配置するのも良いでしょう。 |  | 開発者 | 
| データベースアクセスに必要なセキュリティグループを作成します。 |  |  開発者 | 
| キーペアを生成して設定します。 |  | 開発者 | 
| サブネット、アベイラビリティゾーン、CIDR ブロックを設定します。 |  | 開発者 | 

### ソースの設定: EC2 インスタンス上の Oracle データベース
<a name="configure-the-source-oracle-database-on-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 必要なユーザーとロールを使用して Amazon EC2 に Oracle データベースをインストールします。 |  | DBA | 
|  EC2 インスタンスの外部から Oracle にアクセスするには、次の列で 3 つの手順を実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.html) | DBA | 
| Amazon EC2 を再起動すると、パブリック DNS が変更されます。'tnsnames' と 'listener' の Amazon EC2 パブリック DNS を更新するか、Elastic IP アドレスを使用してください。 |  | DBA/開発者 | 
| レプリケーションインスタンスと必要なクライアントがソースデータベースにアクセスできるように EC2 インスタンスのセキュリティグループを設定します。 |  | DBA/開発者 | 

### ターゲットの設定: Amazon RDS for MySQL
<a name="configure-the-target-amazon-rds-for-mysql"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS for MySQL DB インスタンスの設定と起動を行います。 |  | 開発者 | 
| Amazon RDS for MySQL DB インスタンスに必要なテーブルスペースを作成します。 |  | DBA | 
| レプリケーションインスタンスと必要なクライアントがターゲットデータベースにアクセスできるようにセキュリティグループを設定します。 |  | 開発者 | 

### AWS SCT を設定し、ターゲットデータベースにスキーマを作成します。
<a name="configure-aws-sct-and-create-a-schema-in-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT と Oracle ドライバーをインストールします。 |  | 開発者 | 
| 適切なパラメータを入力して、ソースとターゲットに接続します。　 |  | 開発者 | 
| スキーマ変換レポートを生成します。 |  | 開発者 | 
| コードとスキーマ、特にテーブルスペースと引用符を必要に応じて修正し、ターゲットデータベースで実行します。 |  |  開発者 | 
| データを移行する前に、ソースとターゲットでスキーマを検証します。 |  | 開発者 | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| フルロードおよび変更データキャプチャ (CDC) または CDC のみの場合は、追加の接続属性を設定する必要があります。 |  | 開発者 | 
| AWS DMS ソース Oracle データベース定義で指定されたユーザーには、必要なすべての権限を付与する必要があります。詳細については、https://docs.aws.amazon.com/dms/latest/userguide/CHAP\$1Source.Oracle.html\$1CHAP\$1Source.Oracle.Self-Managed を参照してください。 |  | DBA/開発者 | 
| ソース DB での補足的なログ記録を有効にします。 |  | DBA/開発者 | 
| フルロードおよび変更データキャプチャ (CDC) または CDC のみの場合は、ソースデータベースで ARCHIVELOG モードを有効にします。 |  | DBA | 
| ソースエンドポイントとターゲットエンドポイントを作成してテストします。 |  | 開発者 | 
| エンドポイントが正常に接続された後、レプリケーションタスクを作成します。 |  | 開発者 | 
| タスクで CDC のみ（または）フルロード \$1 CDC を選択すると、継続的なレプリケーションのみの変更（または）フルロード \$1 継続的な変更がそれぞれキャプチャされます。 |  | 開発者 | 
| レプリケーションタスクを実行し、Amazon CloudWatch Logs をモニタリングします。 |  |  開発者 | 
| ソースデータベースとターゲットデータベースのデータを検証します。 |  | 開発者 | 

### アプリケーションの移行とカットオーバー
<a name="migrate-your-application-and-cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略の手順に従ってください。 |  | DBA、開発者、アプリ所有者 | 
| アプリケーションのカットオーバー/スイッチオーバー戦略に従ってください。 |  | DBA、開発者、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースとターゲットデータベースにあるスキーマとデータを検証します。 |  | DBA/開発者 | 
| 移行の所要時間、手動とツールの比率、コスト削減などのメトリクスを収集します。 |  |  DBA/開発者/アプリ所有者 | 
| プロジェクト文書とアーティファクトをレビューして検証します。 |  | DBA/開発者/アプリ所有者 | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA/開発者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  | DBA/開発者/アプリ所有者 | 

## 関連リソース
<a name="migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-resources"></a>
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 
+ [AWS DMS ウェブサイト](https://aws.amazon.com/dms/)
+ [AWS DMS に関するブログ投稿](https://aws.amazon.com/blogs/database/tag/dms/) 
+ 「[Oracle データベースを AWS に移行するための戦略](https://d1.awsstatic.com/whitepapers/strategies-for-migrating-oracle-database-to-aws.pdf)」 
+ 「[Amazon RDS for Oracle よくある質問](https://aws.amazon.com/rds/oracle/faqs/)」 
+ 「[Oracle よくある質問](https://aws.amazon.com/oracle/faq/)」 
+ [Amazon EC2](https://aws.amazon.com/ec2/) 
+ 「[Amazon EC2 よくある質問](https://aws.amazon.com/ec2/faqs/)」
+ 「[クラウドコンピューティング環境における Oracle ソフトウェアのライセンス](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)」

# AWS DMS と AWS SCT を使用して、Oracle データベースを Amazon EC2 から Amazon RDS for MariaDB に移行する
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct"></a>

*Amazon Web Services、Veeranjaneyulu Grandhi および Vinod Kumar*

## 概要
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-summary"></a>

このパターンでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上の Oracle データベースを、Amazon DB インスタンスの Amazon Relational Database Service (Amazon RDS) に移行する手順を、順を追って説明します。このパターンでは、データ移行に AWS Data Migration Service (AWS DMS) を使用し、スキーマ変換に AWS Schema Conversion Tool (AWS SCT) を使用します。

EC2 インスタンスで Oracle データベースを管理することは、Amazon RDS 上のデータベースを使用するよりも多くのリソースを必要とし、コストもかかります。Amazon RDS を使用すると、クラウドでリレーショナルデータベースを簡単に設定、運用、拡張できます。Amazon RDS は、ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間のかかる管理タスクを自動化しながら、コスト効率が高くサイズ変更可能な容量を提供します。

## 前提条件と制限
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ インスタンスサービスとリスナーサービスが稼働しているソース Oracle データベース。このデータベースは ARCHIVELOG モードになっているはずです。
+ [AWS DMS のソースとしての Oracle データベースの使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)に関する知識。
+ [AWS SCT のソースとして Oracle を使用する](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)ことについての知識。

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

**製品バージョン**
+ バージョン 10.2 以降の 11g から 12.2 まで、および 18c のすべてのエディションの Oracle データベース。サポートされているバージョンの最新リストについては、AWS ドキュメントの「[Using an Oracle Database as a Source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」と「[AWS SCT version table](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」を参照してください。
+ Amazon RDS は、MariaDB サーバーコミュニティサーバーのバージョン 10.3、10.4、10.5、および 10.6 をサポートしています。サポートされているバージョンの最新リストについては、[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html)を参照してください。

## アーキテクチャ
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-architecture"></a>

**ソーステクノロジースタック**
+ EC2 インスタンス上の Oracle データベース

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

**データ移行アーキテクチャ**

![\[移行に AWS DMS を使用します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/0b4269c6-8ea3-4672-ad14-1ffac1dc14f3/images/ed191145-e5c2-4d61-8827-31f081450c03.png)


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

![\[移行に AWS SCT を使用します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/0b4269c6-8ea3-4672-ad14-1ffac1dc14f3/images/0171f548-37dd-4110-851c-7e74dfff3732.png)


## ツール
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-tools"></a>
+ [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) は、ソースデータベースのスキーマと大部分のデータベースコードオブジェクト (ビュー、ストアドプロシージャ、関数など) をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行を予測可能にします。AWS SCT を使用してデータベーススキーマとコードオブジェクトを変換した後、AWS DMS を使用してソースデータベースからターゲットデータベースにデータを移行し、移行プロジェクトを完了できます。詳細については、AWS SCT ドキュメントの「[Using Oracle as a Source for AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) – データベースを迅速かつ安全に AWS に移行するのに役立ちます。移行中でもソースデータベースが完全に維持され、このデータベースを利用するアプリケーションのダウンタイムは最小限に抑えられます。AWS DMS は、広く普及しているほとんどの商用データベースとオープンソースデータベース間のデータ移行にご利用いただけます。AWS DMS は、Oracle から Oracle への同種移行だけでなく、Oracle や Microsoft SQL Server から Amazon Aurora へなど、異なるデータベースプラットフォーム間の異種移行もサポートしています。Oracle データベースの移行の詳細については、AWS DMS のドキュメントの「[Using an Oracle Database as a Source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。

## エピック
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-epics"></a>

### 移行計画
<a name="plan-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バージョンとデータベースエンジンを特定します。 | ソースデータベースとターゲットデータベースについて、バージョンとエンジンを特定します。 | DBA、開発者 | 
| レプリケーションインスタンスを特定します。 | AWS DMS レプリケーションインスタンスを特定します。 | DBA、開発者 | 
| ストレージ要件を特定します。 | ストレージの種類と容量を特定します。 | DBA、開発者 | 
| ネットワーク要件を特定します。 | ネットワークの遅延と帯域幅を特定します。 | DBA、開発者 | 
| ハードウェア要件を特定します。 | ソースサーバーインスタンスとターゲットサーバーインスタンスのハードウェア要件を (Oracle 互換性リストと容量要件に基づいて) 特定します。 | DBA、開発者 | 
| セキュリティ要件を特定します。 | ソースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定します。 | DBA、開発者 | 
| ドライバーをインストールします。 | 最新の AWS SCT および Oracle ドライバーをインストールします。 | DBA、開発者 | 
| バックアップ戦略を決定します。 |  | DBA、開発者 | 
| 可用性の要件を決定します。 |  | DBA、開発者 | 
| アプリケーション移行/スイッチオーバー戦略を選択してください。 |  | DBA、開発者 | 
| インスタンスタイプを選択します。 | 容量、ストレージ、ネットワーク機能に基づいて適切なインスタンスタイプを選択します。 | DBA、開発者 | 

### 環境を設定する
<a name="configure-the-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 | ソース、ターゲット、レプリケーションインスタンスは、同じ VPC と同じアベイラビリティゾーンにある必要があります (推奨)。 | 開発者 | 
| セキュリティグループを作成します。 | データベースアクセスに必要なセキュリティグループを作成します。 | 開発者 | 
| キーペアを生成します。 | キーペアを生成して設定します。 | 開発者 | 
| その他のリソースを設定します。 | サブネット、アベイラビリティゾーン、CIDR ブロックを設定します。 | 開発者 | 

### ソースを設定
<a name="configure-the-source"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスを起動します。 | 手順については、[Amazon EC2 のドキュメント](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)を参照してください。 | 開発者 | 
| Oracle データベースをインストールします。 | EC2 インスタンスに Oracle データベースを、必要なユーザーとロールとともにインストールします。 | DBA | 
| タスクの説明にあるステップに従って、EC2 インスタンスの外部から Oracle にアクセスします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct.html) | DBA | 
| Amazon EC2 パブリック DNS を更新します。 | EC2 インスタンスが再起動すると、パブリック DNS が変更されます。必ず `tnsnames` および `listener` で Amazon EC2 パブリック DNS を更新するか、Elastic IP アドレスを使用してください。 | DBA、開発者 | 
| EC2 インスタンスのセキュリティグループを設定します。 | EC2 インスタンスのセキュリティグループを設定して、レプリケーションインスタンスと必要なクライアントがソースデータベースにアクセスできるようにします。 | DBA、開発者 | 

### ターゲット Amazon RDS for MariaDB 環境を設定します
<a name="configure-the-target-amazon-rds-for-mariadb-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| RDS DB インスタンスを起動します。 | Amazon RDS for MariaDB インスタンスを設定し、起動します。 | 開発者 | 
| テーブルスペースを作成します。 | Amazon RDS MariaDB データベースに必要なテーブルスペースをすべて作成します。 | DBA | 
| セキュリティグループを設定します。 | レプリケーションインスタンスと必要なクライアントがターゲットデータベースにアクセスできるようにセキュリティグループを設定します。 | 開発者 | 

### AWS SCT を設定
<a name="configure-aws-sct"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ドライバーをインストールします。 | 最新の AWS SCT および Oracle ドライバーをインストールします。 | 開発者 | 
| 接続。 | 適切なパラメータを入力し、ソースとターゲットに接続します。 | 開発者 | 
| スキーマ変換レポートを生成します。 | AWS SCT スキーマ変換レポートを生成します。 | 開発者 | 
| 必要に応じてコードとスキーマを修正してください。 | コードとスキーマ (特にテーブルスペースと引用符) を必要に応じて修正します。 | DBA、開発者 | 
| スキーマを検証します。 | データをロードする前に、ソースとターゲットのスキーマを検証します。 | 開発者 | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 接続属性を設定します。 | フルロードおよび変更データキャプチャ (CDC) の場合、または CDC のみの場合は、追加の接続属性を設定します。詳細については、「 [Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html)」を参照してください。 | 開発者 | 
| 補足的なログを有効にします。 | ソースデータベースでの補足的なログ記録を有効にします。 | DBA、開発者 | 
| アーカイブログモードを有効にします。 | フルロードと CDC (または CDC のみ) の場合は、ソースデータベースのアーカイブログモードを有効にします。 | DBA | 
| エンドポイントを作成してテストします。 | ソースエンドポイントとターゲットエンドポイントを作成し、接続をテストします。詳細については、[Amazon DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html)を参照してください。 | 開発者 | 
| レプリケーションタスクを作成します。 | エンドポイントが正常に接続された後、レプリケーションタスクを作成します。詳細については、[Amazon DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html)を参照してください。 | 開発者 | 
| [レプリケーション] タイプを選択します。 | タスクで **[CDC のみ]** または **[フルロードと CDC]** を選択して、それぞれ連続レプリケーションのみ、またはフルロードと継続的な変更の変更をキャプチャします。 | 開発者 | 
| タスクを開始して監視します。 | レプリケーションタスクを開始し、Amazon CloudWatch Logs をモニタリングします。詳細については、[Amazon DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html)を参照してください。 | 開発者 | 
| データを検証します。 | ソースデータベースとターゲットデータベースのデータを検証します。 | 開発者 | 

### アプリケーションを移行し、ターゲットデータベースにカットオーバーする
<a name="migrate-applications-and-cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 選択したアプリケーション移行戦略に従ってください。 |  | DBA、アプリ所有者、デベロッパー | 
| 選択したアプリケーションのカットオーバー/スイッチオーバー戦略に従ってください。 |  | DBA、アプリ所有者、デベロッパー | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スキーマとデータを検証します。 | プロジェクトを終了する前に、スキーマとデータがソースとターゲットで正常に検証されていることを確認します。 | DBA、開発者 | 
| メトリクスを収集します。 | 移行時間、手動タスクとツールタスクの比率、コスト削減などの基準に関する指標を収集します。 | DBA、アプリ所有者、デベロッパー | 
| ドキュメントを確認します。 | プロジェクト文書とアーティファクトをレビューして検証します。 | DBA、アプリ所有者、デベロッパー | 
| リソースをシャットダウンします。 | 一時的な AWS リソースをシャットダウンします。 | DBA、開発者 | 
| プロジェクトを閉じます。 | 移行プロジェクトを閉じて、フィードバックを送ってください。 | DBA、アプリ所有者、デベロッパー | 

## 関連リソース
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct-resources"></a>
+ [MariaDB Amazon RDS の概要](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html)
+ [Amazon RDS for MariaDB の特徴](https://aws.amazon.com/rds/mariadb/features)
+ 「[AWS DMSのソースとして Oracle データベースを使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」
+ [Oracle データベースを AWS に移行するための戦略](https://docs.aws.amazon.com/whitepapers/latest/strategies-migrating-oracle-db-to-aws/strategies-migrating-oracle-db-to-aws.html)
+ [Licensing Oracle Software in the Cloud Computing Environment](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)
+ [Amazon RDS for Oracle FAQs](https://aws.amazon.com/rds/oracle/faqs/)
+ [AWS DMS の概要](https://aws.amazon.com/dms/)
+ [AWS DMS に関するブログ投稿](https://aws.amazon.com/blogs/database/tag/dms/)
+ [Amazon EC2 の概要](https://aws.amazon.com/ec2/)
+ [Amazon EC2 よくある質問](https://aws.amazon.com/ec2/faqs/)
+ [AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)

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

*Amazon Web Services、Sergey Dmitriev および Naresh Damera*

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

このパターンでは、オンプレミスの Oracle データベースを Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスに移行する手順を説明します。AWS Database Migration Service (AWS DMS) を使用してデータを移行し、AWS Schema Conversion Tool (AWS SCT) を使用してソースデータベーススキーマとオブジェクトを Amazon RDS for MySQL と互換性のあるフォーマットに変換します。

## 前提条件と制限事項
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-prerequisites-and-limitations"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターにあるソース Oracle データベース 

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

**製品バージョン**
+ バージョン 11g (バージョン 11.2.0.3.v1 以降) から 12.2 まで、および 18c のすべてのエディションの Oracle データベース。サポートされているバージョンの最新リストについては、「[Using an Oracle Database as a Source for 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 は現在、MySQL のバージョン 5.5、5.6、5.7 をサポートしています。サポートされているバージョンの最新リストについては、AWS ドキュメントの「[Using a MySQL-Compatible Database as a Target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)」を参照してください。

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

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース

**ターゲットテクノロジースタック**
+ Amazon RDS for MySQL DB インスタンス

**データ移行アーキテクチャ**

![\[AWS クラウド architecture showing data migration from on-premises to RDS via VPC, Internet Gateway, and AWS DMS.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/0385e5ad-a1ca-4c29-945b-592321d95f9d/images/c872e033-b13a-4436-b503-0632b5d437ae.png)


 

## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-tools"></a>
+ **AWS DMS** - [AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/) (AWS DMS) は、リレーショナルデータベース、データウェアハウス、NoSQL データベース、その他データストアの移行を促します。AWS DMS を使用して、オンプレミスのインスタンス間 (AWS クラウドセットアップを使用)、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間で、AWS クラウドにデータを移行できます。
+ **AWS SCT** - [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) は、データベーススキーマをあるデータベースエンジンから別のデータベースエンジンに変換するために使用されます。ツールによって変換されるカスタムコードには、ビュー、ストアドプロシージャ、関数が含まれます。ツールで自動的に変換されないコードは明確にマークされるので、ユーザーが手動で変換できます。

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

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンとエンジンを検証します。 |  | DBA | 
|  ターゲットサーバーインスタンスのハードウェア要件を特定する。 |  | DBA、SysAdmin | 
| ストレージ要件 (ストレージタイプと容量) を特定する。 |  | DBA、SysAdmin | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、SysAdmin | 
| ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。 |  | DBA、SysAdmin  | 
| アプリケーション移行戦略を特定します。 |  | DBA、SysAdmin、アプリ所有者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) とサブネットを作成する。 |  | SysAdmin | 
| セキュリティグループとネットワークアクセスコントロールリスト (ACL)を作成する。 |  | SysAdmin | 
| Amazon RDS DB インスタンスを設定し、起動する。 |  | DBA、SysAdmin | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を使用してデータベーススキーマを移行する。 |  | DBA | 
| AWS DMS を使用してデータを移行する。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を使用して、アプリケーションコード内の SQL コードを分析して変換する。 | 詳細については、https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP\$1Converting.App.html を参照してください。 | アプリ所有者 | 
| アプリケーション移行戦略に従う。 |  | DBA、SysAdmin、アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 |  | DBA、SysAdmin、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、SysAdmin | 
| プロジェクト文書を確認して検証する。 |  | DBA、SysAdmin | 
| 移行までの時間、手動とツールの比率、コスト削減などの指標を収集する。 |  | DBA、SysAdmin | 
| プロジェクトを終了し、フィードバックを提供します。 |  |  | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct-related-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 の料金](https://aws.amazon.com/rds/pricing/)

**チュートリアルと動画**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)
+ [ DMS (ビデオ)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 
+ [Amazon RDS (ビデオ)](https://www.youtube.com/watch?v=igRfulrrYCo) 

# 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/)」 

# AWS DMS と AWS SCT を使用して Oracle データベースを Amazon Redshift に移行する
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct"></a>

*Amazon Web Services、Piyush Goyal および Brian Motzer*

## 概要
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-summary"></a>

このパターンは、AWS Database Migration Service (AWS DMS) (AWS DMS) と AWS Schema Conversion Tool (AWS SCT) を使用して Oracle データベースをAmazon Web Services (AWS) クラウド内の Amazon Redshift クラウドデータウェアハウスに移行するためのガイダンスを提供します。このパターンは、オンプレミスまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにインストールされているソース Oracle データベースを対象としています。Oracle Amazon Relational Database Service (Amazon RDS) についても説明します。

## 前提条件と制限事項
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-prereqs"></a>

**前提条件**
+ オンプレミスのデータセンターまたは AWS クラウドで実行されている Oracle データベース
+ アクティブな AWS アカウント
+ Oracle データベースを 「[AWS DMS のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」ことに精通していること
+ 「[Amazon Redshift データベースを AWS DMS のターゲット](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html)」として使用することについての知識
+ Amazon RDS、Amazon Redshift、該当するデータベーステクノロジー、および SQL に関する知識
+ AWS SCT がインストールされている AWS SCT コネクタ用の Java データベース接続 (JDBC) ドライバー

製品バージョン
+ セルフマネージド型 Oracle データベースの場合、AWS DMS ではバージョン 10.2 以降 (バージョン 10.*x* の場合)、11g から 12.2、18c、19c までのすべての Oracle データベースエディションに対応しています。 AWS が 管理する Amazon RDS for Oracle Database の場合、 AWS DMS はバージョン 11g (バージョン 11.2.0.4 以降) および 12.2、18c、19c までのすべての Oracle データベースエディションに対応しています。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。

## アーキテクチャ
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-architecture"></a>

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

次のいずれかです:
+ オンプレミスの Oracle データベース
+ EC2 インスタンス上の Oracle データベース
+ Amazon RDS for Oracle DB インスタンス。

**ターゲットテクノロジースタック**
+ Amazon Redshift

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

AWS クラウドで実行されている Oracle データベースから Amazon Redshift へ:

![\[AWS クラウド内の Oracle データベースを Amazon Redshift データウェアハウスに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/22807be0-c7e0-49c6-8923-7d23bf83a50d/images/7140e819-81d6-45c4-805b-8e10828076a7.png)


オンプレミスのデータセンターで実行されている Oracle データベースから Amazon Redshift へ:

![\[オンプレミスの Oracle データベースを Amazon Redshift データウェアハウスに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/22807be0-c7e0-49c6-8923-7d23bf83a50d/images/d6654b48-0e1b-4b01-a261-5a640be01fd7.png)


## ツール
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-tools"></a>
+ 「[AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」- AWS データ移行サービス (AWS DMS) は、データベースを AWS に迅速かつ安全に移行するのに役立ちます。移行中でもソースデータベースが完全に維持され、このデータベースを利用するアプリケーションのダウンタイムは最小限に抑えられます。AWS DMS は、広く普及しているほとんどの商用データベースとオープンソースデータベース間のデータ移行にご利用いただけます。 
+ 「[AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」- AWS Schema Conversion Tool (AWS SCT) を使用して、既存のデータベーススキーマをあるデータベースエンジンから別のデータベースエンジンに変換できます。Oracle、SQL Server、PostgresSQL など、さまざまなデータベースエンジンをソースとしてサポートしています。

## エピック
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベースのバージョンを検証します。 | ソースとターゲットのデータベースバージョンを検証し、それらが AWS DMS でサポートされていることを確認します。サポートされている Oracle データベースのバージョンについては、「[Oracle データベースを AWS DMS のソースとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。ターゲットとして Amazon Redshift を使用する方法については、「[AWS DMS のターゲットとしての Amazon Redshift データベースの使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html)」を参照してください。 | DBA | 
| VPC とセキュリティグループを作成します。 | AWS アカウントに存在しない場合、仮想プライベートクラウド (VPC) を作成します。ソースデータベースとターゲットデータベースへのアウトバウンドトラフィック用のセキュリティグループを作成します。詳細については、[Amazon Virtual Private Cloud (Amazon VPC) ドキュメント](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) を参照してください。 | システム管理者 | 
| AWS SCT をインストールします。 | AWS SCT の最新バージョンと対応するドライバーをダウンロードしてインストールします。詳細については、「[ AWS SCTのインストール、検証、及び更新](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html)」を参照してください。 | DBA | 
| AWS DMS タスクのユーザーを作成します。 | ソースデータベースに AWS DMS ユーザーを作成し、それに READ 権限を付与します。このユーザーは AWS SCT と AWS DMS の両方で使用されます。 | DBA | 
| DB 接続をテストします。 | Oracle DB インスタンスへの接続をテストします。 | DBA | 
| AWS SCT で新しいプロジェクトを作成します。 | AWS SCT ツールを開き、新しいプロジェクトを作成します。 | DBA | 
| 移行する Oracle スキーマを分析します。 | AWS SCT を使用して移行するスキーマを分析し、データベース移行評価レポートを生成します。詳細については、AWS SCT ドキュメントの「[データベース移行評価レポートの作成](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.Create.html)」 を参照してください。 | DBA | 
| 評価レポートをレビューします。 | 移行の可否についてレポートを確認します。一部の DB オブジェクトが手動の変換が必要です。レポートの詳細については、AWS SCT ドキュメントの「[評価レポートの表示](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.View.html)」 を参照してください。 | DBA | 

### ターゲットデータベースの準備
<a name="prepare-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Redshift クラスターを作成します。 | 先程作成した VPC 内に Amazon Redshift クラスターを作成します。詳細については、Amazon Redshift ドキュメントの 「[Amazon Redshift クラスター](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)」を参照してください。 | DBA | 
| データベースユーザーを作成する。 | Oracle ソースデータベースからユーザ、ロール、権限のリストを抽出します。ターゲット Amazon Redshift データベースにユーザーを作成し、前のステップのロールを適用します。 | DBA | 
| データベースのパラメータを評価します。 | Oracle ソースデータベースのデータベースオプション、パラメータ、ネットワークファイル、およびデータベースリンクを確認し、ターゲットへの適用性を評価します。            | DBA | 
| 関連する設定をターゲットに適用します。 | このステップの詳細については、Amazon Redshift ドキュメントの「[設定リファレンス](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_ConfigurationRef.html)」を参照してください。 | DBA | 

### ターゲットデータベースにオブジェクトを作成する
<a name="create-objects-in-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースに AWS DMS ユーザーを作成します。 | ターゲットデータベースに AWS DMS ユーザーを作成し、読み取り権限と書き込み権限を付与します。AWS SCT からの接続を検証します。 | DBA | 
| スキーマを変換し、SQL レポートを確認して、エラーや警告を保存します。 | 詳細については、AWS SCT ドキュメントの 「[AWS SCT を使用したデータベーススキーマの変換](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html)」を参照してください。 | DBA | 
| スキーマの変更をターゲットデータベースに適用するか、.sql ファイルとして保存します。 | 手順については、AWS SCT ドキュメントの 「[AWS SCT の「変換されたスキーマの保存と適用](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.DW.html#CHAP_Converting.DW.SaveAndApply)」を参照してください。 | DBA | 
| ターゲットデータベースのオブジェクトを検証します。 | 前のステップで作成されたオブジェクトをターゲットデータベースで検証します。正常に変換されなかったオブジェクトはすべて書き直すか、再設計します。 | DBA | 
| 外部キーとトリガーを無効にします。 | 外部キーとトリガーをすべて無効にします。これにより、AWS DMS の実行時に全ロードプロセス中にデータロードの問題が発生する可能性があります。 | DBA | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS レプリケーションインスタンスを作成します。 | AWS マネジメントコンソール にサインインし、AWS DMS コンソールを開きます。ナビゲーションペインで、レプリケーション インスタンスを選択し、次にレプリケーション インスタンスを作成します。詳細な手順については、AWS DMS ドキュメントの「*Getting started with AWS DMS*」の[ステップ 1](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.ReplicationInstance) を参照してください。 | DBA | 
| ソースおよびターゲットエンドポイントを作成します。 | ソースエンドポイントとターゲットエンドポイントを作成し、レプリケーションインスタンスからソースエンドポイントとターゲットエンドポイントの両方への接続をテストします。詳細な手順については、AWS DMS ドキュメントの「*Getting started with AWS DMS*」の[ステップ 2](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Endpoints) を参照してください。 | DBA | 
| レプリケーションタスクを作成します。 | レプリケーションタスクを作成し、適切な移行方法を選択します。詳細な手順については、AWS DMS ドキュメントの「*Getting started with AWS DMS*」の[ステップ 3](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Tasks) を参照してください。 | DBA | 
| データレプリケーションを開始する。 | レプリケーションタスクを開始し、ログにエラーがないか監視します。 | DBA | 

### アプリケーションを移行する
<a name="migrate-your-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションサーバーを作成します。 | AWS に新しいアプリケーションサーバーを作成します。 | アプリ所有者 | 
| アプリケーションコードを移行します。 | アプリケーションコードを新しいサーバーに移行します。 | アプリ所有者 | 
| アプリケーションサーバーを設定します。 | ターゲットデータベースとドライバー用にアプリケーションサーバーを設定します。 | アプリ所有者 | 
| アプリケーションコードを最適化します。 | ターゲットエンジンに合わせてアプリケーションコードを最適化します。 | アプリ所有者 | 

### ターゲットデータベースにカットオーバーする
<a name="cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ユーザーを検証。 | ターゲット Amazon Redshift データベースで、ユーザーを検証し、ロールと権限を付与します。 | DBA | 
| アプリケーションがロックされていることを確認します。 | 今後変更されないように、アプリケーションがロックされていることを確認します。 | アプリ所有者 | 
| データを検証します。 | ターゲットの Amazon Redshift データベース内のデータを検証します。 | DBA | 
| 外部キーとトリガーを有効にします。 | ターゲット Amazon Redshift データベースで外部キーとトリガーを有効にします。 | DBA | 
| 新しいデータベースに接続します。 | 新しい Amazon Redshift データベースに接続するようにアプリケーションを設定します。 | アプリ所有者 | 
| 最終チェックを行います。 | 本番稼働前に、最終的かつ包括的なシステムチェックを行います。 | DBA、アプリ所有者 | 
| 本番稼働。 | ターゲットの Amazon Redshift データベースで稼働を開始します。 | DBA | 

### 移行プロジェクトを閉じます
<a name="close-the-migration-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 | AWS DMS レプリケーションインスタンスや AWS SCT に使用される EC2 インスタンスなどの一時的な AWS リソースをシャットダウンします。  | DBA、システム管理者 | 
| 文書を確認する。 | 移行プロジェクトドキュメントを確認して検証します。    | DBA、システム管理者 | 
| メトリクスを収集します。 | 移行にかかる時間、手動タスクとツールタスクの比率、総コスト削減額など、移行プロジェクトに関する情報を収集します。  | DBA、システム管理者 | 
| プロジェクトを終了します。 | プロジェクトを終了し、フィードバックを提供します。 | DBA、システム管理者 | 

## 関連リソース
<a name="migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct-resources"></a>

リファレンス
+ 「[ AWS DMS ユーザーガイド](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 
+ 「[AWS SCT ユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」 
+ 「[Amazon Redshift 入門ガイド](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)」 

**チュートリアルと動画**
+ 「[AWS SCT と AWS DMS について深く掘り下げてみよう](https://www.youtube.com/watch?v=kJs9U4ys5FE)」 (AWS re: Invent 2019 からのプレゼンテーション)
+ [AWS Database Migration Service の使用開始](https://aws.amazon.com/dms/getting-started/)

# AWS DMS と AWS SCT を使用して Oracle データベースを Aurora PostgreSQL に移行
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct"></a>

*Amazon Web Services、Senthil Ramasamy*

## 概要
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-summary"></a>

このパターンでは、AWS データ移行サービス (AWS DMS) と AWS Schema Conversion Tool (AWS SCT) を使用して Oracle データベースを Amazon Aurora PostgreSQL 互換エディションに移行する方法を説明します。 

このパターンは、オンプレミスの Oracle ソース Oracle データベース、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにをインストールする Oracle データベース、および Oracle データベースの Amazon Relational Database Service (Amazon RDS) を対象としています。このパターンは、これらのデータベースを Aurora PostgreSQL 互換に変換します。

## 前提条件と制限
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ オンプレミスデータセンターまたは AWS クラウドにある Oracle データベース。
+ ローカルマシンまたは EC2 インスタンスにインストールされた SQL クライアント。
+ AWS SCT コネクタ用の Java データベース接続 (JDBC) ドライバー。ローカルマシンまたは AWS SCT がインストールされている EC2 インスタンスにインストールされます。

**制限事項**
+ データベースサイズの上限:128 TB 
+ ソースデータベースが市販の (COTS) アプリケーションをサポートしているか、ベンダー固有の場合、別のデータベースエンジンに変換できない場合があります。このパターンを使用する前に、アプリケーションが Aurora PostgreSQL 互換をサポートしていることを確認します。 

製品バージョン
+ セルフ マネージド 型 Oracle データベースの場合、AWS DMS ではバージョン 10.2 以降(バージョン 10.x の場合)、11g から 12.2、18c、19c までのすべての Oracle データベースエディションに対応しています。サポートされている Oracle データベースバージョン (自己管理型と Oracle Amazon RDS for Oracle の両方) の最新リストについては、「[Oracle データベースを AWS DMS のソースとして使用する](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)」 を参照してください。
+ 最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。AWS SCT でサポートされている Oracle データベースのバージョンについては、「[AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」を参照してください。 
+ 「[Aurora PostgreSQL リリースおよびエンジンのバージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html)」 は Amazon Aurora PostgreSQL リリースおよびエンジンのバージョンで管理されています。

## アーキテクチャ
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-architecture"></a>

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

次のいずれかです:
+ オンプレミスの Oracle データベース
+ EC2 インスタンス上の Oracle データベース  
+ Amazon RDS for Oracle DB インスタンス。

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換 

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

![\[Oracle データベースを Aurora PostgreSQL 互換に移行するためのターゲットアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/68beb634-926e-4908-97b1-edcd23e06a2b.png)


**データ移行アーキテクチャ**
+ AWS クラウドで実行する Oracle データベースから   
![\[AWS 上の Oracle データベースのデータ移行アーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/7fc32019-3db1-485b-93e5-6d5539be048c.png)

   
+ オンプレミスデータセンターで実行する Oracle データベースから  
![\[オンプレミスデータセンターの Oracle データベースのデータ移行アーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/c70d8774-aef7-4414-9766-ce8f25757c4b.png)

## ツール
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-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)」は、ソースデータベーススキーマと大部分のカスタムコード (ビュー、ストアドプロシージャ、関数など) をターゲットデータベースと互換性のある形式に自動的に変換し、異種データベースを簡単に移行できるようにします。

## エピック
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースを準備します。 | ソースデータベースを準備するには、AWS SCT ドキュメントの「[Oracle データベースを AWS SCT のソースとして使用する](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。 | DBA | 
| AWS SCT の EC2 インスタンスを作成します。 | 必要に応じて AWS SCT の EC2 インスタンスを作成して設定します。 | DBA | 
| AWS SCT をダウンロードします。 | AWS SCT および関連ドライバーの最新バージョンをダウンロードします。詳細については、AWS SCT ドキュメントの「[AWS SCT のインストール、検証、更新](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html)」を参照してください。 | DBA | 
| ユーザーおよびアクセス許可を追加します。 | ソースデータベースに前提条件となるユーザーと権限を追加して検証します。 | DBA | 
| AWS SCT プロジェクトを作成します。 | ワークロード用の AWS SCT プロジェクトを作成し、ソースデータベースに接続します。手順については、AWS SCT ドキュメントの「[AWS SCT プロジェクトの作成](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Project)」と「[データベースサーバーの追加](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AddServers)」を参照してください。 | DBA | 
| 実現可能性を評価します。 | 自動的に変換できないスキーマのアクション項目を要約し、手作業による変換作業の見積もりを記載した評価レポートを作成します。詳細については、AWS SCT ドキュメントの「[データベース移行評価レポートの作成とレビュー](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport)」を参照してください。 | DBA | 

### ターゲットデータベースの準備
<a name="prepare-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS DB インスタンスを作成します。 | Amazon Aurora をデータベースエンジンとして使用して、ターゲット Amazon RDS DB インスタンスを作成します。手順については、Amazon RDS ドキュメントの「[Amazon RDS DB インスタンスの作成](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)」を参照してください。 | DBA | 
| ユーザ、ロール、権限を抽出します。 | ユーザー、ロール、権限のリストをソースデータベースから抽出します。 | DBA | 
| ユーザーをマップします。 | 既存のデータベースユーザーを新しいデータベースユーザーにマッピングします。 | アプリ所有者 | 
| ユーザーを作成します。 | ターゲットデータベースにユーザーを作成します。 | DBA、アプリ所有者 | 
| ロールを適用します。 | 前のステップのロールをターゲットデータベースに適用します。 | DBA | 
| オプション、パラメータ、ネットワークファイル、データベースリンクをチェックします。 | ソースデータベースでオプション、パラメーター、ネットワークファイル、データベースリンクを確認し、ターゲットデータベースへの適用性を評価します。 | DBA | 
| 設定を適用します。 | ターゲットデータベースに関連する設定を適用します。 | DBA | 

### オブジェクトを転送
<a name="transfer-objects"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT 接続を設定します。 | ターゲットデータベースへの AWS SCT 接続を設定します。 | DBA | 
| AWS SCT を使用してスキーマを変換します。 | AWS SCT は、ソースデータベーススキーマとほとんどのカスタムコードをターゲットデータベースと互換性のある形式に自動的に変換します。ツールで自動的に変換されないコードが明確にマークされ、手動で変換できます。 | DBA | 
| レポートを確認します。 | 生成された SQL レポートを確認し、エラーと警告をすべて保存します。 | DBA | 
| 自動スキーマ変更を適用します。 | 自動スキーマ変更をターゲットデータベースに適用するか、sql ファイルとして保存します。 | DBA | 
| オブジェクトを検証します。 | AWS SCT がターゲット上にオブジェクトを作成したことを確認します。 | DBA | 
| 変換されなかった項目を処理します。 | 自動的に変換できなかった項目は手動で書き換え、却下、または再設計します。 | DBA、アプリ所有者 | 
| ロールとユーザー権限を適用します。 | 生成されたロールとユーザー権限を適用し、例外がないか確認します。 | DBA | 

### データを移行する
<a name="migrate-the-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 方法を決めます。 | データを移行する方法を決めます。 | DBA | 
| レプリケーションインスタンスを作成します。 | AWS DMS コンソールからレプリケーションインスタンスを作成します。詳細については、AWS DMS ドキュメントの 「[AWS DMS レプリケーションインスタンスの使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html)」を参照してください。 | DBA | 
| ソースおよびターゲットエンドポイントを作成します。 | エンドポイントを作成するには、AWS DMS ドキュメントの「[ソースエンドポイントとターゲットエンドポイントの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html)」の手順に従います。 | DBA | 
| レプリケーションタスクを作成します。 | タスクを作成するには、AWS DMS ドキュメントの「[AWS DMS タスクの操作](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html)」を参照してください。 | DBA | 
| レプリケーションタスクを開始し、ログを監視します。 | この手順の詳細については、「[AWS DMS タスクの監視](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html)」を参照してください。 | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションコード内の SQL 項目を分析して変換します。 | AWS SCT を使用して、アプリケーションコード内の SQL 項目を分析および変換します。エンジン間でデータベーススキーマを変換するときは、古いデータベースエンジンの代わりに新しいデータベースエンジンとやり取りするように、アプリケーションの SQL コードを更新する必要があります。変換された SQL コードは表示、分析、編集、保存できます。 | アプリ所有者 | 
| アプリケーションサーバーを作成します。 | AWS に新しいアプリケーションサーバーを作成します。 | アプリ所有者 | 
| アプリケーションコードを移行します。 | アプリケーションコードを新しいサーバーに移行します。 | アプリ所有者 | 
| アプリケーションサーバーを設定します。 | ターゲットデータベースとドライバーにアプリケーションサーバーを設定します。 | アプリ所有者 | 
| コードを修正します。 | アプリケーションのソースデータベースエンジンに固有のコードを修正します。 | アプリ所有者 | 
| コードを最適化します。 | ターゲットデータベースエンジンに合わせてアプリケーションコードを最適化します。 | アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースにカットオーバーする | 新しいデータベースへのカットオーバーを実行します。 | DBA | 
| アプリケーションをロックします。 | これ以上変更されないようにアプリケーションをロックします。 | アプリ所有者 | 
| 変更を検証します。 | すべての変更がターゲットデータベースに反映されたことを検証します。 | DBA | 
| ターゲットデータベースにリダイレクトします。 | 新しいアプリケーションサーバーをターゲットデータベースにポイントします。 | アプリ所有者 | 
| すべてチェックします。 | 最終的かつ包括的なシステムチェックを行います。 | アプリ所有者 | 
| 本番稼働。 | 最終的なカットオーバータスクを完了します。 | アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的なリソースをシャットダウンします。 | AWS DMS レプリケーションインスタンスや AWS SCT に使用される EC2 インスタンスなどの一時的な AWS リソースをシャットダウンします。 | DBA、アプリ所有者 | 
| フィードバックを更新します。 | 社内チーム向けの AWS DMS プロセスに関するフィードバックを更新します。 | DBA、アプリ所有者 | 
| プロセスとテンプレートを改訂します。 | AWS DMS プロセスを改訂し、必要に応じてテンプレートを改善します。 | DBA、アプリ所有者 | 
| ドキュメントを検証します。 | プロジェクト文書を確認して検証する。 | DBA、アプリ所有者 | 
| メトリクスを収集します。 | メトリクスを収集して、移行に要する時間、手動によるコスト削減とツールのコスト削減率などを評価します。 | DBA、アプリ所有者 | 
| プロジェクトを閉じます。 | 移行プロジェクトを終了し、利害関係者にフィードバックを提供します。 | DBA、アプリ所有者 | 

## 関連リソース
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-resources"></a>

**リファレンス**
+ 「[AWS DMS のソースとして Oracle データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」 
+ 「[PostgreSQL データベースを AWS Database Migration Service のターゲットとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)」 
+ 「[Oracle Database 11g/12c から PostgreSQL 互換の Amazon Aurora (9.6.x) への移行プレイブック](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf)」 
+ 「[Oracle Database 19c から PostgreSQL 互換 (12.4) 対応 Amazon Aurora への移行プレイブック](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook-12.4.pdf)」
+ 「[Amazon RDS for Oracle データベースから Amazon Aurora PostgreSQL 互換エディションへの移行](https://docs.aws.amazon.com/dms/latest/sbs/chap-oracle-postgresql.html)」
+ 「[AWS Database Migration Service](https://aws.amazon.com/dms/)」
+ 「[AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」 
+ 「[Oracle から Amazon Aurora への移行](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)」
+ 「[Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/)」

**チュートリアルと動画**
+ 「[データベース移行の段階的説明](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)」
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」
+ 「[AWS Data Migration Service (動画)](https://www.youtube.com/watch?v=zb4GcjEdl8U)」 
+ 「[Oracle データベースの PostgreSQL への移行](https://www.youtube.com/watch?v=ibtNkChGFkw)」 (動画)

## 追加情報
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-additional"></a>

.

# オンプレミスの Oracle データベースから Aurora PostgreSQL にデータを移行する
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql"></a>

*Amazon Web Services、Michelle Deng、Shunan Xiang*

## 概要
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-summary"></a>

このパターンは、オンプレミスの Oracle データベースから Amazon Aurora PostgreSQL 互換エディションにデータを移行する方法について説明しています。これは、高度なデータ操作言語 (DML) アクティビティが多い大規模なテーブルを含む、マルチテラバイトの Oracle データベースのダウンタイムを最小限に抑えたオンライン データ移行戦略を対象としています。Oracle Active Data Guard スタンバイデータベースをソースとして使用し、プライマリデータベースからのデータ移行の負荷を軽減します。Oracle プライマリデータベースからスタンバイデータベースへのレプリケーションは、ORA-01555 エラーを回避するため、フルロード中は中断できます。 

通常、NUMBER データ型のプライマリキー (PK) または外部キー (FK) のテーブル列は、Oracle で整数を格納するために使用されます。パフォーマンスを向上させるために、PostgreSQL ではこれらを INT または BIGINT に変換することをお勧めします。AWS Schema Conversion Tool (AWS SCT) を使用して、PK 列と FK 列のデフォルトのデータ型マッピングを変更できます。(詳細については、 AWS ブログ記事[「NUMBER データ型を Oracle から PostgreSQL に変換する](https://aws.amazon.com/blogs/database/convert-the-number-data-type-from-oracle-to-postgresql-part-2/)」を参照してください）。このパターンのデータ移行では、フルロードと変更データキャプチャ (CDC) の両方に AWS Database Migration Service (AWS DMS) を使用します。

また、このモードを使用して、オンプレミス Oracle データベースを Postgre SQL 用のAmazon Relational Database Service (Amazon RDS) に移行したり、Amazon Elastic Compute Cloud (Amazon EC2) 上でホスティングされている Oracle データベースを Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換に移行することもできます。

## 前提条件と制限事項
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Active Data Guard スタンバイが構成されたオンプレミス データセンター内の Oracle ソース データベース 
+ オンプレミスデータセンターと AWS クラウドの間に AWS Direct Connect が構成されています
+ [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)ことに精通している

**制限事項**
+ Amazon Aurora データベースクラスターは、最大 128 TiB のストレージを作成できます。Amazon RDS for PostgreSQL データベースインスタンスは、最大 64 TiB のストレージを作成できます。最新のストレージ情報については、AWS ドキュメントの「[Amazon Aurora のストレージと信頼性](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html)」および「[Amazon RDS DB インスタンスストレージ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)」を参照してください。

**製品バージョン**
+ AWS DMS は、バージョン 10.2 以降 (バージョン 10.x の場合)、11g から 12.2、18c、19c までのすべての Oracle データベースエディションに対応しています。サポートされているバージョンの最新リストについては、AWS ドキュメントの「[AWS DMS のソースとして Oracle データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。

## アーキテクチャ
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-architecture"></a>

**ソーステクノロジースタック**
+ Oracle Active Data Guard スタンバイが構成されたオンプレミスの Oracle データベース 

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換 

**データ移行アーキテクチャ**

![\[Oracle データベースの Aurora PostgreSQL 互換への移行\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/49f9b03e-6d33-4ac0-94ad-d3e6d02e6d63/images/0038a36b-fb7d-4f2d-8376-8d38290b0736.png)


## ツール
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-tools"></a>
+ **AWS DMS** — 「[AWS Database Migration Service](https://docs.aws.amazon.com/dms/index.html)」(AWS DMS) は、複数のソースデータベースとターゲットデータベースをサポートします。サポートされている Oracle のソースデータベースおよびターゲットデータベースのバージョンとエディションのリストについては、AWS DMS ドキュメントの「[AWS DMS のソースとして Oracle データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。ソースデータベースが AWS DMS でサポートされていない場合は、フェーズ 6 (*エピック*セクション) でデータを移行する別の方法を選択する必要があります。**重要な注意:** これは異機種間の移行であるため、まず、データベースが商用オフザシェルフ (COTS) アプリケーションをサポートしているか確認する必要があります。アプリケーションが COTS の場合は、続行する前に、ベンダーに問い合わせて Aurora PostgreSQL 互換がサポートされていることを確認してください。詳細については、AWS ドキュメントの [[AWS DMS の段階的な移行チュートリアル]](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) を参照してください。
+ **AWS SCT** - [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.htm)」(AWS SCT)　は、ソースデータベーススキーマと大部分のカスタムコード をターゲットデータベースと互換性のある形式に自動的に変換し、異種データベースの移行を処理します。ツールが変換されるカスタムコードには、ビュー、ストアドプロシージャ、関数が含まれます。ツールで自動的に変換されないコードは明確にマークされるので、ユーザーが手動で変換できます。 

## エピック
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンを検証します。 |  | DBA | 
| AWS SCT とドライバーをインストールします。 |  | DBA | 
| AWS SCT の前提条件であるユーザーとグラントソースデータベースを追加して検証します。 |  | DBA | 
| ワークロード用の AWS SCT プロジェクトを作成し、ソースデータベースに接続します。 |  | DBA | 
| 評価レポートを生成し、実現可能性を評価します。 |  | DBA、アプリ所有者 | 

### ターゲットデータベースの準備
<a name="prepare-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Aurora PostgreSQL 互換ターゲットデータベースを作成します。 |  | DBA | 
| ソースデータベースからユーザー、ロール、権限リストを抽出します。 |  | DBA | 
| 既存のデータベースユーザーを新しいデータベースユーザーにマッピングします。 |  | アプリ所有者 | 
| ターゲットデータベースにユーザーを作成します。 |  | DBA | 
| 前のステップのロールをターゲット Aurora PostgreSQL 互換データベースに適用します。 |  | DBA | 
| ソースデータベースのデータベースオプション、パラメータ、ネットワークファイル、およびデータベースリンクを確認し、ターゲットデータベースへの適用性を評価します。 |  | DBA、アプリ所有者 | 
| ターゲットデータベースに関連する設定を適用します。 |  | DBA | 

### データベースオブジェクトコード変換の準備を整えます
<a name="prepare-for-database-object-code-conversion"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースへの AWS SCT 接続を設定します。 |  | DBA | 
| AWS SCT でスキーマを変換されたコードを.sql ファイルとして保存します。 |  | DBA、アプリ所有者 | 
| 自動変換に失敗したデータベースオブジェクトをすべて手動で変換します。 |  | DBA、アプリ所有者 | 
| データベースコード変換を最適化します。 |  | DBA、アプリ所有者 | 
| .sql ファイルをオブジェクトタイプに基づいて複数の.sql ファイルに分割します。　 |  | DBA、アプリ所有者 | 
| ターゲットデータベースの SQL スクリプトを確認します。 |  | DBA、アプリ所有者 | 

### 移行の準備をする
<a name="prepare-for-data-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS レプリケーションインスタンスを作成します。 |  | DBA | 
| ソースおよびターゲットエンドポイントを作成します。 | PK と FK のデータ型が Oracle の NUMBER から PostgreSQL の BIGINT に変換されている場合は、ソースエンドポイントを作成するときに接続プロパティ `numberDataTypeScale=-2` を指定することを検討してください。 | DBA | 

### データを移行する — フルロード
<a name="migrate-data-ndash-full-load"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースでスキーマとテーブルを作成します。 |  | DBA | 
|  テーブルをグループ化するか、テーブルサイズに基づいて大きなテーブルを分割することで、AWS DMS のフルロードタスクを作成します。 |  | DBA | 
| ソース Oracle データベース上のアプリケーションを短時間にわたり停止します。 |  | アプリ所有者 | 
| Oracle スタンバイデータベースがプライマリデータベースと同期していることを確認し、プライマリデータベースからスタンバイデータベースへのレプリケーションを停止します。 |  | DBA、アプリ所有者 | 
| アプリケーションをソース Oracle データベースで起動します。 |  | アプリ所有者 | 
| Oracle スタンバイデータベースから Aurora PostgreSQL 互換データベースへの AWS DMS フルロード タスクを並行して開始します。 |  | DBA | 
| フルロードが完了後、PK とセカンダリインデックスを作成します。 |  | DBA | 
| データを検証します。 |  | DBA | 

### データを移行する — CDC
<a name="migrate-data-ndash-cdc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle スタンバイデータベースがプライマリデータベースと同期され、前のタスクでアプリケーションが再起動される前に、カスタム CDC 開始時間またはシステム変更番号 (SCN) を指定して、AWS DMS の進行中のレプリケーションタスクを作成します。 |  | DBA | 
| AWS DMS タスクを並行して開始し、進行中の変更を Oracle スタンバイデータベースから Aurora PostgreSQL 互換データベースに複製します。 |  | DBA | 
| Oracle プライマリデータベースからスタンバイデータベースへのレプリケーションを再確立します。 |  | DBA | 
| ターゲット Aurora PostgreSQL 互換データベースがソース Oracle データベースとほぼ同期した後、ログをモニタリングし、Oracle データベース上のアプリケーションを停止します。 |  | DBA、アプリ所有者 | 
| ターゲットがソース Oracle データベースと完全に同期されたら、AWS DMS タスクを停止します。 |  | DBA | 
| FK を作成し、ターゲットデータベースのデータを検証します。 |  | DBA | 
| ターゲットデータベースに関数、ビュー、トリガー、シーケンス、その他のオブジェクトタイプを作成します。 |  | DBA | 
| ターゲットデータベースにロールの権限を適用します。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を使用して、アプリケーションコード内の SQL ステートメントを分析および変換します。 |  | アプリ所有者 | 
| AWS に新しいアプリケーションサーバーを作成します。 |  | アプリ所有者 | 
| アプリケーションコードを新しいサーバーに移行します。 |  | アプリ所有者 | 
| ターゲットデータベースとドライバー用にアプリケーションサーバーを設定します。 |  | アプリ所有者 | 
| アプリケーションのソースデータベースエンジンに固有のコードを修正します。 |  | アプリ所有者 | 
| ターゲットデータベースに合わせてアプリケーションコードを最適化します。 |  | アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 新しいアプリケーションサーバーをターゲットデータベースにポイントします。 |  | DBA、アプリ所有者 | 
| 健全性チェックを実行します。 |  | DBA、アプリ所有者 | 
| 本番稼働。 |  | DBA、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、システム管理者 | 
| プロジェクト文書を確認して検証する。 |  | DBA、アプリ所有者 | 
| 移行の所要時間、手動タスクとツールによるタスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、アプリ所有者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  | DBA、アプリ所有者 | 

## 関連リソース
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-resources"></a>

**リファレンス**
+ 「[Oracle Database から Aurora PostgreSQL 互換への移行プレイブック](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf)」 
+ 「[Amazon RDS for Oracle Database から Amazon Aurora MySQLへの移行](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.html)」
+ [AWS DMS ウェブサイト](https://aws.amazon.com/dms/)
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ 「[AWS SCT ウェブサイト](https://aws.amazon.com/dms/schema-conversion-tool/)」
+ [AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ 「[Oracle から Amazon Aurora への移行](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)」

**チュートリアル**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/) 
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」
+ 「[AWS Database Migration Service のステップバイステップチュートリアル](https://docs.aws.amazon.com/dms/latest/sbs/dms-sbs-welcome.html)」

# AWS DMS を使用して SAP ASE から Amazon RDS for SQL Server）に移行する
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms"></a>

*Amazon Web Services、Amit Kumar*

## 概要
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-summary"></a>

このパターンは、SAP Adaptive Server Enterprise (ASE) データベースを、Microsoft SQL サーバーを実行している Amazon Relational Database Service (Amazon RDS) DB インスタンスに移行させるためのガイダンスを提供します。ソースデータベースは、オンプレミスのデータセンターに配置することも、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに配置することもできます。このパターンでは、AWS Database Migration Service (AWS DMS) を使用してデータ移行を行い、(オプションで) コンピューター支援ソフトウェアエンジニアリング (CASE) ツールを使用してデータベーススキーマを変換します。

## 前提条件と制限事項
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターまたは EC2 インスタンスにある SAP ASE データベース
+ 稼働中のターゲット Amazon RDS for SQL Server データベース

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

**製品バージョン**
+ SAP ASE バージョン 15.7 または 16.x のみ。最新情報については、「[SAP データベースを DMS のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)」を参照してください。
+ Amazon RDS ターゲットデータベースの場合、AWS DMS は Enterprise、Standard、Web、および Express の各エディションで[Amazon RDS の Microsoft SQL Server バージョン](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)をサポートします。サポートされているバージョンの最新情報については、[ DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html)を参照してください。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。 

## アーキテクチャ
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスまたは Amazon EC2 インスタンスにある SAP ASE データベース

**ターゲットテクノロジースタック**
+ Amazon RDS for SQL Server の DB インスタンス

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

*Amazon EC2 上の SAP ASE データベースから Amazon RDS for SQL Server DB インスタンスへ*

![\[Amazon EC2 上の SAP ASE から Amazon RDS for SQL Server への移行のターゲットアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5ca697a2-9ca3-4231-b457-c1dc59ada5f1/images/957bdcf0-ab58-4b6d-a71a-d0ecbc31822c.png)


*オンプレミスの SAP ASE Database から Amazon RDS for SQL Server）DB インスタンスへ*

![\[オンプレミスの SAP ASE から Amazon RDS for SQL Server への移行のターゲットアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5ca697a2-9ca3-4231-b457-c1dc59ada5f1/images/65aab2f5-0e63-4c34-97e2-cd4ac23751a4.png)


## ツール
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-tools"></a>
+ [AWS Database Migration Service](https://docs.aws.amazon.com/dms/) (AWS DMS) は、オンプレミスであるか、Amazon RDS DB インスタンス上にある、または EC2 インスタンス内のデータベースから、Amazon RDS for SQL Server や EC2 インスタンスなどの AWS サービス上のデータベースにデータを移行するために使用できるウェブサービスです。データベースを AWS Service からオンプレミスのデータベースに移行することもできます。異種または同種のデータベースエンジン間でデータを移行できます。
+ スキーマの変換には、オプションで [erwin Data Modeler](https://erwin.com/products/erwin-data-modeler/) または [SAP PowerDesigner](https://www.sap.com/products/technology-platform/powerdesigner-data-modeling-tools.html) を使用できます。

## エピック
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンを検証します。 |  | DBA | 
| ストレージ要件 (ストレージタイプと容量) を識別します。 |  | DBA、SysAdmin | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、SysAdmin | 
| ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。 |  | DBA、SysAdmin | 
| アプリケーション移行戦略を特定します。 |  | DBA、SysAdmin、アプリ所有者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) とサブネットを作成する。 |  | SysAdmin | 
| セキュリティグループとネットワークアクセスコントロールリスト (ACL) を作成します。 |  | SysAdmin | 
| Amazon RDS DB インスタンスを構成して起動します。 |  | SysAdmin | 

### データ移行 - オプション 1
<a name="migrate-data---option-1"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベーススキーマを手動で移行するか、erwin Data Modeler や SAP PowerDesigner などの CASE ツールを使用します。 |  | DBA | 

### データ移行 — オプション 2
<a name="migrate-data---option-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS を使用してデータを移行します。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 |  | DBA、SysAdmin、アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 |  | DBA、SysAdmin、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、SysAdmin | 
| プロジェクト文書を確認して検証する。 |  | DBA、SysAdmin、アプリ所有者 | 
| 移行の所要時間、手動タスクと自動タスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、SysAdmin、アプリ所有者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  | DBA、SysAdmin、アプリ所有者 | 

## 関連リソース
<a name="migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms-resources"></a>

**リファレンス**
+ [AWS DMS ウェブサイト](https://aws.amazon.com/dms/)
+ [Amazon SNS の価格設定](https://aws.amazon.com/rds/pricing/)
+ [SAP ASE データベースの DMS のソースとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)
+ [RDS Custom for SQL Server の制限事項](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html)

**チュートリアルと動画**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)
+ [ DMS (ビデオ)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 
+ [Amazon RDS (ビデオ)](https://www.youtube.com/watch?v=igRfulrrYCo) 

# AWS DMS を使用してオンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行する
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms"></a>

*Amazon Web Services、Marcelo Fernandes*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-summary"></a>

このパターンは、AWS Data Migration Service (AWS DMS) を使用してオンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行するためのガイダンスを提供します。

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターにあるソース Microsoft SQL Server データベース
+ [AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html#CHAP_Target.Redshift.Prerequisites)で説明されている Amazon Redshift データベースを AWS DMS のターゲットとして使用するための前提条件を完了

**製品バージョン**
+ SQL Server 2005～2019、Enterprise、Standard、Workgroup、Developer、および Web エディション サポートされているバージョンの最新リストについては、AWS ドキュメントの [AWS DMS のソースとして Microsoft SQL Server データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)を参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス Microsoft SQL Server データベース 

**ターゲットテクノロジースタック**
+ Amazon Redshift

**データ移行アーキテクチャ**

 

![\[AWS DMS を使用してオンプレミス SQL Server データベースを Amazon Redshiftに移行するアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/65b2be1b-740e-4d4d-99a8-f77c4ea6553d/images/3a094bf2-be31-4d83-8dd2-9dc078321055.png)


## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) は、複数のタイプのソースデータベースとターゲットデータベースをサポートするデータ移行サービスです。AWS DMS での使用がサポートされている Microsoft SQL Server データベースのバージョンとエディションについては、AWS DMS ドキュメントの [AWS DMS のソースとして Microsoft SQL Server データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)を参照してください。AWS DMS がソースデータベースをサポートしていない場合は、データ移行の代替方法を選択する必要があります。

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンとエンジンを検証します。 |  | DBA | 
| ターゲットサーバーインスタンスのハードウェア要件を識別します。 |  | DBA、システム管理者 | 
| ストレージ要件 (ストレージタイプと容量) を識別します。 |  | DBA、システム管理者 | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、システム管理者 | 
| ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。 |  | DBA、システム管理者 | 
| アプリケーション移行戦略を特定します。 |  | DBA、アプリ所有者、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 | 詳細については、[VPC での DB インスタンスの操作](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)を参照してください。 | システム管理者 | 
| セキュリティグループを作成します。 |  | システム管理者 | 
| Amazon Redshift クラスターを設定して起動します。 | 詳細については、Amazon Redshift ドキュメントの [Amazon Redshift クラスターのサンプルを作成する](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-launch-sample-cluster.html)を参照してください。 | DBA、システム管理者 | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS を使用して Microsoft SQL Server データベースからデータを移行します。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 |  | DBA、アプリ所有者、システム管理者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替ます。 |  | DBA、アプリ所有者、システム管理者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、システム管理者 | 
| プロジェクト文書を確認して検証する。 |  | DBA、アプリ所有者、システム管理者 | 
| 移行の所要時間、手動タスクと自動タスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  | DBA、アプリ所有者、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms-resources"></a>

**リファレンス**
+ [AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/index.html)
+ [Amazon Redshift ドキュメント](https://docs.aws.amazon.com/redshift/)
+ [Amazon Redshift の価格設定](https://aws.amazon.com/redshift/pricing/)

**チュートリアルと動画**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [Amazon Redshift の使用開始](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)
+ [AWS Database Migration Service のターゲットとして Amazon Redshift データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Redshift.html)
+ [AWS DMS (動画)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 

# AWS SCT データ抽出エージェントを使用して、オンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行する
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents"></a>

*Amazon Web Services、Neha Thakur*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-summary"></a>

このパターンは、AWS Schema Conversion Tool (AWS SCT) データ抽出エージェントを使用して、オンプレミス Microsoft SQL Server ソースデータベースを Amazon Redshift ターゲットデータベースに移行する手順の概要を示しています。エージェントは AWS SCT と統合されていますが、データ変換は他の場所で実行し、ユーザーに代わって他の AWS サービスとインタラクトする外部プログラムです。  

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-prereqs"></a>

**前提条件**
+ オンプレミスデータセンターのデータウェアハウスワークロードに使用される Microsoft SQL Server ソースデータベース
+ アクティブな AWS アカウント

**製品バージョン**
+ Microsoft SQL Server バージョン 2008 以降 サポートされているバージョンの最新一覧については、 [AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)を参照してください。 

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-architecture"></a>

**テクノロジースタック****ソース**
+ オンプレミス Microsoft SQL Server データベース

**テクノロジースタック****ターゲット**
+ Amazon Redshift

**データ移行アーキテクチャ**

![\[AWS SCT データ抽出エージェントを使用して、SQL Server データベースを Amazon Redshift に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6975f67a-0705-47b4-a1b8-90aaa2597a04/images/dbff958b-7601-442e-9e23-4d07edd0ccfd.png)


## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-tools"></a>
+ [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) は、ソースデータベーススキーマと大部分のカスタムコードをターゲットデータベースと互換性のある形式に自動的に変換し、異種データベースの移行を処理します。ソースデータベースとターゲットデータベースが大きく異なる場合は、AWS SCT エージェントを使用して追加のデータ変換を実行できます。詳細については、AWS ドキュメントの[オンプレミスデータウェアハウスから Amazon Redshift へのデータの移行](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/agents.dw.html)を参照してください。

## ベストプラクティス
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-best-practices"></a>
+ [AWS SCT のベストプラクティス](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_BestPractices.html)
+ [Amazon Redshift のベストプラクティス](https://docs.aws.amazon.com/redshift/latest/dg/best-practices.html)

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-epics"></a>

### 移行の準備をする
<a name="prepare-for-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットのデータベースのバージョンとエンジンを検証します。 |  | DBA | 
| ターゲットサーバーインスタンスのハードウェア要件を特定します。 |  | DBA、SysAdmin | 
| ストレージ要件 (ストレージタイプと容量) を特定します。 |  | DBA、SysAdmin | 
| 適切なインスタンスタイプ（容量、ストレージ機能、ネットワーク機能）を選択します。 |  | DBA、SysAdmin | 
| ソースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定します。 |  | DBA、SysAdmin | 
| アプリケーション移行戦略を選択します。 |  | DBA、SysAdmin、アプリ所有者 | 

### インフラストラクチャを設定する
<a name="configure-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) とサブネットを作成する。 |  | SysAdmin | 
| セキュリティグループを作成します。 |  | SysAdmin | 
| Amazon Redshift クラスターを設定して、起動します。 |  | SysAdmin | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT データ抽出エージェントを使用してデータを移行します。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-applications"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 選択したアプリケーション移行戦略に従ってください。 |  | DBA、SysAdmin、アプリ所有者 | 

### ターゲットデータベースにカットオーバーする
<a name="cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替ます。 |  | DBA、SysAdmin、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、SysAdmin | 
| プロジェクト文書を確認して検証する。 |  | DBA、SysAdmin、アプリ所有者 | 
| 移行の所要時間、手動タスクと自動タスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、SysAdmin、アプリ所有者 | 
| プロジェクトを閉じて、フィードバックします。 |  | DBA、SysAdmin、アプリ所有者 | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents-resources"></a>

**リファレンス**
+ 「[AWS SCT ユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」
+ [Using data extraction agents](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/agents.html)
+ [Amazon Redshift の価格設定](https://aws.amazon.com/redshift/pricing/)

**チュートリアルと動画**
+ [AWS Schema 変換ツールの使用開始](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_GettingStarted.html)
+ [Amazon Redshift の使用開始](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)

# レガシーアプリケーションを Oracle Pro\$1C から ECPG に移行する
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg"></a>

*Amazon Web Services、Sai Parthasaradhi、Mahesh Balumuri*

## 概要
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-summary"></a>

SQL コードが埋め込まれているほとんどのレガシーアプリケーションは、Oracle Pro\$1C プリコンパイラを使用してデータベースにアクセスします。これらの Oracle データベースを PostgreSQL 用の Amazon Relational Database Service (Amazon RDS) または Amazon Aurora PostgreSQL-Compatible エディションに移行する場合、アプリケーションコードを PostgreSQL のプリコンパイラと互換性のある形式 (ECPG と呼ばれる) に変換する必要があります。このパターンは、Oracle Pro\$1C のコードを PostgreSQL ECPG の同等のコードに変換する方法を説明しています。 

Pro\$1C の詳細については、[Oracle のドキュメント](https://docs.oracle.com/cd/E11882_01/appdev.112/e10825/pc_01int.htm#i2415)を参照してください。ECPG の簡単な紹介については、「[追加情報](#migrate-legacy-applications-from-oracle-pro-c-to-ecpg-additional)」セクションを参照してください。

## 前提条件と制限事項
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Amazon RDS for PostgreSQL または Aurora PostgreSQL-Compatible データベース
+ オンプレミスで稼働している Oracle データベース

## ツール
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-tools"></a>
+ 次のセクションにリストされている PostgreSQL パッケージ。
+ [ CLI ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) - AWS コマンドラインインターフェイス (AWS CLI) はオープンソースのツールで、コマンドラインシェルのコマンドで AWS サービスとインタラクトします。最小限の構成で、コマンドプロンプトからブラウザベースの AWS マネジメントコンソールで提供される機能と同等の機能を実装する AWS CLI コマンドを実行できます。

## エピック
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-epics"></a>

### CentOS または RHEL でビルド環境を設定する
<a name="set-the-build-environment-on-centos-or-rhel"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PostgreSQL パッケージをインストールします。 | 次のコマンドを使用して必要な PostgreSQL パッケージをインストールします。<pre>yum update -y<br />yum install -y yum-utils<br />rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm<br />dnf -qy module disable postgresql</pre> | アプリ開発者、DevOps エンジニア | 
| ヘッダーファイルとライブラリをインストールします。 | 以下のコマンドを使用して、ヘッダーファイルとライブラリを含む `postgresql12-devel` パッケージをインストールします。ランタイム環境でのエラーを避けるため、開発環境とランタイム環境の両方にパッケージをインストールします。<pre>dnf -y install postgresql12-devel<br />yum install ncompress zip ghostscript jq unzip wget git -y</pre>開発環境でのみ、次のコマンドも実行します。<pre>yum install zlib-devel make -y<br />ln -s /usr/pgsql-12/bin/ecpg /usr/bin/</pre> | アプリ開発者、DevOps エンジニア | 
| 環境変数のパスを構成します。 | PostgreSQL クライアントライブラリの環境パスを設定します。<pre>export PATH=$PATH:/usr/pgsql-12/bin</pre> | アプリ開発者、DevOps エンジニア | 
| 必要に応じて追加のソフトウェアをインストールします。 | 必要に応じて、Oracle の **SQL\$1Loader** の代わりに **pgLoader** をインストールしてください。<pre>wget -O /etc/yum.repos.d/pgloader-ccl.repo https://dl.packager.io/srv/opf/pgloader-ccl/master/installer/el/7.repo<br />yum install pgloader-ccl -y<br />ln -s /opt/pgloader-ccl/bin/pgloader /usr/bin/</pre>Pro\$1C モジュールから Java アプリケーションを呼び出す場合は、Java をインストールしてください。<pre>yum install java -y</pre>**ant** をインストールして Java コードをコンパイルします。<pre>yum install ant -y</pre> | アプリ開発者、DevOps エンジニア | 
| AWS CLI をインストールします。 | AWS CLI をインストールして、アプリケーションから AWS Secrets Manager や Amazon Simple Storage Service (Amazon S3) などの AWS のサービスと対話するコマンドを実行します。<pre>cd /tmp/<br />curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />./aws/install -i /usr/local/aws-cli -b /usr/local/bin --update</pre> | アプリ開発者、DevOps エンジニア | 
| 変換するプログラムを特定します。 | Pro\$1C から ECPG に変換するアプリケーションを特定します。 | アプリ開発者、アプリオーナー | 

### Pro\$1C コードを ECPG に変換する
<a name="convert-pro-c-code-to-ecpg"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 不要なヘッダーを削除する。 | PostgreSQL では不要な `include ` ヘッダーを削除します。例えば、`oci.h`、`oratypes`、および `sqlda` など。 | アプリ所有者、アプリ開発者 | 
| 変数宣言を更新します。 | ホスト変数として使用されるすべての変数宣言に `EXEC SQL` ステートメントを追加します。次のような `EXEC SQL VAR` 宣言をアプリケーションから削除します。<pre>EXEC SQL VAR query IS STRING(2048);</pre> | アプリ開発者、アプリオーナー | 
| ROWNUM 機能を更新します。 | `ROWNUM` 関数は PostgreSQL では使用できません。これを SQL クエリの `ROW_NUMBER` ウィンドウ関数に置き換えてください。Pro\$1C コード:<pre>SELECT SUBSTR(RTRIM(FILE_NAME,'.txt'),12) INTO :gcpclFileseq  <br />FROM   (SELECT FILE_NAME <br />FROM  DEMO_FILES_TABLE <br />WHERE FILE_NAME    LIKE '%POC%' <br />ORDER BY FILE_NAME DESC) FL2 <br />WHERE ROWNUM <=1 ORDER BY ROWNUM;</pre>ECPG コード:<pre>SELECT SUBSTR(RTRIM(FILE_NAME,'.txt'),12) INTO :gcpclFileseq  <br />FROM   (SELECT FILE_NAME , ROW_NUMBER() OVER (ORDER BY FILE_NAME DESC) AS ROWNUM<br />FROM  demo_schema.DEMO_FILES_TABLE <br />WHERE FILE_NAME    LIKE '%POC%'<br />ORDER BY FILE_NAME DESC) FL2 <br />WHERE ROWNUM <=1 ORDER BY ROWNUM; </pre> | アプリ開発者、アプリオーナー | 
| エイリアス変数を使用するように関数パラメータを更新します。 | PostgreSQL では、関数パラメータをホスト変数として使用することはできません。エイリアス変数を使用してそれらを上書きします。Pro\$1C コード:<pre>int processData(int referenceId){<br />  EXEC SQL char col_val[100];<br />  EXEC SQL select column_name INTO :col_val from table_name where col=:referenceId;<br />}</pre>ECPG コード:<pre>int processData(int referenceIdParam){<br />  EXEC SQL int referenceId = referenceIdParam;<br />  EXEC SQL char col_val[100];<br />  EXEC SQL select column_name INTO :col_val from table_name where col=:referenceId;<br />}</pre> | アプリ開発者、アプリオーナー | 
| 構造体タイプを更新します。 | `struct` 型変数がホスト変数として使用される場合は、`EXEC SQL BEGIN` および `END` ブロックの `struct` 型を `typedef` で定義します。`struct` 型がヘッダー (`.h`) ファイルで定義されている場合は、`EXEC SQL` include ステートメントでファイルをインクルードします。Pro\$1C コード:ヘッダーファイル (`demo.h`)<pre>struct s_partition_ranges<br />{<br /> char   sc_table_group[31];<br /> char   sc_table_name[31];<br /> char   sc_range_value[10];<br />}; <br />struct s_partition_ranges_ind<br />{<br />  short    ss_table_group;<br />  short    ss_table_name;<br />  short    ss_range_value;<br />}; </pre>ECPG コード:ヘッダーファイル (`demo.h`)<pre>EXEC SQL BEGIN DECLARE SECTION;<br />typedef struct <br />{<br />  char   sc_table_group[31];<br />  char   sc_table_name[31];<br />  char   sc_range_value[10];<br />} s_partition_ranges; <br />typedef struct <br />{<br />  short    ss_table_group;<br />  short    ss_table_name;<br />  short    ss_range_value;<br />} s_partition_ranges_ind; <br />EXEC SQL END DECLARE SECTION;</pre>Pro\$1C ファイル (`demo.pc`) <pre>#include "demo.h"<br />struct s_partition_ranges gc_partition_data[MAX_PART_TABLE] ;<br />struct s_partition_ranges_ind gc_partition_data_ind[MAX_PART_TABLE] ;</pre>ECPG ファイル (`demo.pc`) <pre>exec sql include "demo.h"<br />EXEC SQL BEGIN DECLARE SECTION;<br />s_partition_ranges gc_partition_data[MAX_PART_TABLE] ;<br />s_partition_ranges_ind gc_partition_data_ind[MAX_PART_TABLE] ;<br />EXEC SQL END DECLARE SECTION;</pre> | アプリ開発者、アプリオーナー | 
| カーソルから取得するようにロジックを変更します。 | 配列変数を使用してカーソルから複数の行を取得するには、`FETCH FORWARD` を使用するようコードを変更します。Pro\$1C コード:<pre>EXEC SQL char  aPoeFiles[MAX_FILES][FILENAME_LENGTH];<br />EXEC SQL FETCH filename_cursor into :aPoeFiles;</pre>ECPG コード:<pre>EXEC SQL char  aPoeFiles[MAX_FILES][FILENAME_LENGTH];<br />EXEC SQL int fetchSize = MAX_FILES;<br />EXEC SQL FETCH FORWARD :fetchSize filename_cursor into :aPoeFiles;</pre> | アプリ開発者、アプリオーナー | 
| 戻り値がないパッケージコールを修正します。 | 戻り値のない Oracle パッケージ関数は、指標変数を使用して呼び出す必要があります。アプリケーションに同じ名前の関数が複数含まれている場合や、型が不明な関数がランタイムエラーを生成する場合は、値をデータ型に typecast します。Pro\$1C コード:<pre>void ProcessData (char *data , int id)<br />{        <br />        EXEC SQL EXECUTE<br />               BEGIN<br />                  pkg_demo.process_data (:data, :id);                                                                                    <br />               END;<br />       END-EXEC;<br />}</pre>ECPG コード:<pre>void ProcessData (char *dataParam, int idParam )<br />{<br />        EXEC SQL char *data = dataParam;<br />        EXEC SQL int id = idParam;<br />        EXEC SQL short rowInd;<br />        EXEC SQL short rowInd = 0;<br />        EXEC SQL SELECT pkg_demo.process_data (<br />                       inp_data => :data::text,<br />                       inp_id => :id<br />               ) INTO :rowInd;<br />}</pre> | アプリ開発者、アプリオーナー | 
| SQL\$1CURSOR 変数を書き換える。 | `SQL_CURSOR` 変数とその実装を書き直します。Pro\$1C コード:<pre>/* SQL Cursor */<br />SQL_CURSOR      demo_cursor;<br />EXEC SQL ALLOCATE :demo_cursor;<br />EXEC SQL EXECUTE<br />  BEGIN<br />      pkg_demo.get_cursor(     <br />        demo_cur=>:demo_cursor<br />      );<br />  END;<br />END-EXEC;</pre>ECPG コード:<pre>EXEC SQL DECLARE demo_cursor CURSOR FOR SELECT<br />         * from<br />    pkg_demo.open_filename_rc(<br />            demo_cur=>refcursor<br />          ) ;<br />EXEC SQL char open_filename_rcInd[100]; <br /># As the below function returns cursor_name as <br /># return we need to use char[] type as indicator. <br />EXEC SQL SELECT pkg_demo.get_cursor (<br />        demo_cur=>'demo_cursor'<br />    ) INTO :open_filename_rcInd;</pre> | アプリ開発者、アプリオーナー | 
| 一般的な移行パターンを適用します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-legacy-applications-from-oracle-pro-c-to-ecpg.html) | アプリ開発者、アプリオーナー | 
| 必要に応じてデバッグを有効にします。 | ECPG プログラムをデバッグモードで実行するには、メイン関数ブロック内に以下のコマンドを追加します。<pre>ECPGdebug(1, stderr); </pre> | アプリ開発者、アプリオーナー | 

### ECPG プログラムをコンパイルする
<a name="compile-ecpg-programs"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ECPG 用の実行ファイルを作成します。 | `prog1.pgc` という名前の埋め込み SQL C ソースファイルがある場合は、以下のコマンドシーケンスを使用して実行プログラムを作成できます。<pre>ecpg prog1.pgc<br />cc -I/usr/local/pgsql/include -c prog1.c<br />cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg</pre> | アプリ開発者、アプリオーナー | 
| コンパイル用の Make ファイルを作成します。 | 次のサンプルファイルに示されているように、ECPG プログラムをコンパイルする Make ファイルを作成します。<pre>CFLAGS ::= $(CFLAGS) -I/usr/pgsql-12/include -g -Wall<br />LDFLAGS ::= $(LDFLAGS) -L/usr/pgsql-12/lib -Wl,-rpath,/usr/pgsql-12/lib<br />LDLIBS ::= $(LDLIBS) -lecpg<br />PROGRAMS = test <br />.PHONY: all clean<br />%.c: %.pgc<br />      ecpg $<<br />all: $(PROGRAMS)<br />clean:<br />    rm -f $(PROGRAMS) $(PROGRAMS:%=%.c) $(PROGRAMS:%=%.o)</pre> | アプリ開発者、アプリオーナー | 

### アプリケーションをテストする
<a name="test-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| コードをテストします。 | 変換したアプリケーションコードをテストして、正しく機能することを確認します。 | アプリ開発者、アプリオーナー、テストエンジニア | 

## 関連リソース
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-resources"></a>
+ [ECPG - C で記述された埋め込み SQL](https://www.postgresql.org/docs/current/static/ecpg.html) (PostgreSQL ドキュメント)
+ [エラーの処理](https://www.postgresql.org/docs/12/ecpg-errors.html) (PostgreSQL ドキュメント)
+ [Oracle Pro\$1C/C\$1\$1 プリコンパイラを使用する理由](https://docs.oracle.com/cd/E11882_01/appdev.112/e10825/pc_01int.htm#i2415) (Oracle ドキュメント)

## 追加情報
<a name="migrate-legacy-applications-from-oracle-pro-c-to-ecpg-additional"></a>

PostgreSQL には、Oracle Pro\$1C プリコンパイラと同等の埋め込み SQL プリコンパイラ ECPG があります。ECPG は、SQL コールを特殊な関数の呼び出しに置き換えることで、埋め込み SQL 文を含む C プログラムを標準 C コードに変換します。その後、出力ファイルは任意の C コンパイラツールチェーンで処理できます。

**入力ファイルと出力ファイル**

ECPG は、コマンドラインで指定した各入力ファイルを対応する C 出力ファイルに変換します。入力ファイル名にファイル拡張子が付いていない場合は、.pgc とみなされます。ファイルの拡張子は `.c` に置き換えられ、出力ファイル名が作成されます。ただし、`-o` オプションでデフォルトの出力ファイル名をオーバーライドできます。

入力ファイル名としてダッシュ (`-`) を使用すると、ECPG は `-o` オプションを使用してプログラムをオーバーライドしない限り、標準入力からプログラムを読み取り、標準出力に書き込みます。

**ヘッダーファイル**

PostgreSQL コンパイラは、前処理された C コードファイルをコンパイルするときに、PostgreSQL `include`ディレクトリ内の ECPG ヘッダーファイルを探します。そのため、`-I` オプションを使用してコンパイラに正しいディレクトリ (例: `-I/usr/local/pgsql/include`) を指定しなければならない場合があります。

**[ライブラリ]**

埋め込み SQL で C コードを使用するプログラムは、`libecpg` ライブラリにリンクする必要があります。例えば、リンカーオプション ` -L/usr/local/pgsql/lib -lecpg` を使用できます。

変換されたECPGアプリケーションは、埋め込み SQL ライブラリ (`ecpglib`) を介して `libpq` ライブラリ内の関数を呼び出し、標準のフロントエンド/バックエンドプロトコルを使用して PostgreSQL サーバーと通信します。

# 仮想生成列をOracleから PostgreSQL に移行
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql"></a>

*Amazon Web Services、Veeranjaneyulu Grandhi、Rajesh Madiwale、Ramesh Pathuri*

## 概要
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-summary"></a>

バージョン11以前では、PostgreSQLはOracle仮想列と直接同等の機能を提供していません。Oracle Database から PostgreSQL バージョン 11 以前への移行中に仮想生成された列を処理するのは、次の 2 つの理由で困難です。 
+ 仮想列は移行中は表示されません。
+ PostgreSQLはバージョン12より前の`generate`式をサポートしていません。

ただし、同様の機能をエミュレートする回避策があります。AWS Database Migration Service (AWS DMS) を使用して、Oracle Database から PostgreSQL バージョン 11 以前にデータを移行する場合、トリガー関数を使用して仮想生成列に値を入力できます。このパターンは、この目的に使用できる Oracle データベースと PostgreSQL コードの例を示しています。AWS では、PostgreSQL データベースには Amazon Relational Database Service (Amazon RDS) または Amazon Aurora PostgreSQL 互換エディションを使用できます。

PostgreSQL バージョン 12 以降では、生成された列がサポートされています。生成された列は、他の列値からその場で計算することも、計算して保存することもできます。「[PostgreSQL で生成されたカラム](https://www.postgresql.org/docs/12/ddl-generated-columns.html)」はOracleの仮想カラムに似ています。

## 前提条件と制限
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ ソース: Oracle データベース 
+ PostgreSQL データベースをターゲットとします (Amazon RDS for PostgreSQL または Aurora PostgreSQL との互換性あり)
+ [PL/PgSQL](https://www.postgresql.org/docs/current/plpgsql.html) コーディングの専門知識

**制限事項**
+ バージョン 12 より前のバージョンの PostgreSQL にのみ適用されます。 
+ Oracle データベースバージョン 11g 以降に適用されます。
+ 仮想列はデータ移行ツールではサポートされていません。
+ 同じテーブルで定義されている列にのみ適用されます。
+ 仮想生成列が決定論的ユーザー定義関数を参照している場合、その列をパーティショニングキー列として使用することはできません。
+ 式の出力はスカラー値でなければなりません。Oracle が提供するデータ型、ユーザー定義型、`LOB`または`LONG RAW`を返すことはできません。
+ 仮想列に対して定義されるインデックスは、PostgreSQLの関数ベースのインデックスと同等です。
+ テーブル統計を収集する必要があります。

## ツール
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-tools"></a>
+ 「[pgAdmin 4](https://www.pgadmin.org/)」は PostgreSQL 用のオープンソース管理ツールです。このツールは、データベースオブジェクトの作成、保守、使用を簡素化するグラフィカルインターフェイスを提供します。
+ 「[Oracle SQL Developer](https://www.oracle.com/database/sqldeveloper/)」は、従来のデプロイメントとクラウドデプロイメントの両方で Oracle データベース内の SQL を操作できる、無料の統合開発環境です。 

## エピック
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-epics"></a>

### ソースデータベースとターゲットデータベーステーブルの作成
<a name="create-source-and-target-database-tables"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソース Oracle データベーステーブルを作成します。 | Oracle Database で、次の文を使用して仮想生成列を含むテーブルを作成します。<pre>CREATE TABLE test.generated_column<br />( CODE NUMBER,<br />STATUS VARCHAR2(12) DEFAULT 'PreOpen',<br />FLAG CHAR(1) GENERATED ALWAYS AS (CASE UPPER(STATUS) WHEN 'OPEN' THEN 'N' ELSE 'Y' END) VIRTUAL VISIBLE<br />);</pre>このソーステーブルでは、`STATUS`列のデータが AWS DMS を介してターゲットデータベースに移行されます。ただし、この`FLAG`列には`generate by`機能を使用してデータが入力されるため、移行中は AWS DMS にこの列は表示されません。`generated by`の機能を実装するには、次のエピックに示すように、ターゲットデータベースのトリガーと関数を使用して`FLAG`列の値を入力する必要があります。 | DBA、アプリ開発者 | 
| AWS にターゲット PostgreSQL テーブルを作成します。 | 次のステートメントを使用して AWS のPostgreSQLテーブルを作成します。<pre>CREATE TABLE test.generated_column<br />(<br />    code integer not null,<br />    status character varying(12) not null ,<br />    flag character(1)<br />);</pre>このテーブルでは、`status`列は標準列です。この`flag`列は、`status`列内のデータに基づいて生成された列になります。 | DBA、アプリ開発者 | 

### PostgreSQL で仮想列を処理するトリガー関数を作成する
<a name="create-a-trigger-function-to-handle-the-virtual-column-in-postgresql"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PostgreSQL トリガーを作成します。 | PostgreSQL で、トリガーを作成します。<pre>CREATE TRIGGER tgr_gen_column<br />AFTER INSERT OR UPDATE OF status ON test.generated_column<br />FOR EACH ROW <br />EXECUTE FUNCTION test.tgf_gen_column();</pre> | DBA、アプリ開発者 | 
| PostgreSQL トリガー関数を作成します。 | PostgreSQL で、トリガー用の関数を作成します。この関数は、アプリケーションまたは AWS DMS によって挿入または更新された仮想列を入力し、データを検証します。<pre>CREATE OR REPLACE FUNCTION test.tgf_gen_column() RETURNS trigger AS $VIRTUAL_COL$<br />BEGIN<br />IF (TG_OP = 'INSERT') THEN<br />IF (NEW.flag IS NOT NULL) THEN<br />RAISE EXCEPTION 'ERROR: cannot insert into column "flag"' USING DETAIL = 'Column "flag" is a generated column.';<br />END IF;<br />END IF;<br />IF (TG_OP = 'UPDATE') THEN<br />IF (NEW.flag::VARCHAR != OLD.flag::varchar) THEN<br />RAISE EXCEPTION 'ERROR: cannot update column "flag"' USING DETAIL = 'Column "flag" is a generated column.';<br />END IF;<br />END IF;<br />IF TG_OP IN ('INSERT','UPDATE') THEN<br />IF (old.flag is NULL) OR (coalesce(old.status,'') != coalesce(new.status,'')) THEN<br />UPDATE test.generated_column<br />SET flag = (CASE UPPER(status) WHEN 'OPEN' THEN 'N' ELSE 'Y' END)<br />WHERE code = new.code;<br />END IF;<br />END IF;<br />RETURN NEW;<br />END<br />$VIRTUAL_COL$ LANGUAGE plpgsql;</pre> | DBA、アプリ開発者 | 

### AWS DMS を使用してデータ移行をテストする
<a name="test-data-migration-by-using-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションインスタンスを作成します。 | レプリケーションインスタンスを作成するには、AWS DMS ドキュメントの「[指示](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html)」に従います。レプリケーションインスタンスは、ソースデータベースとターゲットデータベースと同じ 仮想プライベートクラウド (VPC) 内に存在する必要があります。 | DBA、アプリ開発者 | 
| ソースおよびターゲットエンドポイントを作成します。 | エンドポイントを作成するには、AWS DMS のドキュメントの[手順](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html)に従います。 | DBA、アプリ開発者 | 
| エンドポイント接続をテストします。 | VPC とレプリケーションインスタンスを指定し、「**テストを実行**」を選択すると、エンドポイント接続をテストできます。 | DBA、アプリ開発者 | 
| フルロードタスクを作成して開始します。 | 手順については、AWS DMS ドキュメントの「[タスクの作成](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html)」と「[フルロードタスク設定](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.html)」を参照してください。 | DBA、アプリ開発者 | 
| 仮想列のデータを検証します。 | ソースデータベースとターゲットデータベース内の仮想列のデータを比較します。データを手動で検証することも、このステップのスクリプトを記述することもできます。 | DBA、アプリ開発者 | 

## 関連リソース
<a name="migrate-virtual-generated-columns-from-oracle-to-postgresql-resources"></a>
+ [AWS Database Migration Service の使用開始](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) (AWS DMSドキュメント)
+ 「[AWS DMSのソースとして Oracle データベースを使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」 (AWS DMS ドキュメント)
+ [PostgreSQL データベースを AWS DMS のターゲットとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html) (AWS DMS ドキュメント)
+ [PostgreSQL で生成されたカラム](https://www.postgresql.org/docs/12/ddl-generated-columns.html) (PostgreSQL ドキュメント)
+ [トリガー関数](https://www.postgresql.org/docs/12/plpgsql-trigger.html) (PostgreSQL ドキュメンテーション)
+ Oracle データベースの[仮想カラム](https://docs.oracle.com/database/121/SQLRF/statements_7002.htm#SQLRF01402) (Oracle ドキュメント)

# Aurora PostgreSQL-Compatible で Oracle UTL\$1FILE 機能をセットアップする
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible"></a>

*Rakesh Raghav と anuradha chintha、Amazon Web Services*

## 概要
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-summary"></a>

Oracle から Amazon Web Services (AWS) クラウド上の Amazon Aurora PostgreSQL-Compatible エディションへの移行の一環として、複数の課題に直面する場合があります。たとえば、Oracle の `UTL_FILE` ユーティリティに依存するコードの移行は常に課題です。Oracle PL/SQL では、`UTL_FILE` パッケージは基盤となるオペレーティングシステムと連携して、読み取りや書き込みなどのファイル操作に使用されます。この `UTL_FILE` ユーティリティは、サーバーマシンシステムとクライアントマシンシステムの両方で動作します。 

Amazon Aurora PostgreSQL-Compatible は、マネージドデータベースサービスです。このため、データベースサーバー上のファイルにアクセスすることはできません。このパターンでは、Amazon Simple Storage Service (Amazon S3) と Amazon Aurora PostgreSQL-Compatible を統合して、`UTL_FILE` 機能のサブセットを実現する手順を示しています。この統合により、サードパーティの抽出、変換、ロード (ETL) ツールやサービスを使用せずにファイルを作成して利用できます。

オプションで Amazon CloudWatch によるモニタリングおよび Amazon SNS 通知を設定できます。

本稼働環境に実装する前に、このソリューションを徹底的にテストすることをお勧めします。

## 前提条件と制限事項
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ AWS Database Migration Service (AWS DMS) 専門知識
+ PL/pgSQL コーディングに関する専門知識
+ Amazon Aurora PostgreSQL-Compatible クラスター
+ S3 バケット

**制限事項**

このパターンには Oracle `UTL_FILE` ユーティリティの代わりとなる機能はありません。ただし、手順とサンプルコードをさらに拡張して、データベースのモダナイゼーション目標を達成することはできます。

**製品バージョン**
+ Amazon Aurora PostgreSQL-Compatible エディション 11.9

## アーキテクチャ
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-architecture"></a>

**ターゲットテクノロジースタック**
+ Amazon Aurora PostgreSQL-Compatible
+ Amazon CloudWatch
+ Amazon Simple Notiﬁcation Service (Amazon SNS)
+ Amazon S3

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

次の図はソリューションの概要を示しています。

![\[データファイルは S3 バケットにアップロードされ、aws_s3 拡張機能を使用して処理された後、Aurora インスタンスに送信されます。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/3aeecd46-1f87-41f9-a9cd-f8181f92e83f/images/4a6c5f5c-58fb-4355-b243-d09a15c1cec6.png)


1. ファイルはアプリケーションから S3 バケットにアップロードされます。

1. `aws_s3` 拡張機能は PL/pgSQL を使用してデータにアクセスし、そのデータを Aurora PostgreSQL-Compatible にアップロードします。

## ツール
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-tools"></a>
+ [Amazon Aurora PostgreSQL-Compatible](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) – Amazon Aurora PostgreSQL-Compatible エディションは、フルマネージド型で PostgreSQL 互換の ACID 準拠リレーショナルデータベースエンジンです。ハイエンドの商用データベースのスピードおよび信頼性と、オープンソースデータベースのシンプルさとコスト効率を併せ持っています。
+ [ CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) – AWS コマンドラインインターフェイス (AWS CLI) は、AWS のサービスを管理するための統合ツールです。ダウンロードおよび構成用の単一のツールのみを使用して、コマンドラインから複数の AWS サービスを制御し、スクリプトを使用してこれらを自動化することができます。
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) — Amazon CloudWatch は Amazon S3 のリソースと使用状況をモニタリングします。
+ 「[Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)」— Amazon Simple Storage Service (Amazon S3)は、インターネット用のストレージです。このパターンでは、Amazon S3 は Aurora PostgreSQL-Compatible クラスターとの間で使用および送信するファイルを受信および保存するためのストレージレイヤーを提供します。
+ [\$1s3](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#aws_s3.table_import_from_s3) — `aws_s3` 拡張機能は Amazon S3 と Aurora PostgreSQL-Compatible を統合します。
+ 「[Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)」 — Amazon Simple Notiﬁcation Service (Amazon SNS)は、パブリッシャーやクライアントの間のメッセージ配信や送信を調整および管理します。このパターンでは、Amazon SNS を使用して通知を送信します。
+ [pgAdmin](https://www.pgadmin.org/docs/) — pgAdmin は Postgres 用のオープンソース管理ツールです。pgAdmin 4 は、データベースオブジェクトを作成、管理、および使用するためのグラフィカルインターフェイスを提供します。

**Code**

必要な機能を実現するために、このパターンは `UTL_FILE` に類似した名前の関数を複数作成します。「*追加情報*」セクションには、これらの関数のコードベースが含まれています。

コードでは、`testaurorabucket` をテストの S3 バケットの名前に置き換えます。`us-east-1` については、テストの S3 バケットがある AWS リージョンに置き換えます。

## エピック
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-epics"></a>

### Amazon S3 と Aurora PostgreSQL-Compatible を統合する
<a name="integrate-amazon-s3-and-aurora-postgresql-compatible"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IAM ポリシーを設定する。 | S3 バケットとその中のオブジェクトへのアクセス権を 付与する AWS Identity and Access Management (IAM) ポリシーを作成します。コードについては、「*追加情報*」セクションを参照してください。 | AWS 管理者、データベース管理者 | 
| Amazon S3 アクセスロールを Aurora PostgreSQL に追加します。 | 2 つの IAM ロールを作成します。1 つは Amazon S3 への読み取りアクセス用で、もう 1 つは書き込みアクセス用です。2 つのロールを Aurora PostgreSQL-Compatible クラスターにアタッチします。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.html)詳細については、Amazon S3 へのデータの[インポート](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PostgreSQL.S3Import.html)と[エクスポート](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html)に関する「Aurora PostgreSQL-Compatible ドキュメント」を参照してください。 | AWS 管理者、データベース管理者 | 

### Aurora PostgreSQL-Compatible の拡張機能をセットアップする
<a name="set-up-the-extensions-in-aurora-postgresql-compatible"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| aws\$1commons 拡張機能を作成します。 | `aws_commons` 拡張機能は、`aws_s3` 拡張機能の依存関係です。 | DBA、開発者 | 
| aws\$1s3 拡張機能を作成します。 | `aws_s3` 拡張機能は Amazon S3 と相互作用します。 | DBA、開発者 | 

### Amazon S3 と Aurora PostgreSQL-Compatible の統合を検証する
<a name="validate-amazon-s3-and-aurora-postgresql-compatible-integration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon S3 から Aurora PostgreSQL へのデータインポートをテストする | Aurora PostgreSQL-Compatible へのファイルのインポートをテストするには、サンプル CSV ファイルを作成して S3 バケットにアップロードします。CSV ファイルに基づいてテーブル定義を作成し、`aws_s3.table_import_from_s3` 関数を使用してファイルをテーブルに読み込みます。 | DBA、開発者 | 
| Aurora PostgreSQL から Amazon S3 へのファイルのエクスポートをテストする。 | Aurora PostgreSQL-Compatible からのファイルのエクスポートをテストするには、テストテーブルを作成してデータを入力し、`aws_s3.query_export_to_s3` 関数を使用してデータをエクスポートします。 | DBA、開発者 | 

### UTL\$1FILE ユーティリティを模倣するためにラッパー関数を作成するには
<a name="to-mimic-the-utl_file-utility-create-wrapper-functions"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| utl\$1file\$1utility スキーマを作成します。 | このスキーマはラッパー関数をまとめて維持します。スキーマを作成するには、次のコマンドを実行します。<pre>CREATE SCHEMA utl_file_utility;</pre> | DBA、開発者 | 
| file\$1type タイプを作成します。 | `file_type` タイプを作成数には、以下のコードを使用します。<pre>CREATE TYPE utl_file_utility.file_type AS (<br />    p_path character varying(30),<br />    p_file_name character varying<br />);<br /><br /><br /></pre> | DBA/開発者 | 
| init 関数を作成します。 | `init` 関数は、`bucket` や `region` などの共通変数を初期化します。コードについては、「*追加情報*」セクションを参照してください。 | DBA/開発者 | 
| ラッパー関数を作成する。 | ラッパー関数 `fopen`、`put_line`、および `fclose` を作成します。コードについては、「*追加情報*」セクションを参照してください。 | DBA、開発者 | 

### ラッパー関数をテストする
<a name="test-the-wrapper-functions"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ラッパー関数を書き込みモードでテストします。 | ラッパー関数を書き込みモードでテストするには、「*追加情報*」セクションに記載されているコードを使用してください。 | DBA、開発者 | 
| アペンドモードでラッパー関数をテストします。 | アペンドモードでラッパー関数をテストするには、「*追加情報*」セクションに記載されているコードを使用してください。 | DBA、開発者 | 

## 関連リソース
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-resources"></a>
+ 「[Amazon S3 統合](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PostgreSQL.S3Import.html)」
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [Aurora](https://aws.amazon.com/rds/aurora/?nc2=h_ql_prod_db_aa&aurora-whats-new.sort-by=item.additionalFields.postDateTime&aurora-whats-new.sort-order=desc)
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)
+ [Amazon SNS](https://aws.amazon.com/sns/?nc2=h_ql_prod_ap_sns&whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc)

## 追加情報
<a name="set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible-additional"></a>

**IAM ポリシーを設定する**

次のポリシーを作成します。


| 
| 
| ポリシー名 | JSON | 
| --- |--- |
| S3IntRead | <pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3integrationtest",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:GetObject",<br />                "s3:ListBucket"<br />            ],<br />            "Resource": [<br />         "arn:aws:s3:::testaurorabucket/*",<br />         "arn:aws:s3:::testaurorabucket"<br />            ]<br />        }<br />    ]<br />}</pre> | 
| S3IntWrite | <pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Sid": "S3integrationtest",<br />            "Effect": "Allow",<br />            "Action": [<br />                "s3:PutObject",                <br />                "s3:ListBucket"<br />            ],<br />            "Resource": [                "arn:aws:s3:::testaurorabucket/*",                "arn:aws:s3:::testaurorabucket"<br />            ]<br />        }<br />    ]<br />}</pre> | 

**init 関数を作成する**

`bucket` や `region` などの共通変数を初期化するには、次のコードを使用して `init` 関数を作成します。

```
CREATE OR REPLACE FUNCTION utl_file_utility.init(
    )
    RETURNS void
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
BEGIN
      perform set_config
      ( format( '%s.%s','UTL_FILE_UTILITY', 'region' )
      , 'us-east-1'::text
      , false );

      perform set_config
      ( format( '%s.%s','UTL_FILE_UTILITY', 's3bucket' )
      , 'testaurorabucket'::text
      , false );
END;
$BODY$;
```

**ラッパー関数を作成する**

ラッパー関数 `fopen`、`put_line`、`fclose` を作成します。

*fopen*

```
CREATE OR REPLACE FUNCTION utl_file_utility.fopen(
    p_file_name character varying,
    p_path character varying,
    p_mode character DEFAULT 'W'::bpchar,
    OUT p_file_type utl_file_utility.file_type)
    RETURNS utl_file_utility.file_type
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
declare
    v_sql character varying;
    v_cnt_stat integer;
    v_cnt integer;
    v_tabname character varying;
    v_filewithpath character varying;
    v_region character varying;
    v_bucket character varying;

BEGIN
    /*initialize common variable */
    PERFORM utl_file_utility.init();
    v_region := current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 'region' ) );
    v_bucket :=  current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 's3bucket' ) );
    
    /* set tabname*/
    v_tabname := substring(p_file_name,1,case when strpos(p_file_name,'.') = 0 then length(p_file_name) else strpos(p_file_name,'.') - 1 end );
    v_filewithpath := case when NULLif(p_path,'') is null then p_file_name else concat_ws('/',p_path,p_file_name) end ;
    raise notice 'v_bucket %, v_filewithpath % , v_region %', v_bucket,v_filewithpath, v_region;
    
    /* APPEND MODE HANDLING; RETURN EXISTING FILE DETAILS IF PRESENT ELSE CREATE AN EMPTY FILE */
    IF p_mode = 'A' THEN
        v_sql := concat_ws('','create temp table if not exists ', v_tabname,' (col1 text)');
        execute v_sql;

        begin
        PERFORM aws_s3.table_import_from_s3 
            ( v_tabname, 
            '',  
            'DELIMITER AS ''#''', 
            aws_commons.create_s3_uri 
            (     v_bucket, 
                v_filewithpath ,
                v_region)
            );
        exception
            when others then
             raise notice 'File load issue ,%',sqlerrm;
             raise;
        end;
        execute concat_ws('','select count(*) from ',v_tabname) into v_cnt;

        IF v_cnt > 0 
        then
            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;
        else         
            PERFORM aws_s3.query_export_to_s3('select ''''', 
                            aws_commons.create_s3_uri(v_bucket, v_filewithpath, v_region)            
                              );

            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;        
        end if;
        v_sql := concat_ws('','drop table ', v_tabname);        
        execute v_sql;            
    ELSEIF p_mode = 'W' THEN
            PERFORM aws_s3.query_export_to_s3('select ''''', 
                            aws_commons.create_s3_uri(v_bucket, v_filewithpath, v_region)            
                              );
            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;
    END IF;    
    
EXCEPTION
        when others then
            p_file_type.p_path := p_path;
            p_file_type.p_file_name := p_file_name;
            raise notice 'fopenerror,%',sqlerrm;
            raise;
END;
$BODY$;
```

*put\$1line*

```
CREATE OR REPLACE FUNCTION utl_file_utility.put_line(
    p_file_name character varying,
    p_path character varying,
    p_line text,
    p_flag character DEFAULT 'W'::bpchar)
    RETURNS boolean
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
/**************************************************************************
* Write line, p_line in windows format to file, p_fp - with carriage return
* added before new line.
**************************************************************************/
declare
    v_sql varchar;
    v_ins_sql varchar;
    v_cnt INTEGER;
    v_filewithpath character varying;
    v_tabname  character varying;
    v_bucket character varying;
    v_region character varying;    

BEGIN
 PERFORM utl_file_utility.init();

/* check if temp table already exist */

 v_tabname := substring(p_file_name,1,case when strpos(p_file_name,'.') = 0 then length(p_file_name) else strpos(p_file_name,'.') - 1 end );

 v_sql := concat_ws('','select count(1) FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace where n.nspname like ''pg_temp_%''' 
                         ,' AND pg_catalog.pg_table_is_visible(c.oid) AND Upper(relname) = Upper( '''
                         ,  v_tabname ,''' ) ');
  
 execute v_sql into v_cnt;
  
  IF v_cnt = 0 THEN
         v_sql := concat_ws('','create temp table ',v_tabname,' (col text)');
        execute v_sql;
        /* CHECK IF APPEND MODE */
        IF upper(p_flag) = 'A' THEN
            PERFORM utl_file_utility.init();                        
            v_region := current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 'region' ) );
            v_bucket :=  current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 's3bucket' ) );
            
            /* set tabname*/            
            v_filewithpath := case when NULLif(p_path,'') is null then p_file_name else concat_ws('/',p_path,p_file_name) end ;            
            
            begin
               PERFORM aws_s3.table_import_from_s3 
                     ( v_tabname, 
                          '',  
                       'DELIMITER AS ''#''', 
                        aws_commons.create_s3_uri 
                           ( v_bucket, 
                               v_filewithpath, 
                               v_region    )
                    );
            exception
                when others then
                    raise notice  'Error Message : %',sqlerrm;
                    raise;
            end;    
        END IF;    
    END IF;
    /* INSERT INTO TEMP TABLE */              
    v_ins_sql := concat_ws('','insert into ',v_tabname,' values(''',p_line,''')');
    execute v_ins_sql;
    RETURN TRUE;
    exception
            when others then
                raise notice  'Error Message : %',sqlerrm;
                raise;
END;
$BODY$;
```

*fclose*

```
CREATE OR REPLACE FUNCTION utl_file_utility.fclose(
    p_file_name character varying,
    p_path character varying)
    RETURNS boolean
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
DECLARE
    v_filewithpath character varying;
    v_bucket character varying;
    v_region character varying;
    v_tabname character varying;
    v_sql character varying;
BEGIN
      PERFORM utl_file_utility.init();
  
    v_region := current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 'region' ) );
    v_bucket :=  current_setting( format( '%s.%s', 'UTL_FILE_UTILITY', 's3bucket' ) );

    v_tabname := substring(p_file_name,1,case when strpos(p_file_name,'.') = 0 then length(p_file_name) else strpos(p_file_name,'.') - 1 end );
    v_filewithpath := case when NULLif(p_path,'') is null then p_file_name else concat_ws('/',p_path,p_file_name) end ;

    raise notice 'v_bucket %, v_filewithpath % , v_region %', v_bucket,v_filewithpath, v_region ;
    
    /* exporting to s3 */
    perform aws_s3.query_export_to_s3
        (concat_ws('','select * from ',v_tabname,'  order by ctid asc'), 
            aws_commons.create_s3_uri(v_bucket, v_filewithpath, v_region)
        );
    v_sql := concat_ws('','drop table ', v_tabname);
    execute v_sql;    
    RETURN TRUE;
EXCEPTION 
       when others then
     raise notice 'error fclose %',sqlerrm;
     RAISE;
END;
$BODY$;
```

**設定とラッパー関数をテストする**

次の匿名コードブロックを使用して、設定をテストします。

*書き込みモードをテストする*

次のコードは、S3 バケットの `s3inttest` という名前のファイルを記述します。

```
do $$
declare
l_file_name varchar := 's3inttest' ;
l_path varchar := 'integration_test' ;
l_mode char(1) := 'W';
l_fs utl_file_utility.file_type ;
l_status boolean;

begin
select * from
utl_file_utility.fopen( l_file_name, l_path , l_mode ) into l_fs ;
raise notice 'fopen : l_fs : %', l_fs;

select * from
utl_file_utility.put_line( l_file_name, l_path ,'this is test file:in s3bucket: for test purpose', l_mode ) into l_status ;
raise notice 'put_line : l_status %', l_status;

select * from utl_file_utility.fclose( l_file_name , l_path ) into l_status ;
raise notice 'fclose : l_status %', l_status;

end;
$$
```

*アペンドモードをテストする*

次のコードは、前のテストで作成した `s3inttest` ファイルに行を追加します。

```
do $$
declare
l_file_name varchar := 's3inttest' ;
l_path varchar := 'integration_test' ;
l_mode char(1) := 'A';
l_fs utl_file_utility.file_type ;
l_status boolean;

begin
select * from
utl_file_utility.fopen( l_file_name, l_path , l_mode ) into l_fs ;
raise notice 'fopen : l_fs : %', l_fs;


select * from
utl_file_utility.put_line( l_file_name, l_path ,'this is test file:in s3bucket: for test purpose : append 1', l_mode ) into l_status ;
raise notice 'put_line : l_status %', l_status;

select * from
utl_file_utility.put_line( l_file_name, l_path ,'this is test file:in s3bucket : for test purpose : append 2', l_mode ) into l_status ;
raise notice 'put_line : l_status %', l_status;

select * from utl_file_utility.fclose( l_file_name , l_path ) into l_status ;
raise notice 'fclose : l_status %', l_status;

end;
$$
```

**Amazon SNSの通知**

オプションで Amazon CloudWatch によるモニタリングと Amazon SNS 通知を S3 バケットに設定できます。詳細については、「[Amazon S3 をモニタリングする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/monitoring-overview.html)」と「[Amazon SNS 通知のセットアップ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)」を参照してください。

# Oracle から Amazon Aurora PostgreSQL への移行後にデータベースオブジェクトを検証する
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql"></a>

*Amazon Web Services、Venkatramana Chintha、Eduardo Valentim*

## 概要
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-summary"></a>

このパターンは、Oracle データベースを Amazon Aurora PostgreSQL 互換エディションに移行した後にオブジェクトを検証する段階的なアプローチを示しています。

このパターンは、データベースオブジェクト検証の使用シナリオと手順の概要を示しています。詳細については、「[AWS Database ブログ](https://aws.amazon.com/blogs/)」の「[AWS SCT と AWS DMS を使用した移行後のデータベースオブジェクトの検証](https://aws.amazon.com/blogs/database/validating-database-objects-after-migration-using-aws-sct-and-aws-dms/)」を参照してください。

## 前提条件と制限
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ Aurora PostgreSQL 互換データベースに移行された、オンプレミスの Oracle データベース。 
+ Aurora PostgreSQL 互換データベースに「[AmazonRDSDataFullAccess](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html)」ポリシーが適用されているサインイン認証情報。 
+ このパターンでは、Amazon Relational Database Service (Amazon RDS) コンソールにある「[Aurora サーバーレス DB クラスターのクエリエディター](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html)」を使用します。ただし、このパターンは他のクエリエディタでも使用可能です。 

**制限事項**
+ Oracle SYNONYM オブジェクトは PostgreSQL では使用できませんが、「**ビュー**」または SET search\$1path クエリによって部分的に検証できます。
+ Amazon RDS クエリエディタは、「[特定の AWS リージョン、特定の MySQL および PostgreSQL バージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html)」でのみ使用できます

## アーキテクチャ
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-architecture"></a>

 

![\[Database migration workflow showing on-premises Oracle to AWSAurora PostgreSQL via client program and validation scripts.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7c028960-6dea-46ad-894d-e42cefd50c03/images/be5f8ae3-f5af-4c5e-9440-09ab410beaa1.png)


 

## ツール
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-tools"></a>

**ツール**
+ [Amazon Aurora PostgreSQL-Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) – Amazon Aurora PostgreSQL は、フルマネージド型で PostgreSQL 互換の、ACID 準拠のリレーショナルデータベースエンジンです。ハイエンドの商用データベースのスピードと信頼性を、オープンソースデータベースのシンプルさとコスト効率でご利用いただけます。
+ [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) – Amazon Relational Database Service (Amazon RDS) を使用して、AWS クラウドでリレーショナルデータベースをセットアップ、運用、スケーリングできます。業界スタンダードのリレーショナルデータベース向けに、費用対効果に優れたエクステンションを備え、一般的なデータベース管理タスクを管理します。
+ [Aurora Severless 用クエリエディタ](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/query-editor.html) – クエリエディタを使用すると、Amazon RDS コンソールで SQL クエリを実行できます。Auroraサーバーレス DB クラスターでは、データ操作やデータ定義のステートメントも含めて、任意の有効な SQL ステートメントを実行できます。

オブジェクトを検証するには、「添付ファイル」セクションの「オブジェクト検証スクリプト」ファイルにあるフルスクリプトを使用します。次の表を参照してください。


| 
| 
| Oracle オブジェクト | 使用するスクリプト | 
| --- |--- |
| パッケージ | Query 1 | 
| テーブル | Query 3 | 
| ビュー | クエリ 5 | 
| シーケンス | クエリ 7 | 
| トリガ |  クエリ 9 | 
| プライマリキー | クエリ 11 | 
| インデックス | クエリ 13 | 
| 検査制約 | クエリ 15 | 
| 外部キー  | クエリ 17  | 


| 
| 
| PostgreSQL オブジェクト | 使用するスクリプト | 
| --- |--- |
| パッケージ | Query 2 | 
| テーブル | クエリ 4 | 
| ビュー | クエリ 6 | 
| シーケンス | クエリ 8 | 
| トリガ | クエリ 10 | 
| プライマリキー | クエリ 12 | 
| インデックス | クエリ 14 | 
| 検査制約 | クエリ 16 | 
| 外部キー | クエリ 18 | 

## エピック
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-epics"></a>

### ソース Oracle データベース内のオブジェクトを検証します
<a name="validate-objects-in-the-source-oracle-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソース Oracle データベースで「パッケージ」検証クエリを実行します。 | 「添付ファイル」セクションから「オブジェクト検証スクリプト」ファイルをダウンロードして開きます。クライアントプログラムを使用してソース Oracle データベースConnect。「オブジェクト検証スクリプト」ファイルから「Query 1」検証スクリプトを実行します。重要: クエリには「your\$1schema」の代わりに Oracle ユーザー名を入力してください。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「テーブル」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 3」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「ビュー」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 5」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「シーケンス」カウント検証を実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 7」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「トリガー」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 9」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「プライマリキー」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 11」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「インデックス」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 13」検証スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「チェック制約」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 15」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「外部キー」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 17」検証スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 

### ターゲット Aurora PostgreSQL 互換データベース内のオブジェクトを検証します
<a name="validate-objects-in-the-target-aurora-postgresql-compatible-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| クエリエディタを使用して、対象のAurora PostgreSQL互換データベースに接続します。 | AWS マネジメントコンソール にサインインして、Amazon RDS コンソールを開きます。右上で、Aurora PostgreSQL 互換データベースを作成した AWS リージョンを選択します。ナビゲーションペインで、[データベース] を選択して、ターゲットの Aurora PostgreSQL 互換データベースを選択します。[アクション]、[クエリ] の順に選択します。重要: まだデータベースに接続していない場合は、[データベースに接続] ページが開きます。次に、ユーザー名やパスワードなどのデータベース情報を入力する必要があります。 | 開発者、DBA | 
| 「パッケージ」検証クエリを実行します。 | 「添付ファイル」セクションの「オブジェクト検証スクリプト」ファイルから「Query 2」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「テーブル」検証クエリを実行します。 | Aurora PostgreSQL 互換データベースのクエリエディタに戻り、「オブジェクト検証スクリプト」ファイルから「Query 4」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「ビュー」検証クエリを実行します。 | Aurora PostgreSQL 互換データベースのクエリエディタに戻り、「オブジェクト検証スクリプト」ファイルから「Query 6」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「シーケンス」カウント検証を実行します。 | Aurora PostgreSQL 互換データベースのクエリエディタに戻り、「オブジェクト検証スクリプト」ファイルから「Query 8」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「トリガー」検証クエリを実行します。 | Aurora PostgreSQL 互換データベースのクエリエディタに戻り、「オブジェクト検証スクリプト」ファイルから「Query 10」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「プライマリキー」検証クエリを実行します。 | Aurora PostgreSQL 互換データベースのクエリエディタに戻り、「オブジェクト検証スクリプト」ファイルから「Query 12」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「インデックス」検証クエリを実行します。 | Aurora PostgreSQL 互換データベースのクエリエディタに戻り、「オブジェクト検証スクリプト」ファイルから「Query 14」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「チェック制約」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 16」スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 
| 「外部キー」検証クエリを実行します。 | 「オブジェクト検証スクリプト」ファイルから「Query 18」検証スクリプトを実行します。クエリの結果は必ず記録してください。 | 開発者、DBA | 

### ソースとターゲットの検証レコードを比較
<a name="compare-source-and-target-database-validation-records"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 両方のクエリ結果を比較して検証します。 | Oracle と Aurora PostgreSQL 互換データベースのクエリ結果を比較して、すべてのオブジェクトを検証します。すべてが一致すれば、すべてのオブジェクトは正常に検証されたことになります。 | 開発者、DBA | 

## 関連リソース
<a name="validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql-resources"></a>
+ [AWS SCT と AWS DMS を使用した移行後のデータベースオブジェクトの検証](https://aws.amazon.com/blogs/database/validating-database-objects-after-migration-using-aws-sct-and-aws-dms/)
+ [Amazon Aurora Features: PostgreSQL-Compatible Edition](https://aws.amazon.com/rds/aurora/postgresql-features/)

## アタッチメント
<a name="attachments-7c028960-6dea-46ad-894d-e42cefd50c03"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/7c028960-6dea-46ad-894d-e42cefd50c03/attachments/attachment.zip)」

# リホスト
<a name="migration-rehost-pattern-list"></a>

**Topics**
+ [Microsoft ワークロードの検出と AWS への移行を加速](accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.md)
+ [へのリホスト移行中にファイアウォールリクエストの承認プロセスを作成する AWS](create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws.md)
+ [EC2 Windows インスタンスを AWS Managed Services アカウントに取り込み、移行](ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.md)
+ [Couchbase Server データベースを Amazon EC2 に移行する](migrate-couchbase-server-ec2.md)
+ [ログ配信を使用して Db2 for LUW を Amazon EC2 に移行することで、システム停止時間を短縮する](migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.md)
+ [高可用性ディザスタリカバリ機能を備えた Db2 for LUW を Amazon EC2 に移行する](migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.md)
+ [appcmd.exe を使用して IIS がホストするアプリケーションを Amazon EC2 に移行する](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する](migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.md)
+ [で F5 BIG-IP ワークロードを F5 BIG-IP VE に移行する AWS クラウド](migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud.md)
+ [バイナリメソッドを使用してオンプレミスの Go ウェブアプリケーションを AWS Elastic Beanstalk に移行します](migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.md)
+ [AWS を使用してオンプレミス SFTP サーバーを に移行する AWS Transfer for SFTP](migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp.md)
+ [AWS アプリケーション移行サービスを使用してオンプレミス VM を Amazon EC2 に移行する](migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.md)
+ [を使用してオンプレミスから Amazon S3 に小さなデータセットを移行する AWS SFTP](migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp.md)
+ [オンプレミスの Oracle データベースを Oracle Amazon EC2 に移行する](migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2.md)
+ [Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon EC2 に移行する](migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.md)
+ [AWS MGN を使用して RHEL BYOL システムを AWS ライセンス込みのインスタンスに移行する](migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.md)
+ [オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2.md)
+ [AWS Cloud でオンプレミスワークロードをリホストする: 移行チェックリスト](rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist.md)
+ [Amazon FSx を使用して SQL Server Always On FCI 向けのマルチ AZ インフラストラクチャをセットアップする](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [BMC ディスカバリークエリを使用して移行計画のために移行データを抽出](use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning.md)

# Microsoft ワークロードの検出と AWS への移行を加速
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws"></a>

*Amazon Web Services、Ali Alzand*

## 概要
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-summary"></a>

このパターンは、[Migration Validator Toolkit PowerShell モジュール](https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads)を使用して Microsoft ワークロードを検出し、AWS に移行する方法を示しています。このモジュールは、あらゆる Microsoft ワークロードに関連する一般的なタスクに対して複数のチェックと検証を実行することで機能します。例えば、モジュールは複数のディスクがアタッチされている可能性のあるインスタンスや、多くの IP アドレスを使用するインスタンスをチェックします。このモジュールが実行できるチェックの一覧については、モジュールの GitHub ページにある「[チェック](https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads#checks)」セクションを参照してください。

移行検証ツールキット PowerShell モジュールを使用すると、組織は Microsoft ワークロードで実行されているアプリケーションやサービスの検出にかかる時間と労力を削減できます。このモジュールは、ワークロードの設定を特定するのにも役立ちます。これにより、その設定が AWS でサポートされているかどうかを確認できます。また、このモジュールでは、移行前、移行中、移行後に設定ミスを回避できるよう、次のステップや緩和策に関する推奨事項も提供しています。

## 前提条件と制限事項
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-prereqs"></a>

**前提条件**
+ ローカル管理者アカウント
+ PowerShell 4.0

**制限事項**
+ Microsoft Windows Server 2012 R2 以降のみで動作

## ツール
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-tools"></a>

**ツール**
+ PowerShell 4.0

**コードリポジトリ**

このパターンの Migration Validator Toolkit PowerShell モジュールは、GitHub の [migration-validator-toolkit-for-microsoft-workloads](https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads) リポジトリから入手できます。

## エピック
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-epics"></a>

### Migration Validator Toolkit PowerShell モジュールを 1 つのターゲットで実行する
<a name="run-the-migration-validator-toolkit-powershell-module-on-a-single-target"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| モジュールのダウンロード、抽出、インポート、呼び出しを行う。 | モジュールをダウンロードしてデプロイするには、次のいずれかの方法を使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)**PowerShell スクリプトを実行する**PowerShell で次のコード例を実行します。<pre>#MigrationValidatorToolkit<br />$uri = 'https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads/archive/refs/heads/main.zip'<br />$destination = (Get-Location).Path<br />if ((Test-Path -Path "$destination\MigrationValidatorToolkit.zip" -PathType Leaf) -or (Test-Path -Path "$destination\MigrationValidatorToolkit")) {<br />    write-host "File $destination\MigrationValidatorToolkit.zip or folder $destination\MigrationValidatorToolkit found, exiting"<br />}else {<br />    Write-host "Enable TLS 1.2 for this PowerShell session only."<br />    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12<br />    $webClient = New-Object System.Net.WebClient<br />    Write-host "Downloading MigrationValidatorToolkit.zip"<br />    $webClient.DownloadFile($uri, "$destination\MigrationValidatorToolkit.zip")<br />    Write-host "MigrationValidatorToolkit.zip download successfully"<br />    Add-Type -Assembly "system.io.compression.filesystem"<br />    [System.IO.Compression.ZipFile]::ExtractToDirectory("$destination\MigrationValidatorToolkit.zip","$destination\MigrationValidatorToolkit")<br />    Write-host "Extracting MigrationValidatorToolkit.zip complete successfully"<br />    Import-Module "$destination\MigrationValidatorToolkit\migration-validator-toolkit-for-microsoft-workloads-main\MigrationValidatorToolkit.psm1"; Invoke-MigrationValidatorToolkit<br />}</pre>このコードは、.zip ファイルからモジュールをダウンロードします。次に、コードがモジュールを抽出、インポート、呼び出しします。**zip ファイルをダウンロードして抽出する**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)**GitHub リポジトリのクローンを作成する**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html) | システム管理者 | 
| モジュールを手動で呼び出します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)[Format-Table](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-table?view=powershell-7.3) フォーマット:<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit</pre>[Format-List](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-list?view=powershell-7.3) フォーマット:<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit -List</pre>[Out-GridView](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-gridview?view=powershell-7.3) フォーマット:<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit -GridView</pre>[ConvertTo-Csvformat](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-csv?view=powershell-7.3) フォーマット:<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-MigrationValidatorToolkit -csv</pre> | システム管理者 | 

### Migration Validator Toolkit PowerShell モジュールを複数のターゲットで実行する
<a name="run-the-migration-validator-toolkit-powershell-module-on-multiple-targets"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| .zip file ファイルをダウンロードするか GitHub リポジトリのクローンを作成します。 | 以下のオプションのいずれかを選択してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)<pre>git clone https://github.com/aws-samples/migration-validator-toolkit-for-microsoft-workloads.git</pre> | システム管理者 | 
| server.csv リストを更新します。 | .zip ファイルをダウンロードした場合は、次の手順に従います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html) | システム管理者 | 
| モジュールを呼び出す。 | ターゲットのコンピュータへの管理者アクセス権を持つドメインユーザーを使用するドメイン内の任意のコンピュータを使用できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html)<pre>Import-Module .\MigrationValidatorToolkit.psm1;Invoke-DomainComputers</pre>出力の .csv ファイルは、プレフィックス名 `DomainComputers_MigrationAutomations_YYYY-MM-DDTHH-MM-SS` で `MigrationValidatorToolkit\Outputs\folder` に保存されます。 | システム管理者 | 

## トラブルシューティング
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| `MigrationValidatorToolkit` は、実行、コマンド、エラーに関する情報を実行中のホストのログファイルに書き込みます。 | ログファイルは、次の場所で手動で閲覧できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.html) | 

## 関連リソース
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-resources"></a>
+ [Microsoft ワークロードを AWS (AWS 規範ガイダンス) に移行するためのオプション、ツール、ベストプラクティス](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-microsoft-workloads-aws/introduction.html)
+ [Microsoft 移行パターン](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migration-migration-patterns-by-workload-microsoft-pattern-list.html) (AWS 規範ガイダンス)
+ [AWS での無料のクラウド移行サービス ](https://aws.amazon.com/free/migration/) (AWS ドキュメント)
+ [事前定義された起動後アクション](https://docs.aws.amazon.com/mgn/latest/ug/predefined-post-launch-actions.html) (アプリケーションマーケティングドキュメント)

## 追加情報
<a name="accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws-additional"></a>

**よくある質問**

*Migration Validator Toolkit PowerShell モジュールはどこで実行できますか?*

Microsoft Windows Server 2012 R2 以降でモジュールを実行できます。

*このモジュールはいつ実行すればよいですか?*

移行ジャーニー[の評価段階で](https://aws.amazon.com/cloud-migration/how-to-migrate/)モジュールを実行することが推奨されます。

*このモジュールは既存のサーバーに変更を加えますか?*

いいえ。このモジュールのすべてのアクションは読み取り専用です。

*モジュールの実行にはどのくらいの時間がかかりますか?*

通常、モジュールの実行には 1～5 分かかりますが、サーバーのリソース割り当てによって異なります。

*モジュールを実行するにはどのアクセス許可が必要ですか?*

モジュールはローカルの管理者アカウントから実行する必要があります。

*モジュールは物理サーバーで実行できますか?*

はい。オペレーティングシステムが Microsoft Windows Server 2012 R2 以降であれば実行できます。

*複数のサーバーに対してモジュールを大規模に実行するにはどうすればよいですか?*

複数のドメインに参加しているコンピュータでモジュールを大規模に実行するには、本ガイドの「*Migration Validator Toolkit PowerShell モジュールを複数のターゲットで実行する*」のステップに従います。複数のドメインに参加していないコンピュータの場合は、本ガイドの「*Migration Validator Toolkit PowerShell モジュールを 1 つのターゲットで実行する*」のステップに従います。

# へのリホスト移行中にファイアウォールリクエストの承認プロセスを作成する AWS
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws"></a>

*Amazon Web Services、Srikanth Rangavajhala*

## 概要
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-summary"></a>

へのリホスト移行に [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)または [Cloud Migration Factory on AWS](https://aws.amazon.com/solutions/implementations/cloud-migration-factory-on-aws/) を使用する場合 AWS クラウド、前提条件の 1 つは TCP ポート 443 と 1500 を開いたままにしておくことです。通常、これらのファイアウォールポートを開くには、情報セキュリティ (InfoSec) チームによる承認が必要です。

このパターンは、 AWS クラウドへのリホスト移行中に InfoSec チームからファイアウォールリクエストの承認を得るプロセスの概要を示しています。このプロセスにより、コストと時間がかかる可能性のある InfoSec チームによるファイアウォールリクエストの拒否を回避できます。ファイアウォールリクエストプロセスには、 AWS 移行コンサルタントと、InfoSec とアプリケーションチームと協力してファイアウォールポートを開くリーダーの間で、2 つのレビューと承認のステップがあります。

このパターンは、組織の AWS コンサルタントまたは移行スペシャリストによるリホスト移行を計画していることを前提としています。このパターンは、組織にファイアウォール承認プロセスやファイアウォールリクエストの一括承認フォームがない場合に使用できます。詳細については、このパターンの「*制限事項*」セクションを参照してください。Application Migration Service のネットワーク要件の詳細については、「Application Migration Service のドキュメント」の「[ネットワークの要件](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html)」を参照してください。

## 前提条件と制限事項
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-prereqs"></a>

**前提条件**
+ 組織の AWS コンサルタントまたは移行スペシャリストによる計画的なリホスト移行
+ スタックの移行に必要なポートと IP 情報
+ 現在と未来の状態のアーキテクチャ図
+ オンプレミスと宛先のインフラストラクチャ、ポート、ゾーン間のトラフィックフローに関するファイアウォール情報
+ ファイアウォールリクエストのレビューチェックリスト (添付)
+ 組織の要件により構成されたファイアウォール申請書類
+ 以下のロールを含むファイアウォールのレビュー担当者と承認者の連絡先リスト。
  + **ファイアウォールリクエスト送信者** – AWS 移行スペシャリストまたはコンサルタント。ファイアウォールリクエスト送信者は、組織の移行スペシャリストでもかまいません。
  + **ファイアウォールリクエストレビューワー** – 通常、これは 1 つの問い合わせ先 (SPOC) です AWS。
  + **ファイアウォールリクエスト承認者** – InfoSec チームメンバー。

**制限事項**
+ このパターンは、一般的なファイアウォールリクエスト承認プロセスを表しています。要件は組織によって異なる場合があります。
+ ファイアウォールリクエストのドキュメントの変更を必ず追跡してください。

次の表に、このパターンの使用例を示します。


| 
| 
| あなたの組織には既存のファイアウォール承認プロセスがありますか? | あなたの組織には既存のファイアウォール申請書がありますか?  | 推奨されるアクション | 
| --- |--- |--- |
| はい  | はい |  AWS コンサルタントまたは移行スペシャリストと協力して、組織のプロセスを実装します。 | 
| いいえ | はい | このパターンのファイアウォール承認プロセスを使用します。組織の AWS コンサルタントまたは移行スペシャリストを使用して、ファイアウォールリクエスト一括承認フォームを送信します。 | 
| いいえ | いいえ | このパターンのファイアウォール承認プロセスを使用します。組織の AWS コンサルタントまたは移行スペシャリストを使用して、ファイアウォールリクエスト一括承認フォームを送信します。 | 

## アーキテクチャ
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-architecture"></a>

次の表は、ファイアウォールリクエスト承認プロセスの手順を示しています。

![\[AWS クラウドへのリホスト移行中に InfoSec チームからファイアウォールリクエストの承認を得るプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/cf9b58ad-ab6f-43d3-92da-968529c8d042/images/c672f7ce-6e9f-4dbc-bf2c-4272a6c4432b.png)


## ツール
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-tools"></a>

「[Palo Alto Networks](https://www.paloaltonetworks.com/)」または「[SolarWinds](https://www.solarwinds.com/)」などのスキャナーツールを使用して、ファイアウォールと IP アドレスを分析し、検証できます。

## エピック
<a name="create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws-epics"></a>

### ファイアウォールリクエストを分析
<a name="analyze-the-firewall-request"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ポートと IP アドレスを分析します。 | ファイアウォールリクエストの送信者は、必要なファイアウォールポートと IP アドレスを把握するための初期分析を行います。これが完了したら、InfoSec チームが必要なポートを開いて IP アドレスをマッピングするよう要求されます。 | AWS クラウドエンジニア、移行スペシャリスト | 

### ファイアウォールリクエストを検証します。
<a name="validate-the-firewall-request"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ファイアウォール情報を検証します。 |  AWS クラウド エンジニアは、InfoSec チームとの会議をスケジュールします。この会議中、エンジニアはファイアウォールリクエスト情報を調べて検証します。通常、ファイアウォールリクエスト送信者は、ファイアウォールリクエスターと同じものです。この検証フェーズは、何か確認され、推奨された場合、承認者からのフィードバックに基づいて反復的に行うことができます。 | AWS クラウドエンジニア、移行スペシャリスト | 
| ファイアウォールリクエストのドキュメントを更新します。 | InfoSec チームがフィードバックを共有すると、ファイアウォールリクエストのドキュメントが編集、保存、再アップロードされます。この文書は繰り返しのたびに更新されます。このドキュメントはバージョン管理下の保存フォルダに保存することをお勧めします。つまり、すべての変更が追跡され、正しく適用されます。 | AWS クラウドエンジニア、移行スペシャリスト | 

### ファイアウォールリクエストを送信
<a name="submit-the-firewall-request"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ファイアウォールリクエストを送信します。 | ファイアウォールリクエスト承認者がファイアウォールの一括承認リクエストを承認すると、 AWS クラウド エンジニアはファイアウォールリクエストを送信します。このリクエストでは、解放が必要なポートと、 AWS アカウントへのマッピングと更新に必要な IP アドレスを指定します。ファイアウォールリクエストが提出されたら、提案やフィードバックを行うことができます。このフィードバックプロセスを自動化し、定義済みのワークフローメカニズムを通じて編集内容を提出することをお勧めします。  | AWS クラウドエンジニア、移行スペシャリスト | 

## アタッチメント
<a name="attachments-cf9b58ad-ab6f-43d3-92da-968529c8d042"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/cf9b58ad-ab6f-43d3-92da-968529c8d042/attachments/attachment.zip)」

# EC2 Windows インスタンスを AWS Managed Services アカウントに取り込み、移行
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account"></a>

*Amazon Web Services、Anil Kunapareddy および Venkatramana Chintha*

## 概要
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-summary"></a>

このパターンでは、Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスをAmazon Web Services (AWS) Managed Services (AMS) アカウントに移行して取り込むプロセスを段階的に説明しています。AMS は、インスタンスをより効率的かつ安全に管理するのに役立ちます。AMS は運用上の柔軟性を実現し、セキュリティとコンプライアンスを強化し、キャパシティの最適化とコストの削減を支援します。

このパターンでは、AMS アカウントのステージングサブネットに移行した EC2 Windows インスタンスから始まります。このタスクを実行するために、AWS アプリケーション移行サービスなど、さまざまな移行サービスとツールを利用できます。

AMS が管理する環境を変更するには、特定の操作またはアクションの変更要求 (RFC) を作成して送信します。AMS ワークロードインジェスト (WIGS) RFC を使用して、インスタンスを AMS アカウントに取り込み、カスタム Amazon マシンイメージ (AMI) を作成します。次に、別の RFC を送信して EC2 スタックを作成し、AMS が管理する EC2 インスタンスを作成します。詳細については、Kubernetes ドキュメントの[AMS ワークロード取り込み](https://docs.aws.amazon.com/managedservices/latest/appguide/ams-workload-ingest.html)を参照してください。

## 前提条件と制限
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-prereqs"></a>

**前提条件**
+ AMS が管理するアクティブな AWS アカウント
+ 既存のランディングゾーン
+ AMS が管理する VPC に変更を加える権限
+ AMS アカウントのステージングサブネットの Amazon EC2 Windows インスタンス
+ AMS WIGS を使用してワークロードを移行するための[一般的な前提条件](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-migrate-instance-prereqs.html)の完了
+ AMS WIGS を使用してワークロードを移行するための[Windows 前提条件](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-migrate-prereqs-win.html)の完了

**制限事項**
+ このパターンでは Windows サーバーを稼働させる EC2 インスタンス用です。このパターンでは、 Linux などの他のオペレーティングシステムを実行しているインスタンスに適用されません。

## アーキテクチャ
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-architecture"></a>

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

AMS アカウントのステージングサブネットにある Amazon EC2 Windows インスタンス

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

AWS Managed Services (AMS) によって管理されるAmazon EC2 Windows インスタンス

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

![\[Amazon EC2 Windows インスタンスを AWS Managed Services アカウントに移行して取り込むプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/393c21cb-b6c6-4446-b597-b62e29fdb7f8/images/0b2fa855-7460-49f8-9e7f-3485e6ce1745.png)


## ツール
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-tools"></a>

** サービス**
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/concepts.html)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。Amazon EC2 を使用して必要な分だけ仮想サーバーを起動できます。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [AWS Managed Services (AMS)](https://docs.aws.amazon.com/managedservices/?id=docs_gateway) は、モニタリング、インシデント管理、セキュリティガイダンス、パッチサポート、AWS ワークロードのバックアップなど、AWS インフラストラクチャの継続的な管理を提供することで、より効率的で安全な運用を支援します。

**その他のサービス**
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/) は Windows、Linux、および macOS で動作するMicrosoft の自動化および構成管理プログラムです。

## エピック
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-epics"></a>

### インスタンスの設定を行います。
<a name="configure-settings-on-the-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| DNS クライアント設定を変更します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 
| Windows 更新の設定を変更します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 
| ファイアウォールの有効化 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 

### AMS WIGS のインスタンスを準備します。
<a name="prepare-the-instance-for-ams-wigs"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| インスタンスをクリーンアップして準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 
| sppnp.dll ファイルを修復します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 
| WIG 以前の検証スクリプトを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 
| フェイルセーフ AMI を作成します。 | WIG 前の検証に成功したら、次のように取り込み前 AMI を作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html)詳細については、AMS ドキュメントの [AMI \$1 Create](https://docs.aws.amazon.com/managedservices/latest/ctref/deployment-advanced-ami-create.html)を参照してください。 | 移行エンジニア | 

### インスタンスの取り込みと検証
<a name="ingest-and-validate-the-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| RFC を提出して、ワークロードの取り込みスタックを作成します。 | AMS WIGS を起動するための変更要求 (RFC) を提出します。手順については、AMS ドキュメントの[ワークロードインジェストスタック：作成](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-workload-ingest-col.html) を参照してください。これによりワークロードの取り込みが開始され、バックアップツール、Amazon EC2 管理ソフトウェア、ウイルス対策ソフトウェアなど、AMS に必要なすべてのソフトウェアがインストールされます。 | 移行エンジニア | 
| 移行が成功に完了したことを検証します。 | ワークロードの取り込みが完了すると、AMS が管理するインスタンスと AMS に取り込まれた AMI が表示されます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 

### ターゲットの AMS アカウントでインスタンスを起動します。
<a name="launch-the-instance-in-the-target-ams-account"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| RFC を送信して EC2 スタックを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.html) | 移行エンジニア | 

## 関連リソース
<a name="ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account-resources"></a>

**AWS 規範ガイダンス**
+ [Windows 上の AWS Managed Services 事前ワークロード取り込みアクティビティを自動化](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automate-pre-workload-ingestion-activities-for-aws-managed-services-on-windows.html)
+ [Python を使用して AMS で RFC を自動的に作成する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automatically-create-an-rfc-in-ams-using-python.html?did=pg_card&trk=pg_card) 

**AMS ドキュメント**
+ [AMS ワークロードインジェスト](https://docs.aws.amazon.com/managedservices/latest/appguide/ams-workload-ingest.html) 
+ [移行でリソースを変更する方法](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-migrate-changes.html) 
+ [ワークロードの移行：標準プロセス](https://docs.aws.amazon.com/managedservices/latest/appguide/mp-migrate-stack-process.html) 

**マーケティングリソース**
+ [AWS マネージドサービス](https://aws.amazon.com/managed-services/)
+ [AWS Managed Services よくある質問](https://aws.amazon.com/managed-services/faqs/)
+ [AWS Managed Services リソース](https://aws.amazon.com/managed-services/resources/) 
+ [AWS Managed Services 機能](https://aws.amazon.com/managed-services/features/)

# Couchbase Server データベースを Amazon EC2 に移行する
<a name="migrate-couchbase-server-ec2"></a>

*Amazon Web Services、Subhani Shaik*

## 概要
<a name="migrate-couchbase-server-ec2-summary"></a>

このパターンでは、 AWS上で Couchbase Server をオンプレミス環境から Amazon Elastic Compute Cloud (Amazon EC2) に移行する方法について説明します。

Couchbase Server は、リレーショナルデータベース機能を提供する分散 NoSQL (JSON ドキュメント) データベースです。Couchbase Server データベースを に移行 AWS することで、スケーラビリティの向上、パフォーマンスの向上、コスト効率の向上、セキュリティの強化、管理の簡素化、グローバルリーチを実現でき、高可用性と低レイテンシーのデータアクセスを必要とするアプリケーションにメリットをもたらします。また、 AWS マネージドサービスを通じて高度な機能にアクセスすることもできます。

の Couchbase Server AWS には、次の主要な機能があります。 
+ メモリファーストアーキテクチャ
+ 高可用性、ディザスタリカバリ、ロードバランシング
+ 最適なパフォーマンスを実現するマルチマスター、マルチリージョンのデプロイ

機能について、詳細は「[追加情報](#migrate-couchbase-server-ec2-additional)」セクションおよび [Couchbase ウェブサイト](https://www.couchbase.com/partners/amazon/)をご確認ください。

## 前提条件と制限事項
<a name="migrate-couchbase-server-ec2-prereqs"></a>

**前提条件**
+ 仮想プライベートクラウド (VPC)、2 つのアベイラビリティーゾーン、プライベートサブネット、セキュリティグループ AWS アカウント を持つアクティブな 。手順については、Amazon Virtual Private Cloud (Amazon VPC) の「[VPC を作成する](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)」を参照してください。
+ ソース環境とターゲット環境間の接続が有効になります。Couchbase Server が利用する TCX ポートについて、詳細は [Couchbase ドキュメント](https://docs.couchbase.com/server/current/install/install-ports.html)を参照してください。

## アーキテクチャ
<a name="migrate-couchbase-server-ec2-architecture"></a>

次の図は、Couchbase Server を に移行するための大まかなアーキテクチャを示しています AWS。

![\[AWS で Couchbase Server をリホストするための移行アーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4cedced2-3528-4f12-b19e-7d389e820cc1/images/ac22133a-895f-4999-b1e1-57f69e83a326.png)


[AWS Direct Connect](https://aws.amazon.com/directconnect/) 使用して、データがオンプレミスの Couchbase クラスターからカスタマーゲートウェイを経由して移動します。データはルーターと Direct Connect ルートを通過し、 [AWS Virtual Private Network (Site-to-Site VPN)](https://aws.amazon.com/vpn/) ゲートウェイを介して VPC に到達します。VPC には、Couchbase Server を実行している EC2 インスタンスが含まれています。この AWS インフラストラクチャには、アクセスコントロール用の [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)、データ暗号化用の [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/)、ブロックストレージ用の [Amazon Elastic Block Store (Amazon EBS)](https://aws.amazon.com/ebs/)、データストレージ用の [Amazon Simple Storage Service (Amazon S3) ](https://aws.amazon.com/s3/)も含まれています。

## ツール
<a name="migrate-couchbase-server-ec2-tools"></a>

**AWS のサービス**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) は、標準イーサネット光ファイバケーブルを介して内部ネットワークを Direct Connect ロケーションにリンクします。この接続を使用すると、ネットワークパスでインターネットサービスプロバイダーをバイパス AWS のサービス しながら、パブリックに直接仮想インターフェイスを作成できます。

## ベストプラクティス
<a name="migrate-couchbase-server-ec2-best-practices"></a>
+ さまざまな運用プラットフォームでの [Couchbase のインストールと設定](https://docs.couchbase.com/server/current/install/install-intro.html)
+ に Couchbase Server をデプロイするための[ベストプラクティス](https://docs.couchbase.com/server/current/cloud/couchbase-cloud-deployment.html#aws-best-practices) AWS
+ [Couchbase クラスターの作成](https://docs.couchbase.com/server/current/manage/manage-nodes/create-cluster.html)
+ Couchbase アプリケーションの[パフォーマンスベストプラクティス](https://docs.couchbase.com/dotnet-sdk/current/project-docs/performance.html)
+ Couchbase Server の[セキュリティベストプラクティス](https://docs.couchbase.com/server/current/learn/security/security-overview.html)
+ Couchbase Server データベースの[ストレージベストプラクティス](https://www.couchbase.com/forums/t/what-is-the-best-document-storage-strategy-in-couchbase/1573)

## エピック
<a name="migrate-couchbase-server-ec2-epics"></a>

### Couchbase Server 用の Amazon EC2 インスタンスをデプロイする
<a name="deploy-an-ec2-instance-for-couchbase-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 コンソールを開きます。 | [AWS マネジメントコンソール](https://console.aws.amazon.com/)にサインインし、[Amazon EC2 コンソール](https://console.aws.amazon.com/ec2/)を開きます。 | DevOps エンジニア、Couchbase 管理者 | 
| Amazon EC2 インスタンスをデプロイします。 | オンプレミスの Couchbase Server 設定と一致する EC2 インスタンスを起動します。EC2 インスタンスのデプロイについて、詳細は Amazon EC2 ドキュメントの「[Amazon EC2 インスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)」を参照してください。 | DevOps エンジニア、Couchbase 管理者 | 

### Amazon EC2 での Couchbase Server のインストールと設定
<a name="install-and-configure-couchbase-server-on-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Couchbase クラスターをインストールします。 | Amazon EC2 に Couchbase Server をインストールする前に、「[Couchbase Server のデプロイガイドライン](https://docs.couchbase.com/server/current/install/install-production-deployment.html)」を参照してください。Couchbase Server をインストールするには、[Couchbase Server のドキュメント](https://docs.couchbase.com/server/current/install/install-intro.html)を参照してください。 | Couchbase 管理者 | 
| クラスターを設定します。 | クラスターを設定するには、Couchbase ドキュメントの「[クラスター設定のオプション](https://docs.couchbase.com/cloud/clusters/databases.html#cluster-configuration-options)」を参照してください。 | Couchbase 管理者 | 

### 新しいノードを追加して Couchbase クラスターを再調整する
<a name="add-a-new-node-and-rebalance-the-couchbase-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスのノードを追加します。 | Couchbase をインストールしてデプロイ済みである EC2 インスタンスを、既存のオンプレミスクラスターに追加します。手順については、Couchbase Server ドキュメントの「[ノードとリバランスを追加する](https://docs.couchbase.com/server/current/manage/manage-nodes/add-node-and-rebalance.html)」を参照してください。 | Couchbase 管理者 | 
| クラスターを再調整します。 | 再調整プロセスにより、EC2 インスタンスで新しく追加されたノードが Couchbase クラスターのアクティブなメンバーになります。手順については、Couchbase Server ドキュメントの「[ノードとリバランスを追加する](https://docs.couchbase.com/server/current/manage/manage-nodes/add-node-and-rebalance.html)」を参照してください。 | Couchbase 管理者 | 

### 接続の再設定
<a name="reconfigure-connections"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミスノードを削除して再調整します。 | クラスターからオンプレミスノードを削除できるようになりました。ノードを削除したら、再調整プロセスに従って、クラスター内の使用可能なノード間でデータ、インデックス、イベント処理、クエリ処理を再分散します。手順については、Couchbase Server ドキュメントの「[ノードとリバランスを削除する](https://docs.couchbase.com/server/current/manage/manage-nodes/remove-node-and-rebalance.html)」を参照してください。 | Couchbase 管理者 | 
| 接続パラメータを更新します。 | アプリケーションが新しいノードに接続できるように、アプリケーションの接続パラメータを新しい Amazon EC2 IP アドレスを使用するパラメータに更新します。 | Couchbase アプリケーション開発者 | 

## 関連リソース
<a name="migrate-couchbase-server-ec2-resources"></a>
+ [Couchbase Server サービス](https://docs.couchbase.com/server/current/learn/services-and-indexes/services/services.html)
+ [を使用して Couchbase サーバーをデプロイする AWS Marketplace](https://docs.couchbase.com/server/current/cloud/couchbase-aws-marketplace.html)
+ [Couchbase Server に接続する](https://docs.couchbase.com/server/current/guides/connect.html)
+ [バケットの管理](https://docs.couchbase.com/server/current/manage/manage-buckets/bucket-management-overview.html)
+ [クロスデータセンターレプリケーション (XDCR)](https://docs.couchbase.com/server/current/learn/clusters-and-availability/xdcr-overview.html)
+ [Couchbase Inc. ライセンス契約](https://www.couchbase.com/LA20190115/)

## 追加情報
<a name="migrate-couchbase-server-ec2-additional"></a>

**主な利点**

Couchbase データベースを に移行する AWS と、次の利点があります。

**スケーラビリティ**。物理ハードウェアを管理することなく、需要に応じて Couchbase クラスターをスケールアップまたはスケールダウンできるため、変動するデータボリュームやアプリケーションの使用状況に簡単に対応できます。 AWS が提供するものは次のとおりです。
+ 垂直スケーリングオプションと水平スケーリングオプション
+ [グローバルデプロイ](https://aws.amazon.com/about-aws/global-infrastructure/)機能
+ 間のロードバランシング AWS リージョン
+ [データベーススケーリングのソリューション](https://aws.amazon.com/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizontally/)
+ [コンテンツ配信](https://aws.amazon.com/solutions/content-delivery/)の最適化

**パフォーマンス最適化**. は、Couchbase データベースに高速なデータアクセスと低レイテンシーを確保するために、高性能なネットワークインフラストラクチャと[最適化されたインスタンスタイプ](https://aws.amazon.com/ec2/instance-types/) AWS を提供します。
+ [ハイパフォーマンスコンピューティング (HPC)](https://aws.amazon.com/hpc/) のオプション
+ [Amazon CloudFront](https://aws.amazon.com/cloudfront/) を介したグローバルコンテンツ配信
+ [複数のストレージオプション](https://aws.amazon.com/products/storage/)
+ Amazon Relational Database Service (Amazon RDS) および Amazon DynamoDB を含む高度な[データベースサービス](https://aws.amazon.com/products/databases/)
+ [Direct Connect](https://aws.amazon.com/directconnect/) を使用した低レイテンシー接続

**コスト最適化。**適切なインスタンスタイプと設定を選択して、ワークロードに基づいてパフォーマンスとコストのバランスを取ります。料金は、使用したリソースに対してのみ発生します。これにより、オンプレミスハードウェアを管理する必要がなくなり、スケール AWS クラウド メリットを活用できるため、運用コストを削減できる可能性があります。
+ [リザーブドインスタンス](https://aws.amazon.com/ec2/pricing/reserved-instances/)は、 AWSで Couchbase を使用する際に事前計画を立て、コストを大幅に削減するのに役立ちます。
+ [自動スケーリング](https://aws.amazon.com/autoscaling/)はオーバープロビジョニングを防ぎ、使用率とコスト効率を最適化するのに役立ちます。

**強化されたセキュリティ** データ暗号化 AWS、アクセスコントロール、セキュリティグループなどの堅牢なセキュリティ機能を活用して、Couchbase に保存する機密データを保護します。その他の利点: 
+ [AWS 責任共有モデルは](https://aws.amazon.com/compliance/shared-responsibility-model/)、**クラウドのセキュリティ (AWS 責任) とクラウド*内の*セキュリティ (お客様の責任) を明確に区別します。
+ [AWS コンプライアンス](https://aws.amazon.com/compliance/)は、主要なセキュリティ標準をサポートしています。
+ AWS には、高度な[暗号化](https://docs.aws.amazon.com/prescriptive-guidance/latest/encryption-best-practices/welcome.html)オプションが用意されています。
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) は、 リソースへの安全なアクセスを管理するのに役立ちます。

**簡素化された management**. は Couchbase のマネージドサービス AWS を提供するため、基盤となるインフラストラクチャを管理する代わりに、アプリケーション開発に集中できます。

**グローバルリーチ**。Couchbase クラスターを複数の にデプロイ AWS リージョン して、世界中のユーザーに低レイテンシーを実現できます。データベースは、クラウドまたはハイブリッド環境で完全にデプロイできます。企業規模の組み込み型セキュリティと、エッジからクラウドへの双方向で行われる高速で効率的な同期によってデータを保護します。また、ウェブおよびモバイルアプリの構築に最適な一貫性のあるプログラミングモデルを活用して、開発業務を簡素化できます。

**ビジネス継続性**: 
+ **データのバックアップと復旧** 問題の発生時には、[AWS Backup](https://aws.amazon.com/backup/) を使用してデータを復元し、簡単に復旧させることができます。ディザスタリカバリのオプションについては、「[AWS Well-Architected フレームワーク](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html)」をご確認ください。
+ **Couchbase マルチリージョンデプロイ**: マルチリージョン AWS 環境に Couchbase データベースをデプロイするには、 で Couchbase Server にサブスクライブし[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-zy5g2wqmqdyzw)、 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)テンプレートを使用して各リージョンに個別の Couchbase クラスターを作成し、リージョン間でデータを同期するようにクロスリージョンレプリケーションを設定できます。この設定により、複数のリージョン間で高い可用性と地理的冗長性を確保できます。詳しくは、Couchbase ドキュメントの「[Deploy Couchbase Server Using AWS Marketplace](https://docs.couchbase.com/server/current/cloud/couchbase-aws-marketplace.html)」を参照してください。

**インフラストラクチャの俊敏性**:
+ 迅速な[リソースプロビジョニング](https://aws.amazon.com/products/management-and-governance/use-cases/provisioning-and-orchestration/)とプロビジョニング解除
+ [グローバルインフラストラクチャ](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/)のリーチ
+ 需要に基づく[自動スケーリング](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html)
+ 安定したデプロイを実現する [Infrastructure as Code (IaC)](https://aws.amazon.com/what-is/iac/)
+ 異なるワークロードに最適化された複数の[インスタンスタイプ](https://aws.amazon.com/ec2/instance-types/)

**イノベーションの有効化**:
+ [AI/ML](https://aws.amazon.com/ai/generative-ai/)、[IoT](https://aws.amazon.com/iot/)、[分析](https://aws.amazon.com/big-data/datalakes-and-analytics/)などの最新テクノロジー
+ 運用オーバーヘッドを低減する[マネージドサービス](https://aws.amazon.com/blogs/architecture/reduce-operational-load-using-aws-managed-services-for-your-data-solutions/)
+ [最新アプリケーション](https://aws.amazon.com/modern-apps/)の開発作業
+ [サーバーレス](https://aws.amazon.com/serverless/)コンピューティング

**オペレーショナルエクセレンス**: 
+ [一元監視とログ記録](https://docs.aws.amazon.com/prescriptive-guidance/latest/designing-control-tower-landing-zone/logging-monitoring.html)
+ [自動リソース管理](https://aws.amazon.com/systems-manager/)
+ [予知保全](https://aws.amazon.com/what-is/predictive-maintenance/)機能
+ リソース使用状況の[可視性強化](https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-cloudwatch-provides-centralized-visibility-telemetry-configurations/) 
+ [効率的なデプロイプロセス](https://aws.amazon.com/blogs/mt/streamline-change-processes-and-improve-governance-with-aws-well-architected/)

**モダナイズの機会**:
+ [マイクロサービス](https://aws.amazon.com/microservices/)アーキテクチャ
+ [DevOps](https://aws.amazon.com/devops/) プラクティスの実装
+ [クラウドネイティブ](https://aws.amazon.com/what-is/cloud-native/)アプリケーション開発
+ [レガシーアプリケーションのモダナイゼーション](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-modernizing-applications/welcome.html)

**競争上の利点**:
+ [市場投入までの時間を短縮](https://aws.amazon.com/blogs/smb/accelerate-time-to-market-and-business-growth-with-an-automated-software-as-a-service-platform/)
+ [カスタマーエクスペリエンス](https://aws.amazon.com/blogs/publicsector/improving-customer-experience-for-the-public-sector-using-aws-services/)の向上
+ [データに基づく](https://aws.amazon.com/data/data-driven-decision-making/)意思決定
+ 強力な[ビジネスインテリジェンス](https://aws.amazon.com/what-is/business-intelligence/)

# ログ配信を使用して Db2 for LUW を Amazon EC2 に移行することで、システム停止時間を短縮する
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time"></a>

*Amazon Web Services、Feng Cai、Ambarish Satarkar、Saurabh Sharma*

## 概要
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-summary"></a>

IBM Db2 for LUW (Linux、UNIX、Windows) のワークロードを Amazon Web Services (AWS) に移行する場合は、Amazon Elastic Compute Cloud (Amazon EC2) と Bring Your Own License (BYOL) モデルを使用すると最も迅速に行うことができます。しかし、膨大なデータをオンプレミスの Db2 から AWS に移行することは容易ではありません。特に、停止期間が限られている場合はなおさらです。多くのお客様は、停止時間を 30 分未満に設定しようとしています。これにより、データベース自体に費やす時間が少なくなります。

このパターンでは、トランザクションログ配信を使用して、停止時間を短くして Db2 の移行を実現する方法を扱っています。このアプローチは、リトルエンディアン Linux プラットフォームで実行される Db2 にも運用できます。

## 前提条件と制限事項
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスファイルシステムのレイアウトと一致する EC2 インスタンス上で実行される Db2 インスタンス
+ EC2 インスタンスにアクセス可能な Amazon Simple Storage Service (Amazon S3) バケット
+ Amazon S3 をプログラムで呼び出すための AWS Identity and Access Management (IAM) ポリシーとロール 
+ Amazon EC2 とオンプレミスサーバーのタイムゾーンとシステムクロックの同期
+ [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) または [AWS Direct Connect](https://aws.amazon.com/directconnect/) を介して AWS に接続されたオンプレミスのネットワーク

**制限事項**
+ Db2 オンプレミスインスタンスと Amazon EC2 は同じ[プラットフォームファミリー](https://www.ibm.com/docs/en/db2/11.1?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)に配置する必要があります。
+ Db2 のオンプレミスワークロードをログ記録する必要があります。ログに記録されていないトランザクションをブロックするには、データベース設定で `blocknonlogged=yes` を設定します。

**製品バージョン**
+ Db2 for LUW バージョン 11.5.9 以降

## アーキテクチャ
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-architecture"></a>

**ソーステクノロジースタック**
+ Db2 on Linux** **x86\$164

**ターゲットテクノロジースタック**
+ Amazon EBS
+ Amazon EC2
+ AWS Identity and Access Management (IAM)
+ Amazon S3
+ AWS Site-to-Site VPN または Direct Connect

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

次の図は、Db2 on Amazon EC2 への仮想プライベートネットワーク (VPN) 接続を介してオンプレミスで実行されている Db2 インスタンスの例を示しています。点線は、データセンターと AWS クラウド間の VPN トンネルを表しています。

![\[トランザクションログ配信を使用して、短い停止期間内で Db2 の移行を実現するワークフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7dec6e4a-a92e-4204-9e42-f89d7dcafbfa/images/a7e1c1d6-2ec1-4271-952d-a58260ad7c81.png)


## ツール
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-tools"></a>

**AWS サービス**
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) は、標準のイーサネット光ファイバーケーブルを介して内部ネットワークを Direct Connect の場所にリンクします。この接続を使用すると、Amazon S3 などのパブリックサービス、または Amazon VPC に対する仮想インターフェイスを直接作成できるため、ネットワークパスのインターネットサービスプロバイダーを回避できます。
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) は、 Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで使用するブロックレベルストレージのボリュームを提供します。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) は、AWS で起動するインスタンスと独自のリモートネットワーク間でトラフィックを渡すのに役立ちます。

**その他のツール**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) は、 Db2 のインタラクティブ CLI コマンドです。

## ベストプラクティス
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-best-practices"></a>
+ ターゲットデータベースで、[Amazon S3 のゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)を使用して、Amazon S3 のデータベースバックアップイメージとログファイルにアクセスします。
+ ソースデータベースで、[AWS PrivateLink for Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) を使用して、データベースのバックアップイメージとログファイルを Amazon S3 に送信します。

## エピック
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-epics"></a>

### 環境変数を設定する
<a name="set-environment-variables"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 環境変数を設定する。 | このパターンは、次の名前を使用しています。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.html)環境に合わせて変更することができます。 | DBA | 

### オンプレミスの Db2 サーバーを設定する
<a name="configure-the-on-premises-db2-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS CLI をセットアップします。 | 最新バージョンの AWS CLI をダウンロードしてインストールするには、次のコマンドを実行します。<pre>$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />sudo ./aws/install</pre> | Linux 管理者 | 
| Db2 アーカイブログのローカル送信先を設定します。 | Amazon EC2 上のターゲットデータベースをオンプレミスのソースデータベースと同期させるには、ソースデータベースから最新のトランザクションログを取得する必要があります。このセットアップでは、`/db2logs` はソース上の `LOGARCHMETH2` によってステージング領域として設定されます。このディレクトリにアーカイブされたログは Amazon S3 に同期され、Db2 on Amazon EC2 によってアクセスされます。AWS CLI コマンドではアクセスできないサードパーティベンダーツールを使用するように `LOGARCHMETH2` が設定されている可能性があるため、このモードでは `LOGARCHMETH1` が使用されます。ログを取得するには、次のコマンドを実行します。<pre>db2 connect to sample<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs</pre> | DBA | 
| オンラインデータベースのバックアップを実行します。 | オンラインデータベースのバックアップを実行し、ローカルのバックアップファイルシステムに保存します。<pre>db2 backup db sample online to /backup </pre> | DBA | 

### S3 バケットおよび IAM ポリシーをセットアップする
<a name="set-up-the-s3-bucket-and-iam-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | オンプレミスサーバー用の S3 バケットを作成して、バックアップ Db2 イメージとログファイルを AWS に送信します。　 Amazon EC2 もこのバケットにアクセスします。<pre>aws s3api create-bucket --bucket logshipmig-db2 --region us-east-1 </pre> | AWS システム管理者 | 
|  IAM ポリシーを作成します。 | この `db2bucket.json` ファイルには、Amazon S3 バケットにアクセスするための IAM ポリシーが含まれています。<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "kms:GenerateDataKey",<br />                "kms:Decrypt",<br />                "s3:PutObject",<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:ListBucket",<br />                "s3:DeleteObject",<br />                "s3:GetObjectVersion",<br />                "s3:ListMultipartUploadParts"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::logshipmig-db2/*",<br />                "arn:aws:s3:::logshipmig-db2"<br />            ]<br />        }<br />    ]<br />}</pre>次の AWS CLI コマンドを使用して、ポリシーを作成します。<pre>aws iam create-policy \<br />      --policy-name db2s3policy \<br />      --policy-document file://db2bucket.json </pre> JSON 出力には、ポリシーの Amazon リソースネーム (ARN) が表示されます。ここで、`aws_account_id` はアカウント ID を表します。<pre>"Arn": "arn:aws:iam::aws_account_id:policy/db2s3policy"</pre> | AWS 管理者、AWS システム管理者 | 
| EC2 インスタンスが使用する IAM ロールに IAM ポリシーをアタッチします。 | ほとんどの AWS 環境では、システム管理者によって、実行中の EC2 インスタンスに IAM ロールが設定されています。IAM ロールが設定されていない場合は、ロールを作成し、EC2 コンソールで **[IAM ロールの変更]** を選択して、Db2 データベースをホストする EC2 インスタンスにロールを関連付けてください。ポリシー ARN を使用して、IAM ポリシーを IAM ロールにアタッチします。<pre>aws iam attach-role-policy \<br />    --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3policy"  \<br />    --role-name db2s3role  </pre>ポリシーがアタッチされると、IAM ロールに関連付けられた EC2 インスタンスは S3 バケットにアクセスできるようになります。 | AWS 管理者、AWS システム管理者 | 

### ソースデータベースのバックアップイメージとログファイルを Amazon S3 に送信します。
<a name="send-the-source-database-backup-image-and-log-files-to-amazon-s3"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミスの Db2 サーバーで AWS CLI を設定します。　 | 前の手順で生成した `Access Key ID` と `Secret Access Key` を使用して AWS CLI を設定します。<pre>$ aws configure <br />AWS Access Key ID [None]: *************<br />AWS Secret Access Key [None]: ***************************<br />Default region name [None]: us-east-1<br />Default output format [None]: json</pre>  | AWS 管理者、AWS システム管理者 | 
| Amazon S3 にバックアップイメージを送信します。 | 以前は、オンラインデータベースのバックアップが `/backup` ローカルディレクトリに保存されていました。次のコマンドを実行して、バックアップイメージを S3 バケットに送信します。<pre>aws s3 sync /backup s3://logshipmig-db2/SAMPLE_backup</pre> | AWS 管理者、移行エンジニア | 
| Amazon S3 に Db2 アーカイブログを送信します。 | オンプレミスの Db2 アーカイブログを、Amazon EC2 上のターゲット Db2 インスタンスがアクセスできる S3 バケットと同期します。<pre>aws s3 sync /db2logs s3://logshipmig-db2/SAMPLE_LOG</pre>cron または他のスケジューリングツールを使用して、このコマンドを定期的に実行します。この頻度は、ソースデータベースがトランザクションログファイルをアーカイブする頻度に応じて異なります。 | AWS 管理者、移行エンジニア | 

### Db2 on Amazon EC2 を Amazon S3 に接続し、データベース同期を開始します。
<a name="connect-db2-on-amazon-ec2-to-amazon-s3-and-start-the-database-sync"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PKCS12 キーストアを作成します。 | Db2 は、公開鍵暗号規格 (PKCS) 暗号化キーストアを使用して AWS アクセスキーをセキュアに保護します。キーストアを作成し、ソース Db2 インスタンスがそれを使用するように設定します。<pre>gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash <br /> <br />db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"</pre> | DBA | 
| Db2 ストレージアクセスエイリアスを作成します。 | [ストレージアクセスエイリアス](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access)を作成するには、以下のスクリプト構文を使用します。`db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> container '<bucket_name>'"`例えば、スクリプトは次のようになります。`db2 "catalog storage access alias DB2AWSS3 vendor S3 server s3.us-east-1.amazonaws.com container 'logshipmig-db2'" ` | DBA | 
| ステージング領域を設定します。 | デフォルトでは、Db2 は Amazon S3 でファイルをアップロードおよびダウンロードするためのステージング領域として `DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH` を使用します。デフォルトのパスは、インスタンスのホームディレクトリの下にある `sqllib/tmp/RemoteStorage.xxxx` で、`xxxx` は Db2 パーティション番号を参照します。ステージング領域には、バックアップイメージとログファイルを保存するために十分な容量が必要であることに注意してください。レジストリを使用して、ステージング領域を別のディレクトリにポイントできます。　また、`DB2_ENABLE_COS_SDK=ON` と `DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore` および `awssdk` ライブラリへのリンクを使用して、Amazon S3 ステージング領域をバイパスし、データベースのバックアップと復元することも推奨されています。<pre>#By root:<br />cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/<br /><br />#By db2 instance owner:<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2set DB2_ENABLE_COS_SDK=ON<br />Db2set DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore<br />db2stop<br />db2start</pre> | DBA | 
| バックアップイメージからデータベースを復元します。 | S3 バケットのバックアップイメージから Amazon EC2 上のターゲットデータベースを復元します。<pre>db2 restore db sample from DB2REMOTE://DB2AWSS3/logshipmig-db2/SAMPLE_backup replace existing</pre> | DBA | 
| データベースをロールフォワードします。 | 復元が完了すると、ターゲットデータベースはロールフォワード保留状態になります。Db2 がトランザクションログファイルを取得する場所を認識できるように、`LOGARCHMETH1` と `LOGARCHMETH2` を設定します。<pre>db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/'<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 OFF</pre>データベースのロールフォワードを開始します。<pre>db2 ROLLFORWARD DATABASE sample to END OF LOGS</pre>このコマンドは S3 バケットに転送されたすべてのログファイルを処理します。`s3 sync` コマンドは、オンプレミス Db2 サーバー上で定期的に実行されます。例えば、`s3 sync` を 1 時間ごとに実行し、すべてのログファイルを同期するのに 10分 かかる場合は、コマンドを 1 時間おきに 10 分間実行するように設定します。 | DBA | 

### カットオーバー期間中に Db2 on Amazon EC2 をオンラインにします
<a name="bring-db2-on-amazon-ec2-online-during-the-cutover-window"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースをオンラインにします。 | カットオーバー期間中、以下のいずれかの操作を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.html)最後のトランザクションログを Amazon S3 と同期したら、最後に `ROLLFORWARD` コマンドを実行します。<pre>db2 rollforward DB sample to END OF LOGS<br />db2 rollforward DB sample complete<br /><br />                                 Rollforward Status<br />....<br /> Rollforward status                     = not pending<br />....<br />DB20000I  The ROLLFORWARD command completed successfully.<br /><br />db2 activate db sample<br />DB20000I  The ACTIVATE DATABASE command completed successfully.</pre>ターゲットデータベースをオンラインにし、アプリケーション接続を Db2 on Amazon EC2 にポイントします。 | DBA | 

## トラブルシューティング
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| 複数のデータベースが異なるホスト (DEV、QA、PROD) で同じインスタンス名とデータベース名を持つ場合、バックアップとログは同じサブディレクトリに移動することがあります。 | DEV、QA、PROD には異なる S3 バケットを使用し、混乱を避けるためにホスト名をサブディレクトリのプレフィックスとして追加してください。 | 
| 同じ場所に複数のバックアップイメージがある場合、復元時に次のエラーが表示されます。`SQL2522N More than one backup file matches the time stamp value provided for the backed up database image.` | `restore` コマンドに、バックアップのタイムスタンプを追加します。`db2 restore db sample from DB2REMOTE://DB2AWSS3/logshipmig-db2/SAMPLE_backup taken at 20230628164042 replace existing` | 

## 関連リソース
<a name="migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time-resources"></a>
+ 「[異なるオペレーティングシステムとハードウェアプラットフォーム間の Db2 バックアップおよびリストア操作](https://www.ibm.com/docs/en/db2/11.5?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)」
+ [「Db2 ストレージアクセスエイリアスと DB2-REMOTE の設定」](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access)
+ [「Db2 ロールフォワードコマンド」](https://www.ibm.com/docs/en/db2/11.5?topic=commands-rollforward-database)
+ [「　Db2 セカンダリログアーカイブ方式」](https://www.ibm.com/docs/en/db2/11.5?topic=parameters-logarchmeth2-secondary-log-archive-method)

# 高可用性ディザスタリカバリ機能を備えた Db2 for LUW を Amazon EC2 に移行する
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery"></a>

*Amazon Web Services、Feng Cai、Aruna Gangireddy、Venkatesan Govindan*

## 概要
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-summary"></a>

IBM Db2 LUW (Linux、UNIX、Windows) のワークロードを Amazon Web Services (AWS) へ移行する場合は、Amazon Elastic Compute Cloud (Amazon EC2) と Bring Your Own License (BYOL) モデルを使用します。しかし、膨大なデータをオンプレミスの Db2 から AWS に移行することは容易ではありません。特に、停止期間が限られている場合はなおさらです。多くのお客様は、停止時間を 30 分未満に設定しようとしています。これにより、データベース自体に費やす時間が少なくなります。

このパターンでは、Db2 の高可用性ディザスタリカバリ (HADR) を使用して、短期間の停止で Db2 を移行する方法を扱っています。　 このアプローチは、リトルエンディアン Linux プラットフォーム上にあり、データパーティショニング機能 (DPF) を使用していない Db2 データベースに適用されます。

## 前提条件と制限事項
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスファイルシステムのレイアウトと一致する Amazon EC2 インスタンス上で実行される Db2 インスタンス
+ EC2 インスタンスにアクセス可能な Amazon Simple Storage Service (Amazon S3) バケット
+ Amazon S3 をプログラムで呼び出すための AWS Identity and Access Management (IAM) ポリシーとロール 
+ Amazon EC2 とオンプレミスサーバーのタイムゾーンとシステムクロックの同期
+ [AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) または [AWS Direct Connect](https://aws.amazon.com/directconnect/) を介して AWS に接続されたオンプレミスのネットワーク
+ HADR ポートでのオンプレミスサーバーと Amazon EC2 間の通信　

**制限事項**
+ Db2 オンプレミスインスタンスと Amazon EC2 は同じ[プラットフォームファミリー](https://www.ibm.com/docs/en/db2/11.1?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)に配置する必要があります。
+ HADR はパーティション化されたデータベース環境ではサポートされません。
+ HADR は、データベースログファイルの RAW I/O (ディスクへの直接アクセス) の使用をサポートしていません。　
+ HADR は、無限ログ記録をサポートしていません。
+ `LOGINDEXBUILD` は `YES` に設定する必要があります。これにより、インデックスを再構築するためのログの使用量が増加します。
+ Db2 のオンプレミスワークロードをログ記録する必要があります。ログに記録されていないトランザクションをブロックするには、データベース設定で `blocknonlogged=yes` を設定します。

**製品バージョン**
+ Db2 for LUW バージョン 11.5.9 以降

## アーキテクチャ
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-architecture"></a>

**ソーステクノロジースタック**
+ Db2 on Linux** **x86\$164

**ターゲットテクノロジースタック**
+ Amazon EC2
+ AWS Identity and Access Management (IAM)
+ Amazon S3
+ AWS Site-to-Site VPN

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

以下の図では、オンプレミスの Db2 が `db2-server1` 上でプライマリとして稼働しています 2 つの HADR スタンバイターゲットがあります。1 つのスタンバイターゲットはオプションとしてオンプレミスに配置されています。もう 1 つのスタンバイターゲット `db2-ec2` は Amazon EC2 に配置されています。データベースが AWS に切り替わると、`db2-ec2` がプライマリになります。

![\[Db2 HADR を使用して、短い停止時間内でオンプレミス Db2 を移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2db43e4b-f0ea-4a92-96da-4cafb7d3368b/images/5295420e-3cd8-4127-9a18-ade971c36339.png)


1. ログはプライマリオンプレミスデータベースからスタンバイオンプレミスデータベースにストリーミングされます。

1. Db2 HADR を使用すると、ログはオンプレミスのプライマリデータベースから Site-to-Site VPN 経由で Db2 on Amazon EC2 にストリーミングされます。

1. Db2 のバックアップとアーカイブのログは、オンプレミスのプライマリデータベースから AWS の S3 バケットに送信されます。　

## ツール
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-tools"></a>

**AWS サービス**
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) は、標準のイーサネット光ファイバーケーブルを介して内部ネットワークを Direct Connect の場所にリンクします。この接続を使用すると、Amazon S3 などのパブリックサービス、または Amazon VPC に対する仮想インターフェイスを直接作成できるため、ネットワークパスのインターネットサービスプロバイダーを回避できます。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) は、AWS で起動するインスタンスと独自のリモートネットワーク間でトラフィックを渡すのに役立ちます。

**その他のツール**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) は、 Db2 のインタラクティブ CLI コマンドです。

## ベストプラクティス
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-best-practices"></a>
+ ターゲットデータベースで、[Amazon S3 のゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)を使用して、Amazon S3 のデータベースバックアップイメージとログファイルにアクセスします。
+ ソースデータベースで、[AWS PrivateLink for Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) を使用して、データベースのバックアップイメージとログファイルを Amazon S3 に送信します。

## エピック
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-epics"></a>

### 環境変数を設定する
<a name="set-environment-variables"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 環境変数を設定する。 | このパターンでは、以下の名前とポートを使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.html)環境に合わせて変更することができます。 | DBA | 

### オンプレミスの Db2 サーバーを設定する
<a name="configure-the-on-premises-db2-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AMS CLI をセットアップします。 | 次のコマンドを使用して、最新バージョンの AWS CLI をダウンロードしてインストールします。<pre>$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />sudo ./aws/install</pre> | Linux 管理者 | 
| Db2 アーカイブログのローカル送信先を設定します。 | 大量の更新バッチジョブやネットワークの速度低下などの状況により、HADR スタンバイサーバーに遅延が生じる可能性があります。スタンバイサーバーは、進行状況に間に合うようにプライマリサーバーのトランザクションログを必要とします。次の順序でログをリクエストします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.html)このセットアップでは、`/db2logs` はソース上の `LOGARCHMETH2` によってステージング領域として設定されます。このディレクトリにアーカイブされたログは Amazon S3 に同期され、Db2 on Amazon EC2 によってアクセスされます。AWS CLI コマンドがアクセスできないサードパーティベンダーツールを使用するように `LOGARCHMETH1` が設定されている可能性があるため、このパターンでは `LOGARCHMETH2` が使用されます。<pre>db2 connect to sample<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs</pre> | DBA | 
| オンラインデータベースのバックアップを実行します。 | オンラインデータベースのバックアップを実行し、ローカルのバックアップファイルシステムに保存します。<pre>db2 backup db sample online to /backup </pre> | DBA | 

### S3 バケットおよび IAM ポリシーをセットアップする
<a name="set-up-the-s3-bucket-and-iam-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットを作成する。 | オンプレミスサーバー用の S3 バケットを作成して、バックアップ Db2 イメージとログファイルを AWS に送信します。　 Amazon EC2 もこのバケットにアクセスします。<pre>aws s3api create-bucket --bucket hadrmig-db2 --region us-east-1 </pre> | AWS 管理者 | 
| IAM ポリシーを作成します。 | この `db2bucket.json` ファイルには、S3 バケットにアクセスするための IAM ポリシーが含まれています。<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "kms:GenerateDataKey",<br />                "kms:Decrypt",<br />                "s3:PutObject",<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:ListBucket",<br />                "s3:DeleteObject",<br />                "s3:GetObjectVersion",<br />                "s3:ListMultipartUploadParts"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::hadrmig-db2/*",<br />                "arn:aws:s3:::hadrmig-db2"<br />            ]<br />        }<br />    ]<br />}</pre>次の AWS CLI コマンドを使用して、ポリシーを作成します。<pre>aws iam create-policy \<br />      --policy-name db2s3hapolicy \<br />      --policy-document file://db2bucket.json </pre>JSON 出力には、ポリシーの Amazon リソースネーム (ARN) が表示されます。ここで、`aws_account_id` はアカウント ID を表します。<pre>"Arn": "arn:aws:iam::aws_account_id:policy/db2s3hapolicy"</pre> | AWS 管理者、AWS システム管理者 | 
| IAM ロールに IAM ポリシーをアタッチします。 | 通常、Db2 が実行中の EC2 インスタンスには、システム管理者によって IAM ロールが割り当てられています。IAM ロールが割り当てられていない場合は、Amazon EC2 コンソールから **[IAM ロールを変更]** を選択してください。EC2 インスタンスに関連付けられた IAM ロールに IAM ポリシーをアタッチします。ポリシーがアタッチされると、EC2 インスタンスは S3 バケットにアクセスできるようになります。<pre>aws iam attach-role-policy --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3hapolicy" --role-name db2s3harole   </pre> |  | 

### ソースデータベースのバックアップイメージとログファイルを Amazon S3 に送信します。
<a name="send-the-source-database-backup-image-and-log-files-to-amazon-s3"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミスの Db2 サーバーで AWS CLI を設定します。　 | 事前に生成した `Access Key ID` と `Secret Access Key` を使用して、AWS CLI を設定します。<pre>$ aws configure <br />AWS Access Key ID [None]: *************<br />AWS Secret Access Key [None]: ***************************<br />Default region name [None]: us-east-1<br />Default output format [None]: json</pre> | AWS 管理者、AWS システム管理者 | 
| Amazon S3 にバックアップイメージを送信します。 | 以前は、オンラインデータベースのバックアップが `/backup` ローカルディレクトリに保存されていました。次のコマンドを実行して、バックアップイメージを S3 バケットに送信します。<pre>aws s3 sync /backup s3://hadrmig-db2/SAMPLE_backup</pre> | AWS 管理者、AWS システム管理者 | 
| Amazon S3 に Db2 アーカイブログを送信します。 | オンプレミスの Db2 アーカイブログを、Amazon EC2 上のターゲット Db2 インスタンスがアクセスできる Amazon S3 バケットと同期します。<pre>aws s3 sync /db2logs s3://hadrmig-db2/SAMPLE_LOGS</pre>cron または他のスケジューリングツールを使用して、このコマンドを定期的に実行します。この頻度は、ソースデータベースがトランザクションログファイルをアーカイブする頻度に応じて異なります。 |  | 

### Db2 on Amazon EC2 を Amazon S3 に接続し、データベースの同期を開始します。
<a name="connect-db2-on-amazon-ec2-to-amazon-s3-and-start-the-initial-database-sync"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| PKCS12 キーストアを作成します。 | Db2 は、公開鍵暗号規格 (PKCS) 暗号化キーストアを使用して AWS アクセスキーをセキュアに保護します。キーストアを作成し、ソース Db2 インスタンスで使用するように設定します。<pre>gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash <br /> <br />db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"</pre> | DBA | 
| Db2 ストレージアクセスエイリアスを作成します。 | Db2 はストレージアクセスエイリアスを使用して `INGEST`、`LOAD`、`BACKUP DATABASE`、または `RESTORE DATABASE` コマンドで Amazon S3 に直接アクセスします。IAM ロールが既に EC2 インスタンスに割り当てられているため、`USER` と `PASSWORD` は必要ありません。`db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> container '<bucket_name>'"`例えば、スクリプトは次のようになります。`db2 "catalog storage access alias DB2AWSS3 vendor S3 server s3.us-east-1.amazonaws.com container 'hadrmig-db2'" ` | DBA | 
| ステージング領域を設定します。 | また、`DB2_ENABLE_COS_SDK=ON` と `DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore` および `awssdk` ライブラリへのリンクを使用して、Amazon S3 ステージング領域をバイパスして、データベースのバックアップと復元を行うことも推奨されています。<pre>#By root:<br />cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/<br /><br />#By db2 instance owner:<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2set DB2_ENABLE_COS_SDK=ON<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2stop<br />db2start</pre> | DBA | 
| バックアップイメージからデータベースを復元します。 | S3 バケットのバックアップイメージから Amazon EC2 上のターゲットデータベースを復元します。<pre>db2 create db sample on /data1<br />db2 restore db sample from DB2REMOTE://DB2AWSS3/hadrmig-db2/SAMPLE_backup replace existing</pre> | DBA | 

### オンプレミスで HADR を使用せずに HADR をセットアップする
<a name="set-up-hadr-with-no-hadr-on-premises"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミスの Db2 サーバーをプライマリとして設定します。　 | `db2-server1` (オンプレミス ソース)上にある HADR のデータベース構成設定をプライマリとして更新します。`HADR_SYNCMODE` をトランザクション応答時間が最も短い `SUPERASYNC` モードに設定します。`db2 update db cfg for sample using HADR_LOCAL_HOST db2-server1 HADR_LOCAL_SVC 50010 HADR_REMOTE_HOST db2-ec2 HADR_REMOTE_SVC 50012 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully`オンプレミスデータセンターと AWS 間で、ネットワークに多少の遅延が発生することが予想されます。(ネットワークの信頼性に基づいて異なる `HADR_SYNCMODE` 値を設定できます。詳細については、「[関連リソース](#migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-resources)」セクションを参照してください。 | DBA | 
| ターゲットデータベースログのアーカイブ先を変更します。 | ターゲットデータベースログのアーカイブ先を Amazon EC2 環境に合わせて変更します。<pre>db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/' LOGARCHMETH2 OFF<br />DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully</pre> | DBA | 
| Amazon EC2 サーバーで Db2 用の HADR を設定します。 | スタンバイ状態で、`db2-ec2` 上の HADR のデータベース設定を更新します。`db2 update db cfg for sample using HADR_LOCAL_HOST db2-ec2 HADR_LOCAL_SVC 50012 HADR_REMOTE_HOST db2-server1 HADR_REMOTE_SVC 50010 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully` | DBA | 
| HADR 設定を検証します。 | ソースとターゲットの Db2 サーバーで、HADR パラメータを検証します。　`db2-server1` のセットアップを検証するには、次のコマンドを実行します。<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = PRIMARY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server1<br /> HADR local service name                (HADR_LOCAL_SVC) = 50010<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-ec2<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50012<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = <br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre> `db2-ec2` のセットアップを検証するには、次のコマンドを実行します。<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-ec2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50012<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = <br /> HADR log write synchronization mode     (HADR_SYNCMODE) = SUPERASYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>`HADR_LOCAL_HOST`、`HADR_LOCAL_SVC`、`HADR_REMOTE_HOST`、および `HADR_REMOTE_SVC` のパラメータは、1 つのプライマリと 1 つのスタンバイの HADR 設定を示します。 | DBA | 
| Db2 HADR インスタンスを起動します。 | まず、`db2-ec2` スタンバイサーバーで Db2 HADR インスタンスを起動します。<pre>db2 start hadr on db sample as standby<br />DB20000I  The START HADR ON DATABASE command completed successfully.</pre>プライマリ (ソース) サーバー `db2-server1` で Db2 HADR を起動します。<pre>db2 start hadr on db sample as primary<br />DB20000I  The START HADR ON DATABASE command completed successfully.</pre>これで、オンプレミスの Db2 と Amazon EC2 間の HADR 接続が正常に確立されました。　 Db2 プライマリサーバー `db2-server1` は、トランザクションログの `db2-ec2` へのリアルタイムストリーミングを開始します。 | DBA | 

### HADR がオンプレミスで存在する場合に HADR を設定する
<a name="set-up-hadr-when-hadr-exists-on-premises"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Db2 on Amazon EC2 を補助スタンバイとして追加します。 | HADR がオンプレミスの Db2 インスタンス上で実行している場合は、`db2-ec2` で次のコマンドを実行することで、`HADR_TARGET_LIST` を使用して Db2 on Amazon EC2 を補助スタンバイとして追加できます。`db2 update db cfg for sample using HADR_LOCAL_HOST db2-ec2 HADR_LOCAL_SVC 50012 HADR_REMOTE_HOST db2-server1 HADR_REMOTE_SVC 50010 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. db2 update db cfg for sample using HADR_TARGET_LIST "db2-server1:50010\|db2-server2:50011" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.` | DBA | 
| オンプレミスサーバーに補助スタンバイ情報を追加します。 | 2 台のオンプレミスサーバ(プライマリサーバとスタンバイサーバ)の `HADR_TARGET_LIST` を更新します。`db2-server1` で、以下のコードを実行します。`db2 update db cfg for sample using HADR_TARGET_LIST "db2-server2:50011\|db2-ec2:50012" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. SQL1363W One or more of the parameters submitted for immediate modification were not changed dynamically. For these configuration parameters, the database must be shutdown and reactivated before the configuration parameter changes become effective.``db2-server2` で、以下のコードを実行します。`db2 update db cfg for sample using HADR_TARGET_LIST "db2-server1:50010\|db2-ec2:50012" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. SQL1363W One or more of the parameters submitted for immediate modification were not changed dynamically. For these configuration parameters, the database must be shutdown and reactivated before the configuration parameter changes become effective.` | DBA | 
| HADR 設定を検証します。 | ソースとターゲットの Db2 サーバーで、HADR パラメータを検証します。　`db2-server1` で、以下のコードを実行します。<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = PRIMARY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server1<br /> HADR local service name                (HADR_LOCAL_SVC) = 50010<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server2<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50011<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server2:50011|db2-ec2:50012<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>`db2-server2` で、以下のコードを実行します。<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50011<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server1:50010|db2-ec2:50012<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>`db2-ec2` で、以下のコードを実行します。<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-ec2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50012<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server1:50010|db2-server2:50011<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = SUPERASYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>`HADR_LOCAL_HOST`、`HADR_LOCAL_SVC`、`HADR_REMOTE_HOST`、`HADR_REMOTE_SVC`、および `HADR_TARGET_LIST` のパラメータは、1 つのプライマリ HADR 設定と 2 つのスタンバイ HADR 設定を示します。 |  | 
| Db2 HADR を停止して起動します。 | これで、3 台のサーバーすべてに `HADR_TARGET_LIST` が設定されました。各 Db2 サーバーは他の 2 つのサーバーを認識しています。新しい設定を利用するには、HADR を停止して再起動します (短時間の停止)。`db2-server1` で、以下のコマンドを実行します。<pre>db2 stop hadr on db sample<br />db2 deactivate db sample<br />db2 activate db sample</pre>`db2-server2` で、以下のコマンドを実行します。<pre>db2 deactivate db sample<br />db2 start hadr on db sample as standby<br />SQL1766W  The command completed successfully</pre>`db2-ec2` で、以下のコマンドを実行します。<pre>db2 start hadr on db sample as standby<br />SQL1766W  The command completed successfully</pre>`db2-server1` で、以下のコマンドを実行します。<pre>db2 start hadr on db sample as primary<br />SQL1766W  The command completed successfully</pre>これで、オンプレミスの Db2 と Amazon EC2 間の HADR 接続が正常に確立されました。　 Db2 プライマリサーバー `db2-server1` は、`db2-server2` と `db2-ec2` の両方へのトランザクションログレコードのリアルタイムストリーミングを開始します。 | DBA | 

### カットオーバー期間中は Db2 on Amazon EC2 をプライマリとして設定します。
<a name="make-db2-on-amazon-ec2-as-primary-during-the-cutover-window"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スタンバイサーバーに HADR 遅延がないことを確認してください。 | プライマリサーバー `db2-server1` から HADR ステータスを確認します。`HADR_STATE` が `REMOTE_CATCHUP` 状態になっても、心配する必要はありません。`HADR_SYNCMODE` が `SUPERASYNC` に設定されている場合は正常です。`PRIMARY_LOG_TIME` と `STANDBY_REPLAY_LOG_TIME` は同期していることを示します。<pre>db2pd -hadr -db sample<br />                            HADR_ROLE = PRIMARY<br />                          REPLAY_TYPE = PHYSICAL<br />                        HADR_SYNCMODE = SUPERASYNC<br />                           STANDBY_ID = 2<br />                        LOG_STREAM_ID = 0<br />                           HADR_STATE = REMOTE_CATCHUP<br />.....<br />                     PRIMARY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)<br />                     STANDBY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)<br />              STANDBY_REPLAY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)</pre> | DBA | 
| HADR テイクオーバーを実行します。 | 移行を完了するには、HADR テイクオーバーのコマンドを実行して `db2-ec2` をプライマリデータベースとして使用します。`db2pd` コマンドを使用して `HADR_ROLE` 値を検証します。<pre>db2 TAKEOVER HADR ON DATABASE sample<br />DB20000I  The TAKEOVER HADR ON DATABASE command completed successfully.<br /><br />db2pd -hadr -db sample<br />Database Member 0 -- Database SAMPLE -- Active -- Up 0 days 00:03:25 -- Date 2022-10-26-02.46.45.048988<br /><br />                            HADR_ROLE = PRIMARY<br />                          REPLAY_TYPE = PHYSICAL</pre>AWS への移行を完了するには、Db2 on Amazon EC2 にアプリケーション接続を設定します。 |  | 

## トラブルシューティング
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| ファイアウォールとセキュリティ上の理由から NAT を使用する場合、ホストには 2 つの IP アドレス (1 つは内部、もう 1 つは外部) が割り当てられる可能性があるので、HADR IP アドレスのチェックが失敗する可能性があります。`START HADR ON DATABASE` コマンドは次のメッセージを返します。`HADR_LOCAL_HOST:HADR_LOCAL_SVC (-xx-xx-xx-xx.:50011 (xx.xx.xx.xx:50011)) on remote database is different from HADR_REMOTE_HOST:HADR_REMOTE_SVC (xx-xx-xx-xx.:50011 (x.x.x.x:50011)) on local database.` | [NAT 環境で HADR をサポートする](https://www.ibm.com/docs/en/db2/11.5?topic=support-hadr-nat)には、内部アドレスと外部アドレスの両方を使用して `HADR_LOCAL_HOST` を設定できます。例えば、Db2 サーバーの内部名が `host1` で外部名が `host1E` の場合、`HADR_LOCAL_HOST` は `HADR_LOCAL_HOST: "host1 \| host1E"` になります | 

## 関連リソース
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-resources"></a>
+ 「[異なるオペレーティングシステムとハードウェアプラットフォーム間の Db2 バックアップおよびリストア操作](https://www.ibm.com/docs/en/db2/11.5?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)」
+ 「[Db2 ストレージアクセスエイリアスと DB2-REMOTE の設定](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access)」
+ 「[Db2 高可用性ディザスタリカバリ](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)」
+ 「[hadr\$1syncmode - ピアステート設定パラメータへのログ書き込み用の HADR 同期モード](https://www.ibm.com/docs/en/db2/11.5?topic=dcp-hadr-syncmode-hadr-synchronization-mode-log-writes-in-peer-state)」

# appcmd.exe を使用して IIS がホストするアプリケーションを Amazon EC2 に移行する
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd"></a>

*Amazon Web Services、Deepak Kumar*

## 概要
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-summary"></a>

Internet Information Services (IIS) がホストするアプリケーションを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに移行する場合は、いくつかの認証処理を行う必要があります。アプリケーションプール ID のドメイン認証情報の再入力や、ウェブサイトが正しく機能するためのマシンキーの再生成などの作業を行います。 AWS Directory Service を使用して、オンプレミスの Active Directory との信頼関係を確立したり、 で新しいマネージド Active Directory を作成したりできます AWS。このパターンでは、Amazon EC2 インスタンス上で IIS のバックアップおよび復元機能を使用する、クリーンな移行アプローチについて説明します。このアプローチでは、appcmd.exe を使用してターゲット EC2 インスタンスに IIS をアンインストール/再インストールし、IIS がホストするウェブサイト、アプリケーションプール ID、およびマシンキーを正しく移行できるようにします。

## 前提条件と制限事項
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-prereqs"></a>

**前提条件**
+ ターゲットサーバー AWS アカウント に対してアクティブな 。
+ ウェブサイトをホストする機能ソース IIS サーバー。
+ 管理や設定などの IIS の操作に対する基本的な理解。
+ ソースとターゲット双方のサーバーにおけるシステム管理者アクセス。
+ ソース IIS サーバーのターゲットへの移行が完了しました AWS アカウント。Amazon マシンイメージ (AMI) AWS Application Migration Serviceスナップショットベースのアプローチなどの移行ツール、またはその他の移行ツールを使用できます。

**制限事項**
+ 一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「[AWS サービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、[「サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照して、サービスのリンクを選択してください。

**製品バージョン**
+ IIS 8.5 または IIS 10.0

## アーキテクチャ
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-architecture"></a>

**ソーステクノロジースタック**
+ IIS 8.5 または IIS 10.0 がインストールされている Windows サーバー

**ターゲットテクノロジースタック**
+ IIS 8.5 または IIS 10.0 がインストールされている Windows サーバー
+ Application Migration Service

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

次の図表は、このパターンのアプリケーションのワークフローとアーキテクチャコンポーネントを示しています。

![\[IIS がホストするアプリケーションを Amazon EC2 に移行するワークフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/2f9f7757-b2bc-4077-b51a-700de521424c/images/36aa9b7a-d0aa-4fa4-be47-9fee43b53c22.png)


作業には以下のステップが含まれます。

1. レプリケーションエージェントを企業データセンターのソース IIS AWS サーバーに[インストール](https://docs.aws.amazon.com/mgn/latest/ug/agent-installation.html)して設定します。このエージェントはレプリケーションプロセスを開始し、データ転送を管理します AWS。

1.  AWS レプリケーションエージェントは、Application Migration Service への[安全な接続](https://docs.aws.amazon.com/mgn/latest/ug/Agent-Related-FAQ.html#How-Communication-Secured)を確立し、IIS 設定、ウェブサイト、アプリケーションファイルなどのソースサーバーデータのレプリケーションを開始します。

1. Application Migration Service は、複製データを使用しアプリケーションサブネットで EC2 インスタンスを起動します。ターゲット EC2 インスタンスは IIS を実行し、移行後のアプリケーションに紐づけられている Amazon Elastic Block Store (Amazon EBS) ボリュームを取り込みます。最初のレプリケーション完了後、新しい環境における[カットオーバー準備](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html#ready-for-cutover1)が完了するまで、Application Migration Service は変更の同期を続けます。

## ツール
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-tools"></a>

**AWS のサービス**
+ [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) は、アプリケーションを に変更 AWS クラウド なしで最小限のダウンタイムでリホスト (*リフトアンドシフト*) するのに役立ちます。
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html) は、Amazon EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。

**その他のツール**
+ Windows サーバー版 [Internet Information Services (IIS)](https://www.iis.net/overview) は、拡張可能なオープンアーキテクチャであり、ウェブ上のあらゆるものをホストします。IIS には、管理ツールおよびコマンドラインツール (appcmd.exe 等)、マネージドコードとスクリプト API、また Windows PowerShell サポートなどの一連の管理ツールが用意されています。

## エピック
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-epics"></a>

### 移行前に IIS をソースにバックアップする
<a name="back-up-iis-at-source-prior-to-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IIS がホストするウェブサイト、設定キー、および `WAS` キーのバックアップを作成します。 | IIS がホストするウェブサイト、設定キー (`iisConfigurationKey`)、および `WAS` キー (`iisWasKey`) のバックアップを作成するには、ソースサーバーで appcmd.exe を使用します。以下のステップを使用します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html)設定キーと `WAS` キーをエクスポートするには、次の手順を実行してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | IIS 管理者 | 

### ターゲットサーバー上で IIS をアンインストールした後、再インストールする
<a name="uninstall-and-reinstall-iis-on-the-target-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットサーバーで IIS をアンインストールします。 | 次の手順に従って、ターゲットサーバーで IIS をアンインストールしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | IIS 管理者 | 
| ターゲットサーバーに IIS をインストールします。 | 次の手順に従って、ターゲットサーバーに IIS をインストールしてください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | IIS 管理者 | 

### バックアップから IIS ウェブサイトと設定を復元する
<a name="restore-iis-websites-and-configuration-from-the-backups"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IIS ウェブサイトと設定を復元します。 | 次の手順に従って、ターゲットサーバーのソースサーバーから作成した IIS バックアップを復元してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | IIS 管理者 | 

## 関連リソース
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-resources"></a>

**AWS ドキュメント**
+ [AWS レプリケーションエージェントのインストール](https://docs.aws.amazon.com/mgn/latest/ug/agent-installation.html) (AWS Application Migration Service ドキュメント)

**AWS 規範ガイダンス**
+ [を使用してオンプレミス VM を Amazon EC2 に移行する AWS Application Migration Service](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)
+ [Using AMIs or Amazon EBS snapshots for backups](https://docs.aws.amazon.com/prescriptive-guidance/latest/backup-recovery/ec2-backup.html#amis-snapshots)

**Microsoft リソース**
+ [アプリケーションプール ID](https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/was-service-svchost-process-operation/understanding-identities#application-pool-identities)
+ [IIS ドキュメント](https://learn.microsoft.com/en-us/iis/)
+ [IIS 8 appcmd.exe ドキュメント](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj635852(v=ws.11))
+ [IIS 10 appcmd.exe ドキュメント](https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/new-features-introduced-in-iis-10)
+ [強力な管理ツール](https://learn.microsoft.com/en-us/iis/overview/powerful-admin-tools)

# オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn"></a>

*Amazon Web Services、Senthil Ramasamy*

## 概要
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-summary"></a>

このパターンでは、オンプレミスデータセンターの Microsoft SQL Server データベースを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに移行する方法を説明します。( AWS Application Migration Service AWS MGN) を使用して、lift-and-shift移行を使用してデータベースをリホストします。 AWS MGN は、ソースデータベースサーバーのブロックレベルのレプリケーションを実行します。

## 前提条件と制限事項
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターにあるソース Microsoft SQL Server データベース

**制限事項**
+ ネットワーク帯域幅は、オンプレミスのデータセンターと AWSの間で制限される場合があります。
+ AWS MGN は、専用ストレージを備えたスタンドアロンサーバーでホストされているデータベースに限定されます。クラスター化されたデータベースシステムと、変更率がネットワークのスループットを超えるデータベースシステムの移行はサポートされていません。
+ 一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[Service endpoints and quotas](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」ページから、サービスのリンクを選択してご確認ください。

**製品バージョン**
+ Microsoft SQL Server データベースのすべてのバージョン
+ [MGN をサポートする Windows および Linux AWS](https://docs.aws.amazon.com/mgn/latest/ug/Supported-Operating-Systems.html)オペレーティングシステム

## アーキテクチャ
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-architecture"></a>

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

オンプレミス Microsoft SQL Server データベース

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

Amazon EC2 インスタンスにおける Microsoft SQL Server データベース。

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

![\[オンプレミスの企業データセンターから AWS にデータをレプリケートします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/a459eaef-c256-4691-a7ec-2304f634228c/images/d8d6cee7-f42c-4686-bf92-6e6d39adfb17.png)


このアーキテクチャでは AWS 、MGN を使用してオンプレミスの企業データセンターから にデータをレプリケートします AWS。この図は、データレプリケーションプロセス、API 通信、テストフェーズとカットオーバーフェーズを示しています。

1. データレプリケーション: 
   + AWS MGN は、オンプレミスの企業データセンターから にデータをレプリケート AWS し、変更の継続的なレプリケーションを開始します。
   + ステージングサブネット内のレプリケーションサーバーは、データを受信して処理します。

1. API 通信: 
   + レプリケーションサーバーは、TCP ポート AWS 443 を介して MGN、Amazon EC2、Amazon Simple Storage Service (Amazon S3) API エンドポイントに接続します。Amazon S3
   + AWS MGN は移行を管理します。
   + Amazon EC2 はインスタンスオペレーションを管理します。

1. テストとカットオーバー: 
   + テストインスタンスは、レプリケートされたデータを使用して運用サブネットで起動します。
   + テストに成功すると、 AWS MGN は最終移行用のカットオーバーインスタンスを作成します。

## ツール
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-tools"></a>
+ [AWS Application Migration Service (AWS MGN)](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) は、アプリケーションを に変更 AWS クラウド することなく最小限のダウンタイムでリホスト (*リフトアンドシフト*) するのに役立ちます。
+ [Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) は、標準のイーサネット光ファイバーケーブルを介して内部ネットワークを Direct Connect の場所にリンクします。この接続を使用すると、ネットワークパスでインターネットサービスプロバイダーをバイパスしながら、パブリック AWS サービスへの仮想インターフェイスを直接作成できます。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンできます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、量にかかわらず、任意のデータ量を保存、保護、取得する上で役立つクラウドベースのオブジェクトストレージサービスです。

## ベストプラクティス
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-best-practices"></a>
+ Virtual Private Cloud (VPC) AWS で MGN、Amazon EC2、Amazon S3 の API リージョンエンドポイントを設定し、インターネットからのパブリックアクセスを禁止します。
+  AWS MGN 起動設定をセットアップして、プライベートサブネットでターゲットデータベースサーバーを起動します。
+ データベースセキュリティグループで必要なポートのみを許可します。
+ 最小特権の原則に従い、タスク実行に必要最小限の権限を付与します。詳細については、IAM ドキュメントの「[最小限の特権を認める。](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)」と「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。

## エピック
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-epics"></a>

### AWS MGN のセットアップ
<a name="set-up-aws-mgn"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| MGN AWS を設定します。 |  AWS Application Migration Service で を検索し AWS マネジメントコンソール、セットアッププロセスを開始します。これにより、レプリケーションテンプレートが作成され、MGN コンソールの **[ソースサーバー]** ページにリダイレクトされます。MGN サービスを設定するときに、生成されたリストからサービスロールを選択します。 | DBA、移行エンジニア | 
| ソースサーバーを追加します。 | オンプレミスのソースデータベースサーバーの詳細を追加し、サーバーを追加します。 | DBA、移行エンジニア | 
| ソースサーバーに AWS MGN エージェントをインストールします。 |  AWS MGN エージェントインストーラをローカルシステムにダウンロードし、インストーラをソースデータベースサーバーに転送します。インストーラハッシュを検証するには、「Validating the downloaded [AWS Replication Agent installer for Windows 2012](https://docs.aws.amazon.com/mgn/latest/ug/windows-agent.html#installer-hash-table-2012)」を参照してください。 | DBA、移行エンジニア | 

### ソースマシンに AWS MGN エージェントをインストールする
<a name="install-aws-mgn-agent-on-source-machines"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| クライアント IAM 認証情報を生成します。 |  AWS MGN エージェントをインストールする前に、適切なアクセス許可を持つ新しい IAM ユーザーを作成して AWS 認証情報を生成します。詳細については、「 [の AWS 管理ポリシー AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/security-iam-awsmanpol.html)」および[「必要な AWS 認証情報の生成](https://docs.aws.amazon.com/mgn/latest/ug/credentials.html)」を参照してください。 | DBA、移行エンジニア | 
| エージェントをソースサーバーにインストールします。 | Microsoft SQL Server データベースをホストするソースマシンにエージェントをインストールします。詳細については、[「Windows サーバーへの AWS レプリケーションエージェントの](https://docs.aws.amazon.com/mgn/latest/ug/windows-agent.html)インストール」を参照してください。次の AWS 認証情報を指定します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html)一意の AWS 認証情報により AWS 、MGN エージェントは移行タスクを認証して実行できます。 | アプリ所有者、DBA、移行エンジニア | 
| レプリケートするディスクを選択します。 |  AWS 認証情報を入力すると、インストーラはサーバーがエージェントインストールの最小要件を満たしていることを確認します (たとえば、サーバーに AWS MGN エージェントをインストールするのに十分なディスク容量があるかどうかなど）。インストーラは、ボリュームラベルとストレージの詳細を表示します。 AWS MGN サービスを使用してデータベースをレプリケートするには、ソースサーバーで該当するディスクを選択します。各ディスクのパスをカンマで区切って入力します。すべてのディスクをレプリケートする場合は、パスを空白のままにします。選択したディスクを確認すると、インストールが続行されます。 | DBA、移行エンジニア | 
| 同期の進行状況をモニタリングします。 | AWS レプリケーションエージェントは、最初に選択したディスクのスナップショットを作成し、次にデータをレプリケートすることで、同期プロセスを開始します。 AWS MGN コンソールの**ソースサーバー**ページから同期の進行状況をモニタリングできます。詳しくは「[Monitor the server in the migration lifecycle](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html)」をご確認ください。 | DBA、移行エンジニア | 

### AWS MGN を使用したレプリケーション
<a name="replication-using-aws-mgn"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションの進行状況を管理します。 | 最初の同期を開始すると、ソースサーバーが MGN AWS コンソールに表示され、移行を管理およびモニタリングできます。コンソールには、選択したディスクの合計サイズと使用可能なネットワーク帯域幅に基づいて、完全なレプリケーションの推定時間が表示されます。 | DBA、移行エンジニア | 
| 同期を確認します。 | ソースサーバーのディスクが完全に同期されたら、選択したすべてのディスクが完全に同期済みとしてリストされ、コンソールでエラーが報告されていないことを確認します。その後 AWS 、MGN コンソールは移行ライフサイクルステータスを**テスト準備完了**に自動的に移行し、 のレプリケートされた環境 AWS がパフォーマンスと機能のテストの準備が整ったことを示します。 | アプリ所有者、DBA、移行エンジニア | 

### テストとカットオーバー
<a name="test-and-cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 起動設定を構成します。 | MGN AWS コンソールでソースサーバーを選択し、ターゲットテストインスタンスの起動設定を更新します。ソースの **[サーバー詳細]** ページから **[起動設定]** タブに移動し、テストインスタンスを設定します。費用対効果の高いインスタンスタイプと Amazon Elastic Block Store (Amazon EBS) ボリュームタイプを選択し、セキュリティグループとネットワーク要件を設定します。詳しくは「[Launch settings](https://docs.aws.amazon.com/mgn/latest/ug/launch-settings.html)」をご確認ください。 | DBA、移行エンジニア | 
| ターゲットテストインスタンスを起動します。 | 同期されたソースマシンの AWS MGN コンソールに移動し、テスト**してカットオーバー**し、テストインスタンスを起動を選択してターゲット**テストインスタンスを起動**します。これにより、構成した設定を使用してテストインスタンスをデプロイする起動ジョブが作成されます。インスタンスは で起動 AWS クラウド し、ソースデータベースサーバーの環境をレプリケートします。**[起動履歴]** ページから起動の進行状況が確認できます。このページでは、インスタンスの作成を追跡し、問題に対処できます。 | DBA、移行エンジニア | 
| ターゲットテストインスタンスを検証します。 | Amazon EC2 データベースサーバーを検証します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html)検証テストを実行して、データベースが期待どおりに機能することを確認します。 | DBA、移行エンジニア | 
| サーバーの名称を変更します。 | AWS MGN 移行には、オンプレミスのソースサーバーのストレージレベルのコピーが含まれます。SQL Server EC2 インスタンスには、元のソースサーバーの詳細のみがバイナリに含まれているため、バイナリ情報を更新して新しいサーバーの名前を反映します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html) | DBA、移行エンジニア | 
| カットオーバーインスタンスを起動します。 |  AWS MGN コンソールの**ソースサーバー**ページで、サーバーの移行ライフサイクルステータスが**カットオーバー準備完了**であることを確認します。カットオーバーインスタンスの起動設定を行い、設定がオンプレミス環境を反映していることを確認します。カットオーバーを開始する前に、オンプレミスデータベースをシャットダウンすることで、以下を確認できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html) AWS MGN コンソールでカットオーバーインスタンスを開始します。カットオーバーインスタンスが動作したら、インスタンスにログインし、次のテストを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.html) | アプリ所有者、DBA、移行エンジニア、移行リード | 

## トラブルシューティング
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| 初期同期が認証ステップで失敗してしまう。 | これはネットワーク接続の問題です。レプリケーションサーバーは MGN AWS に接続できません。 | 

## 関連リソース
<a name="migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn-resources"></a>

**AWS ドキュメント**
+ [の開始方法 AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/getting-started.html)
+ [オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2.html)
+ [What is Microsoft SQL Server on Amazon EC2?](https://docs.aws.amazon.com/sql-server-ec2/latest/userguide/sql-server-on-ec2-overview.html)

**動画**
+ [Performing a Lift and Shift Migration with AWS Application Migration Service](https://www.youtube.com/watch?v=tB0sAR3aCb4) (動画)

# で F5 BIG-IP ワークロードを F5 BIG-IP VE に移行する AWS クラウド
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud"></a>

*Amazon Web Services、Deepak Kumar*

## 概要
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-summary"></a>

組織は、俊敏性と耐障害性を高めるため AWS クラウド に への移行を検討しています。[F5 BIG-IP ](https://www.f5.com/products/big-ip-services)セキュリティおよびトラフィック管理ソリューションを に移行すると AWS クラウド、エンタープライズアーキテクチャ全体で高価値の運用モデルの俊敏性と導入に集中できます。

このパターンでは、F5 BIG-IP ワークロードを AWS クラウド上の [F5 BIG-IP 仮想エディション (VE)](https://www.f5.com/products/big-ip-services/virtual-editions) ワークロードに移行する方法を説明します。ワークロードは、既存の環境をリホストし、サービス検出や API 統合などのリプラットフォームの側面をデプロイすることによって移行されます。[AWS CloudFormation テンプレート](https://github.com/F5Networks/f5-aws-cloudformation) は、ワークロードの AWS クラウドへの移行を加速します。

このパターンは、F5 セキュリティおよびトラフィック管理ソリューションを移行する技術エンジニアリングチームとアーキテクチャチームを対象としており、 AWS 規範ガイダンスウェブサイトの「」の「[Migrating from F5 BIG-IP to F5 BIG-IP VE AWS クラウド](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-f5-big-ip/welcome.html)」ガイドに付属しています。

## 前提条件と制限事項
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-prereqs"></a>

**前提条件**
+ 既存のオンプレミスの F5 BIG-IP ワークロード。
+ BIG-IP VE バージョン用の既存の F5 ライセンス。
+ アクティブ AWS アカウント。
+ NAT ゲートウェイまたは Elastic IP アドレスを介した出力で設定され、Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Compute Cloud (Amazon EC2) AWS Security Token Service 、()、Amazon CloudWatch のエンドポイントへのアクセスで設定されている既存の仮想プライベートクラウド (VPC AWS STS)。また、[モジュール式でスケーラブルな VPC アーキテクチャ](https://aws.amazon.com/quickstart/architecture/vpc/) のクイックスタートをデプロイの構成要素として変更することもできます。 
+ 要件に応じて、1 つまたは 2 つの既存のアベイラビリティーゾーン。 
+ 各アベイラビリティーゾーンに 3 つの既存のプライベートサブネット
+ AWS CloudFormation テンプレート。[F5 GitHub リポジトリで利用できます](https://github.com/F5Networks/f5-aws-cloudformation/blob/master/template-index.md)。 

移行の際、要件に応じて、次のものを使用することもあります。
+ [F5 クラウドフェイルオーバーエクステンション](https://clouddocs.f5.com/products/extensions/f5-cloud-failover/latest/) は、Elastic IP アドレスマッピング、セカンダリ IP マッピング、ルートテーブルの変更を管理します。 
+ 複数のアベイラビリティーゾーンを使用する場合は、F5 クラウドフェイルオーバーエクステンションを使用して仮想サーバーへのElastic IPマッピングを処理する必要があります。
+ 設定を管理するには、[F5 アプリケーションサービス 3 (AS3)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/)、[F5 アプリケーションサービステンプレート (FAST)](https://clouddocs.f5.com/products/extensions/f5-appsvcs-templates/latest/)、またはその他のInfrastructure as Code (IaC) モデルを使用することを検討してください。IaC モデルで構成を準備し、コードリポジトリを使用すると、移行や継続的な管理作業に役立ちます。

**専門知識**
+ このパターンでは、1 つ以上の VPC を既存のデータセンターに接続する方法に精通している必要があります。詳細については、Amazon VPC ドキュメントの [ネットワークから Amazon VPC への接続オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) をご参照ください。 
+ [トラフィック管理オペレーティングシステム(TMOS)](https://www.f5.com/services/resources/white-papers/tmos-redefining-the-solution)、[ローカルトラフィックマネージャ(LTM)](https://www.f5.com/products/big-ip-services/local-traffic-manager)、[グローバルトラフィックマネージャ(GTM)](https://techdocs.f5.com/kb/en-us/products/big-ip_gtm/manuals/product/gtm-concepts-11-5-0/1.html#unique_9842886)、 [アクセスポリシーマネージャ(APM)](https://www.f5.com/products/security/access-policy-manager)、[アプリケーションセキュリティマネージャ(ASM)](https://www.f5.com/pdf/products/big-ip-application-security-manager-overview.pdf)、[アドバンストFirewall Manager(AFM)](https://www.f5.com/products/security/advanced-firewall-manager)、[BIG-IQ](https://www.f5.com/products/automation-and-orchestration/big-iq) などのF5の製品とモジュールにも精通している必要があります。

**製品バージョン**
+ このパターンはF5 BIG-IP [バージョン12.1](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-bigip-12-1-4.html) 以降をサポートしていますが、F5 BIG-IP [バージョン13.1](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-bigip-ve-13-1-0.html) 以降を使用することを推奨します。

## アーキテクチャ
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-architecture"></a>

**ソーステクノロジースタック**
+ F5 BIG-IP ワークロード

**ターゲットテクノロジースタック**
+ Amazon CloudFront
+ CloudWatch
+ Amazon EC2
+ Amazon S3
+ Amazon VPC
+ AWS Global Accelerator
+ AWS STS
+ AWS Transit Gateway
+ F5 BIG-IP VE

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

![\[F5 BIG-IP ワークロードを F5 BIG-IP VE ワークロードに移行するアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/586fe806-fac1-48d3-9eb1-45a6c86430dc/images/16d7fc09-1ffe-4721-b503-d971db84cbae.png)


## ツール
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-tools"></a>
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、 AWS リソースをセットアップし、迅速かつ一貫してプロビジョニングし、 AWS アカウント および 全体のライフサイクルを通じてリソースを管理するのに役立ちます AWS リージョン。
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) は、世界中のデータセンターネットワークを通じて配信することで、ウェブコンテンツの配信を高速化します。これにより、レイテンシーが減少し、パフォーマンスが向上します。  
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) は、 AWS リソースと で実行するアプリケーションのメトリクスを AWS リアルタイムでモニタリングするのに役立ちます。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) AWS クラウド は、 にスケーラブルなコンピューティング性能を提供します。必要な数の仮想サーバーを起動し、すばやくスケールアップまたはスケールダウンできます。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) は、ユーザーの権限が制限された一時的な認証情報をリクエストするのに役立ちます。
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) は、仮想プライベートクラウド (VPC) とオンプレミスネットワークを接続する中央ハブです。
+ [Amazon Virtual Private Cloud (Amazon VPC) ](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)は、定義した仮想ネットワークに AWS リソースを起動するのに役立ちます。この仮想ネットワークは、ユーザー自身のデータセンターで運用されていた従来のネットワークと似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるという利点があります。

## エピック
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-epics"></a>

### 発見と評価
<a name="discovery-and-assessment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| F5 BIG-IPのパフォーマンスを評価してください。 | 仮想サーバー上のアプリケーションのパフォーマンスメトリックと、移行されるシステムのメトリックを収集して記録します。これにより、ターゲット AWS インフラストラクチャのサイズが正しくなり、コスト最適化が向上します。 | F5 アーキテクト、エンジニア、ネットワークアーキテクト、エンジニア | 
| F5 BIG-IPのオペレーティングシステムと構成を評価してください。 | どのオブジェクトを移行するか、またVLANなどのネットワーク構造を維持する必要があるかどうかを評価してください。 | F5 アーキテクト、エンジニア | 
| F5 ライセンスオプションを評価してください。 | どのライセンスと消費モデルが必要かを評価してください。この評価は、F5 BIG-IPのオペレーティングシステムと構成に対するお客様の評価に基づいて行う必要があります。 | F5 アーキテクト、エンジニア | 
| 公開アプリケーションを評価してください。 | どのアプリケーションがパブリック IP アドレスを必要とするかを決定します。パフォーマンスとサービスレベルアグリーメント (SLA) の要件を満たすように、それらのアプリケーションを必要なインスタンスとクラスターに合わせてください。 | F5 アーキテクト、クラウドアーキテクト、ネットワークアーキテクト、エンジニア、アプリケーションチーム | 
| 内部アプリケーションを評価します。 | 内部ユーザーがどのアプリケーションを使用するかを評価してください。対象の内部ユーザーが組織のどこにいるのか、また環境がどのように AWS クラウドに接続しているのかを確認してください。また、それらのアプリケーションがデフォルトドメインの一部としてドメインネームシステム (DNS) を使用できることも確認する必要があります。 | F5 アーキテクト、クラウドアーキテクト、ネットワークアーキテクト、エンジニア、アプリケーションチーム | 
| AMI を確定します。 | すべての F5 BIG-IP バージョンが Amazon マシンイメージ (AMI) として作成されるわけではありません。特定の必須クイックフィックスエンジニアリング(QFE)バージョンがある場合は、F5 BIG-IPイメージジェネレータツールを使用できます。このストーリーやその他のストーリーについて詳しくは、「関連リソース」セクションを参照してください。 | F5 アーキテクト、クラウドアーキテクト、エンジニア | 
| インスタンスタイプとアーキテクチャを確定します。 | インスタンスタイプ、VPC アーキテクチャ、相互接続アーキテクチャを決定します。 | F5 アーキテクト、クラウドアーキテクト、ネットワークアーキテクト、エンジニア、アプリケーションチーム | 

### セキュリティとコンプライアンス関連のアクティビティを完了する
<a name="complete-security-and-compliance-related-activities"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 既存のF5セキュリティポリシーを文書化してください。 | 既存のF5セキュリティポリシーを文書化してください。必ず安全なコードリポジトリにコピーを作成してください。 | F5 アーキテクト、エンジニア | 
| AMI を暗号化します。 | (オプション) 組織によっては、保管中のデータの暗号化が必要な場合があります。カスタム Bring-Your-Own-License (BYOL) イメージの作成の詳細については、「関連リソース」セクションを参照してください。 | F5 アーキテクト、エンジニア、ネットワークアーキテクト、エンジニア | 
| デバイスを強化します。 | これにより、潜在的な脆弱性からの保護に役立ちます。 | F5 アーキテクト、エンジニア | 

### 新しい AWS 環境を設定する
<a name="configure-your-new-aws-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| エッジアカウントとセキュリティアカウントを作成します。 | にサインイン AWS マネジメントコンソール し、エッジサービスとセキュリティサービスを提供し、運用 AWS アカウント する を作成します。これらのアカウントは、共有サービスやアプリケーションの VPC を運用するアカウントとは異なる可能性があります。このステップはランディングゾーン一部として完了できます。 | クラウドアーキテクト、DevOps エンジニア | 
| エッジ VPC とセキュリティ VPC をデプロイします。 | エッジサービスとセキュリティサービスの提供に必要な VPC をセットアップして設定します。 | クラウドアーキテクト、エンジニア | 
| ソースデータセンターに接続します。 | F5 BIG-IPワークロードをホストするソースデータセンターConnect。 | クラウドアーキテクト、ネットワークアーキテクト、エンジニア | 
| VPC 接続をデプロイします。 | エッジ VPC とセキュリティサービス VPC をアプリケーション VPC Connec \$1t。 | ネットワークアーキテクト、エンジニア | 
| インスタンスをデプロイします。 | 「関連リソース」セクションの CloudFormation テンプレートを使用してインスタンスをデプロイします。 | F5 アーキテクト、エンジニア | 
| インスタンスフェイルオーバーのテストと設定。 |  AWS Advanced HA iAPP テンプレートまたは F5 Cloud Failover Extension が正しく設定され、動作していることを確認します。 | F5 アーキテクト、エンジニア | 

### ネットワークを設定する
<a name="configure-networking"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC トポロジを準備します。 | Amazon VPC コンソールを開き、F5 BIG-IP VEのデプロイに必要なすべてのサブネットと保護がVPC にあることを確認します。 | ネットワークアーキテクト、F5 アーキテクト、クラウドアーキテクト、エンジニア | 
| VPC エンドポイントを準備します。 | Amazon EC2、Amazon S3、および F5 BIG-IP ワークロード AWS STS が TMM インターフェイスの NAT ゲートウェイまたは Elastic IP アドレスにアクセスできない場合の VPC エンドポイントを準備します。 | クラウドアーキテクト、エンジニア | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 設定を移行します。 | F5 BIG-IP 設定を AWS クラウド上の F5 BIG-IP VE に移行します。 | F5 アーキテクト、エンジニア | 
| セカンダリ IP を関連付けます。 | 仮想サーバーの IP アドレスは、インスタンスに割り当てられたセカンダリ IP アドレスと関係があります。セカンダリ IP アドレスを割り当て、[再マップ/再割り当てを許可] が選択されていることを確認します。 | F5 アーキテクト、エンジニア | 

### テスト設定
<a name="test-configurations"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想サーバーの設定を検証します。 | 仮想サーバーをテストします。 | F5 アーキテクト、アプリケーションチーム | 

### 運用の最終決定
<a name="finalize-operations"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バックアップ戦略を作成する。 | フルスナップショットを作成するには、システムをシャットダウンする必要があります。詳細については、「関連リソース」セクションの「F5 BIG-IP 仮想マシンの更新」を参照してください。 | F5 アーキテクト、クラウドアーキテクト、エンジニア | 
| クラスタフェイルオーバーランブックを作成する。 | フェイルオーバーランブックプロセスが完了していることを確認します。 | F5 アーキテクト、エンジニア | 
| ロギングの設定と検証。 | 必要な宛先にログを送信するように F5 テレメトリストリーミングを設定します。 | F5 アーキテクト、エンジニア | 

### カットオーバーの完了
<a name="complete-the-cutover"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 新しいデプロイメントに切り替えましょう。 |  | F5 アーキテクト、クラウドアーキテクト、ネットワークアーキテクト、エンジニア、アプリケーションチーム | 

## 関連リソース
<a name="migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud-resources"></a>

**移行ガイド**
+ [での F5 BIG-IP から F5 BIG-IP VE への移行 AWS クラウド](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-f5-big-ip/welcome.html)

**F5 リソース**
+ [CloudFormation F5 GitHub リポジトリの テンプレート](https://github.com/F5Networks/f5-aws-cloudformation)
+ [の F5 AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=74d946f0-fa54-4d9f-99e8-ff3bd8eb2745)
+ [F5 ビッグIP VEの概要](https://www.f5.com/products/big-ip-services/virtual-editions) 
+ [クイックスタートの例-WAF (LTM\$1 ASM) 搭載のBIG-IP バーチャルエディション](https://github.com/F5Networks/f5-aws-cloudformation-v2/tree/main/examples/quickstart)
+ [での F5 アプリケーションサービス AWS: 概要 (ビデオ)](https://www.youtube.com/watch?v=kutVjRHOAXo)
+ [F5 アプリケーションサービス 3 拡張ユーザーガイド](https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/)
+ [F5 クラウドドキュメンテーション](https://clouddocs.f5.com/training/community/public-cloud/html/intro.html)
+ [F5 iControl REST ウィキ](https://clouddocs.f5.com/api/icontrol-rest/)
+ [F5 単一設定ファイルの概要 (11.x-15.x)](https://support.f5.com/csp/article/K13408)
+ [F5 ホワイトペーパー](https://www.f5.com/services/resources/white-papers)
+ [F5 BIG-IP イメージジェネレータツール](https://clouddocs.f5.com/cloud/public/v1/ve-image-gen_index.html)
+ [F5 BIG-IP VE 仮想マシンのアップデート](https://techdocs.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/bigip-ve-setup-vmware-esxi-11-5-0/3.html)
+ [UCS アーカイブの「プラットフォーム移行」オプションの概要](https://support.f5.com/csp/article/K82540512)

# バイナリメソッドを使用してオンプレミスの Go ウェブアプリケーションを AWS Elastic Beanstalk に移行します
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method"></a>

*Amazon Web Services、Suhas Basavaraj、Shumaz Mukhtar Kazi*

## 概要
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-summary"></a>

このパターンでは、オンプレミスの Go ウェブアプリケーションを AWS Elastic Beanstalk に移行する方法について説明します。アプリケーションの移行後、Elastic Beanstalk はソースバンドルのバイナリを構築し、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにデプロイします。

リホスト移行戦略としては、このパターンのアプローチは高速で、コードを変更する必要がないため、テストや移行にかかる時間を短縮できます。 

## 前提条件と制限事項
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ オンプレミスから Web アプリケーションへ
+ ソースコードを含む または GitHub リポジトリ。GitHub を使用しない場合は、[Elastic Beanstalk のアプリケーションソースバンドルを作成する他の方法があります](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/applications-sourcebundle.html)。

**製品バージョン**
+ Elastic Beanstalk でサポートされている最新の Go バージョンです。Elastic Beanstalk の詳細については、[Elastic Beanstalk のドキュメント](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go)を参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスから Web アプリケーションへ 

**ターゲットテクノロジースタック**
+ AWS Elastic Beanstalk
+ Amazon CloudWatch

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

![\[Elastic Beanstalk に Go アプリケーションを移行するためのアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/cd8d660d-5621-4ea7-8f97-7a1e321c57d3/images/1df543d9-7073-43d8-abd3-f1f7e57278eb.png)


## ツール
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-tools"></a>
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.html) を使用すると、アプリケーションを実行しているインフラストラクチャについて知識を得なくても、AWS クラウドでアプリケーションのデプロイと管理を簡単に行うことができます。Elastic Beanstalk は、選択肢を狭めたり制御を制限したりすることなく、管理の複雑さを軽減します。
+ [GitHub](https://github.com/) はオープンソースの分散型バージョン管理システムです。

## エピック
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-epics"></a>

### Go Web アプリケーションソースバンドル (.zip ファイル) を作成します。
<a name="create-the-go-web-application-source-bundle-zip-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Go Web アプリケーションソースバンドル (.zip ファイル) を作成します。 | Go アプリケーションのソースコードを含む GitHub リポジトリを開き、ソースバンドルを準備します。ソースバンドルには、Go `application.go` アプリケーションのメインパッケージをホストするルートディレクトリにソースファイルが含まれています。GitHub を使用しない場合は、アプリケーションソースバンドルを作成する他の方法について、このパターンの前半の*前提条件* セクションを参照してください。 | システム管理者、アプリケーション開発者 | 
| 設定ファイルを作成します。 | ソースバンドルに `.ebextensions` フォルダを作成し、そのフォルダ内に `options.config` ファイルを作成します。Elastic Beanstalk の詳細については、[Elastic Beanstalk のドキュメント](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html)を参照してください。 | システム管理者、アプリケーション開発者 | 
|  ソースバンドルの.zip ファイルを作成します。 | 以下のコマンドを実行してください。<pre>git archive -o ../godemoapp.zip HEAD</pre>ソースバンドルの.zip ファイルを作成します。.zip ファイルをローカルファイルとしてダウンロードして保存します。.zip ファイルは 512 MB を超えることはできません。また、親フォルダまたは最上位ディレクトリを含めることはできません。 | システム管理者、アプリケーション開発者 | 

### Elastic Beanstalk に Go ウェブアプリケーションを移行する
<a name="migrate-the-go-web-application-to-elastic-beanstalk"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Elastic Beanstalk アプリケーションを選択します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.html)Elastic Beanstalk アプリケーションを作成する方法については、[Elastic Beanstalk のドキュメント](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.CreateApp.html) を参照してください。 | システム管理者、アプリケーション開発者 | 
| Elastic Beanstalk ウェブサーバー環境を開始します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.html) | システム管理者、アプリケーション開発者 | 
| ソースバンドルの.zip ファイルを Elastic Beanstalk にアップロードします | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.html) | システム管理者、アプリケーション開発者 | 
| デプロイした Go Web アプリケーションをテストします。 | Elastic Beanstalk アプリケーションの概要ページにリダイレクトされます。概要の上部にある**環境 ID** の横で、`elasticbeanstalk.com` アプリケーションに移動するための末尾の URL を選択します。アプリケーションでは、設定ファイル内でこの名前を環境変数として使用し、Web ページに表示する必要があります。 | システム管理者、アプリケーション開発者 | 

## トラブルシューティング
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Application Load Balancer を介してアプリケーションにアクセスできない | Elastic Beanstalk アプリケーションを含むターゲットグループを確認します。異常がある場合は、Elastic Beanstalk インスタンスにログインし、`nginx.conf` ファイル設定をチェックして、正しいヘルスステータス URL にルーティングされていることを確認します。ターゲットグループのヘルスチェック URL を変更する必要がある場合があります。 | 

## 関連リソース
<a name="migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method-resources"></a>
+ 古い Elastic Beanstalk プラットフォームバージョンは IMDSv1 をサポートしていました。
+ [Elastic Beanstalk での設定ファイルの使用](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html)
+ [Elastic Beanstalk でのサンプルアプリケーションの作成](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.CreateApp.html) 

# AWS を使用してオンプレミス SFTP サーバーを に移行する AWS Transfer for SFTP
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp"></a>

*Amazon Web Services、Akash Kumar*

## 概要
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-summary"></a>

このパターンでは、 AWS Transfer for SFTP サービスを使用して、Secure Shell (SSH) File Transfer Protocol (SFTP) を使用するオンプレミス AWS クラウド のファイル転送ソリューションを に移行する方法について説明します。ユーザーは通常、ドメイン名または固定 IP を使用して SFTP サーバーに接続します。このパターンはどちらの場合にも当てはまります。

AWS Transfer for SFTP は のメンバーです AWS Transfer Family。これは、SFTP 経由で AWS ストレージサービスとの間でファイルを転送するために使用できる安全な転送サービスです。Amazon Simple Storage Service (Amazon S3) または Amazon Elastic File System (Amazon EFS) AWS Transfer for SFTP で を使用できます。このパターンは、Amazon S3 をストレージに使用します。

## 前提条件と制限
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-prereqs"></a>

**前提条件**
+ アクティブ AWS アカウント。
+ 既存の SFTP ドメイン名または固定 SFTP IP アドレス。

**制限**
+ 1 回のリクエストで転送できる最大オブジェクトは、現在 5 GiB です。100 MiB を超えるファイルの場合は、[Amazon S3 マルチパートアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)の使用を検討してください。

## アーキテクチャ
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスのフラットファイルまたはデータベースダンプファイル。

**ターゲットテクノロジースタック**
+ AWS Transfer for SFTP
+ Amazon S3
+ Amazon Virtual Private Cloud (Amazon VPC)
+ AWS Identity and Access Management (IAM) ロールとポリシー
+ Elastic IP アドレス
+ セキュリティグループ
+ Amazon CloudWatch Logs (オプション)

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

![\[AWS Transfer for SFTP を使用して、オンプレミスの SFTP サーバーを AWS クラウドに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/ec0a905c-edef-48ba-9b5e-ea4a4040d320/images/f42aa711-bfe0-4ac6-9f66-5c18a1dd1c7a.png)


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

このパターンのターゲットアーキテクチャを自動化するには、アタッチされた CloudFormation テンプレートを使用します。
+ `amazon-vpc-subnets.yml` は、2 つのパブリックサブネットと 2 つのプライベートサブネットを使用して仮想プライベートクラウド (VPC) をプロビジョニングします。
+ `amazon-sftp-server.yml` は、SFTP サーバーをプロビジョニングします。
+ `amazon-sftp-customer.yml` は、ユーザーを追加します。

## ツール
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-tools"></a>

**AWS のサービス**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) を使用すると、すべてのシステム、アプリケーション、および からのログを一元化 AWS のサービス できるため、ログをモニタリングして安全にアーカイブできます。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。このパターンでは、Amazon S3 をファイル転送のストレージシステムとして使用します。
+ [AWS Transfer for SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-family.html) は、SFTP プロトコルを介して AWS ストレージサービスとの間でファイルを転送するのに役立ちます。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) は、定義した仮想ネットワークに AWS リソースを起動するのに役立ちます。この仮想ネットワークは、ユーザー自身のデータセンターで運用されていた従来のネットワークと似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるという利点があります。

## エピック
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-epics"></a>

### 「VPC を作成する」
<a name="create-a-vpc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サブネットを持つ VPC を作成します。 | [Amazon VPC コンソール](https://console.aws.amazon.com/vpc/) を開きます。2 つのパブリックサブネットを持つ仮想プライベートクラウド (VPC) を作成します。(2 番目のサブネットは高可用性を実現します。)-または-添付された CloudFormation テンプレート `amazon-vpc-subnets.yml` を [CloudFormation コンソール](https://console.aws.amazon.com/cloudformation)にデプロイして、このエピックのタスクを自動化できます。 | デベロッパー、システム管理者 | 
| インターネットゲートウェイを追加します。 | インターネットゲートウェイをプロビジョニングし、VPC に接続します。 | デベロッパー、システム管理者 | 
| 既存の IP を移行します。 | Elastic IP アドレスに既存の IP アドレスをアタッチします。アドレスプールから Elastic IP アドレスを作成して使用できます。 | デベロッパー、システム管理者 | 

### SFTP サーバーをプロビジョニングする
<a name="provision-an-sftp-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SFTP サーバーの作成 | [AWS Transfer Family コンソール](https://console.aws.amazon.com/transfer/)を開きます。 AWS Transfer Family ドキュメントの[「サーバーのインターネット向けエンドポイントを作成する](https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#create-internet-facing-endpoint)」の手順に従って、インターネット向けエンドポイントを持つ SFTP サーバーを作成します。[**エンドポイントタイプ**] で、[**ホストされた VPC**] を選択します。**[アクセス]** には、**[インターネット接続]** を選択します。**VPC** には、前のエピックで作成した VPC を選択します。-または-添付された CloudFormation テンプレート `amazon-sftp-server.yml` を [CloudFormation コンソール](https://console.aws.amazon.com/cloudformation)にデプロイして、このエピックのタスクを自動化できます。 | デベロッパー、システム管理者 | 
| ドメイン名を移行する。 | 既存のドメイン名をカスタムホスト名にアタッチします。新しいドメイン名を使用している場合は、**Amazon Route 53 DNS** エイリアスを使用してください。既存のドメイン名には、**[その他 DNS]** を選択します。詳細については、 AWS Transfer Family ドキュメントの[「カスタムホスト名の使用](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-dns.html)」を参照してください。 | デベロッパー、システム管理者 | 
| CloudWatch ログ記録ロールを追加します。 | (オプション) CloudWatch ロギングを有効にする場合は、CloudWatch Logs API オペレーション `logs:CreateLogGroup`、`logs:CreateLogStream`、` logs:DescribeLogStreams`、および `logs:PutLogEvents` を使用して `Transfer` ロールを作成します。詳細については、 AWS Transfer Family ドキュメントの[CloudWatch でのログアクティビティ](https://docs.aws.amazon.com/transfer/latest/userguide/monitoring.html#monitoring-enabling)」を参照してください。 | 開発者、システム管理者 | 
| 保存して送信する。 | [**保存**] を選択します。**[アクション]** で **[開始]** を選択し、SFTP サーバーが **[オンライン]** というステータスで作成されるのを待ちます。 | デベロッパー、システム管理者 | 

### Elastic IP アドレスをSFTP サーバーにマッピングする
<a name="map-elastic-ip-addresses-to-the-sftp-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 設定を変更できるようにサーバーを停止する。 | [AWS Transfer Family コンソール](https://console.aws.amazon.com/transfer/)で **[サーバー]** を選択し、作成した SFTP サーバーを選択します。[**アクション**] で [**停止**] を選択します。サーバーがオフラインの場合は、**[編集]** を選択して設定を変更します。 | 開発者、システム管理者 | 
| アベイラビリティゾーンとサブネットを選択する。 | **[アベイラビリティゾーン]** セクションで、VPC のアベイラビリティゾーンとサブネットを選択します。 | デベロッパー、システム管理者 | 
| Elastic IP アドレスを追加する。 | **IPv4 アドレス**の場合、各サブネットの Elastic IP アドレスを選択し、**[保存]** を選択します。 | デベロッパー、システム管理者 | 

### ユーザーの追加
<a name="add-users"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| S3 バケットにアクセスするユーザーの IAM ロールを作成する。 | `Transfer`**** の IAM ロールを作成し、S3 バケット名をリソースとして、` s3:ListBucket`、` s3:GetBucketLocation`、および `s3:PutObject` を追加します。詳細については、 AWS Transfer Family ドキュメントの[「IAM ロールとポリシーの作成](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-roles.html)」を参照してください。—または—添付された CloudFormation テンプレート `amazon-sftp-customer.yml` を [CloudFormation コンソール](https://console.aws.amazon.com/cloudformation)にデプロイして、このエピックのタスクを自動化できます。 | デベロッパー、システム管理者 | 
| S3 バケットを作成する。 | アプリケーション用の S3 バケット環境を作成します。 | デベロッパー、システム管理者 | 
| オプションのフォルダを作成する。 | (オプション) ユーザー用のファイルを特定の Amazon S3 フォルダに個別に保存する場合は、必要に応じてフォルダを追加します。 | デベロッパー、システム管理者 | 
| SSH パブリックキーを作成する。 | SSH キーペアを作成するには、 AWS Transfer Family ドキュメントの[「SSH キーの生成](https://docs.aws.amazon.com/transfer/latest/userguide/key-management.html#sshkeygen)」を参照してください。 | デベロッパー、システム管理者 | 
| ユーザーを追加します。 | [AWS Transfer Family コンソール](https://console.aws.amazon.com/transfer/)で **[サーバー]** を選択し、作成した SFTP サーバーを選択して、**[ユーザーを追加]** を選択します。**[ホームディレクトリ]** には、作成した S3 バケットを選択します。**[SSH 公開キー]** の場合は、SSH キーペアの公開キー部分を指定します。SFTP サーバーのユーザーを追加し、**[追加]** を選択します。 | デベロッパー、システム管理者 | 

### SFTP サーバーをテストする
<a name="test-the-sftp-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セキュリティグループを作成する。 | SFTP サーバーの **[セキュリティグループ]** セクションで、テストマシンの IP を追加して SFTP アクセスを取得します。 | 開発者 | 
| SFTP クライアントユーティリティを使用してサーバーをテストする。 | 任意の SFTP クライアントユーティリティを使用してファイル転送をテストします。クライアントのリストと手順については、 AWS Transfer Family ドキュメントの[「クライアントを使用したファイルの転送](https://docs.aws.amazon.com/transfer/latest/userguide/transfer-file.html)」を参照してください。 | 開発者 | 

## 関連リソース
<a name="migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp-resources"></a>
+ [AWS Transfer Family ユーザーガイド](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)
+ [Amazon S3 ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ Amazon EC2 ドキュメントの[「Elastic IP アドレス」](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)

## アタッチメント
<a name="attachments-ec0a905c-edef-48ba-9b5e-ea4a4040d320"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/ec0a905c-edef-48ba-9b5e-ea4a4040d320/attachments/attachment.zip)」

# AWS アプリケーション移行サービスを使用してオンプレミス VM を Amazon EC2 に移行する
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service"></a>

*Amazon Web Services、Thanh Nguyen*

## 概要
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-summary"></a>

アプリケーションの移行に関しては、組織はさまざまな方法でアプリケーションのサーバーをオンプレミス環境から Amazon Web Services (AWS) クラウドにリホスト (リフトアンドシフト) できます。1 つの方法は、新しい Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをプロビジョニングし、アプリケーションを最初からインストールして設定することです。もう 1 つの方法は、サードパーティまたは AWS ネイティブの移行サービスを使用して、複数のサーバーを同時に移行することです。

このパターンは、AWS アプリケーション移行サービスを使用して、サポートされている仮想マシン (VM) を AWS クラウド上の Amazon EC2 インスタンスに移行する手順の概要を示しています。このパターンの方法を使用して、1 台または複数の仮想マシンを手動で 1 台ずつ移行することも、説明されている手順に基づいて適切な自動化スクリプトを作成して自動的に移行することもできます。

## 前提条件と制限
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-prereqs"></a>

**前提条件**
+ アプリケーション移行サービスをサポートするいずれかの AWS リージョンのアクティブな AWS アカウント
+ AWS Direct Connect または仮想プライベートネットワーク (VPN) を使用するプライベートネットワーク、またはインターネットを介した、ソースサーバーとターゲット EC2 サーバー間のネットワーク接続

**制限**
+ サポートされているリージョンの最新リストについては、「[Supported AWS Regions](https://docs.aws.amazon.com/mgn/latest/ug/supported-regions.html)」を参照してください。
+ サポートされているオペレーティングシステムのリストについては、「[Supported operating systems](https://docs.aws.amazon.com/mgn/latest/ug/Supported-Operating-Systems.html)」と「[Amazon EC2 よくある質問](https://aws.amazon.com/ec2/faqs/)」の「*全般*」セクションを参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-architecture"></a>

**ソーステクノロジースタック**
+ Amazon EC2 がサポートするオペレーティングシステムを実行する、物理、仮想、またはクラウドでホストされるサーバー

**ターゲットテクノロジースタック**
+ ソース VM と同じオペレーティングシステムを実行している Amazon EC2 インスタンス
+ Amazon Elastic Block Store (Amazon EBS)

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

次の図は、ソリューションの高レベルアーキテクチャと主要コンポーネントを示しています。オンプレミスデータセンターには、ローカルディスクを備えた仮想マシンがあります。AWS には、レプリケーションサーバーを含むステージングエリアと、テストとカットオーバー用の EC2 インスタンスを含む移行済みリソースエリアがあります。どちらのサブネットにも EBS ボリュームが含まれています。

![\[サポートされている VM を AWS クラウド上の Amazon EC2 インスタンスに移行するための主なコンポーネント。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/58c8bafd-9a6d-42d4-a5ce-08c4b9a286a3/images/f8396fad-7ee9-4f75-800f-e819f509e151.png)


1. AWS アプリケーション移行サービスを初期化します。

1. ステージングエリアサーバーの設定とレポート (ステージングエリアリソースを含む) を設定します。

1. ソースサーバーにエージェントをインストールし、ブロックレベルの継続的なデータ複製 (圧縮および暗号化) を行います。

1. オーケストレーションとシステム変換を自動化して、カットオーバー時間を短縮します。

**ネットワークアーキテクチャ**

次の図は、オンプレミスデータセンターと AWS の主要コンポーネント間の通信に必要なプロトコルとポートなど、ネットワークの観点から見たソリューションの大まかなアーキテクチャと主要コンポーネントを示しています。

![\[データセンターと AWS 間の通信用のプロトコルやポートなどのネットワークコンポーネント。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/58c8bafd-9a6d-42d4-a5ce-08c4b9a286a3/images/2f594daa-ddba-4841-8785-6067e8d83c2f.png)


## ツール
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-tools"></a>
+ [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html) を使用すると、変更を加えることなく、最小限のダウンタイムで、アプリケーションを AWS クラウドにリホスト (*リフトアンドシフト*) できます。

## ベストプラクティス
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-best-practices"></a>
+ ターゲット EC2 インスタンスへのカットオーバーが完了するまで、ソースサーバーをオフラインにしたり、再起動したりしないでください。
+ ユーザーがターゲットサーバーでユーザー承認テスト (UAT) を実施して、問題を特定して解決するための十分な機会を提供してください。このテストは、カットオーバーの少なくとも 2 週間前に開始するのが理想的です。
+ Application Migration Service コンソールでサーバーのレプリケーションステータスを頻繁に監視して、問題を早期に特定してください。
+ エージェントのインストールには、永続的な IAM ユーザー認証情報の代わりに、一時的な AWS Identity and Access Management (IAM) 認証情報を使用します。

## エピック
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-epics"></a>

### AWS 認証情報を生成する
<a name="generate-aws-credentials"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS レプリケーションエージェント IAM ロールを作成する。 | 管理者権限を使用して AWS アカウントにサインインします。AWS Identity and Access Management (IAM) [コンソール](https://console.aws.amazon.com/iam/)で、IAM ロールを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html) | AWS 管理者、移行エンジニア | 
| 一時的なセキュリティ認証情報を生成する。 | AWS コマンドラインインターフェイス (AWS CLI) がインストールされているマシンで、管理者権限でサインインします。または (サポートされている AWS リージョン内で) AWS マネジメントコンソールで、管理者権限で AWS アカウントにサインインし、AWS CloudShell を開きます。次のコマンドで一時的な認証情報を生成し、AWS アカウント ID に `<account-id>` を置き換えます。`aws sts assume-role --role-arn arn:aws:iam::<account-id>:role/MGN_Agent_Installation_Role --role-session-name mgn_installation_session_role`コマンドの出力から、`AccessKeyId`、****`SecretAccessKey`、および ****`SessionToken` の値をコピーします。****後で使用できるように安全な場所に保管してください。これらの一時的な認証情報は 1 時間後に失効します。1 時間後に認証情報が必要な場合は、前のステップを繰り返します。 | AWS 管理者、移行エンジニア | 

### アプリケーション移行サービスを初期化し、レプリケーション設定テンプレートを作成します。
<a name="initialize-application-migration-service-and-create-the-replication-settings-template"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サービスを初期化する。 | コンソールで、管理者権限を使用して AWS アカウントにサインインします。**[アプリケーション移行サービス]** を選択し、**[はじめに]** を選択します。 | AWS 管理者、移行エンジニア | 
| レプリケーション設定テンプレートを作成して設定する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)アプリケーション移行サービスは、データの複製と移行されたサーバーの起動を円滑に進めるために必要なすべての IAM ロールを自動的に作成します。 | AWS 管理者、移行エンジニア | 

### ソースマシンに AWS Replication Agent をインストールする
<a name="install-aws-replication-agents-on-source-machines"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 必要な AWS 認証情報を用意する。 | ソースサーバーでインストーラファイルを実行するときは、`AccessKeyId`、`SecretAccessKey`、`SessionToken` など、以前に生成した一時的な認証情報を入力する必要があります。 | 移行エンジニア、AWS 管理者 | 
| Linux サーバー用のエージェントをインストールする。 | インストーラコマンドをコピーし、ソースサーバーにログインし、インストーラを実行します。詳細な手順については、[AWS のドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/linux-agent.html)を参照してください。 | AWS 管理者、移行エンジニア | 
| Windows サーバー用のエージェントをインストールする。 | インストーラファイルを各サーバーにダウンロードし、インストーラコマンドを実行します。詳細な手順については、[AWS のドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/windows-agent.html)を参照してください。 | AWS 管理者、移行エンジニア | 
| 初期データ複製が完了するまで待つ。 | エージェントがインストールされると、ソースサーバーがアプリケーション移行サービスコンソールの **[ソースサーバー]** セクションに表示されます。サーバーが初期データ複製を行うまで待ちます。 | AWS 管理者、移行エンジニア | 

### 起動設定の構成
<a name="configure-launch-settings"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サーバーの詳細を指定する。 | アプリケーション移行サービスコンソールで、「**ソースサーバー**」セクションを選択し、一覧からサーバー名を選択してサーバーの詳細にアクセスします。 | AWS 管理者、移行エンジニア | 
| 起動設定を設定する。 | **[起動設定]** タブを選択します。一般的な起動設定や EC2 起動テンプレート設定など、さまざまな設定を行うことができます。詳細な手順については、[AWS のドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/launch-settings.html)を参照してください。 | AWS 管理者、移行エンジニア | 

### テストを実行
<a name="perform-a-test"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースサーバーをテストする。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)サーバーが起動します。 | AWS 管理者、移行エンジニア | 
| テストが正常に完了したことを確認します。 | テストサーバーが完全に起動すると、ページ上の **[アラート]** ステータスに各サーバーが **[起動済み]** と表示されます。 | AWS 管理者、移行エンジニア | 
| サーバーをテストする。 | テストサーバーに対してテストを行い、期待どおりに機能することを確認します。 | AWS 管理者、移行エンジニア | 

### カットオーバーのスケジュール設定と実行
<a name="schedule-and-perform-a-cutover"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| カットオーバーウィンドウのスケジュールを設定する。 | 関連チームと適切なカットオーバー期間のスケジュールを設定してください。 | AWS 管理者、移行エンジニア | 
| カットオーバーを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)ソースサーバーの **[移行ライフサイクル]** が **[カットオーバー中]** に変わります。 | AWS 管理者、移行エンジニア | 
| カットオーバーが正常に完了したことを確認します。 | カットオーバーサーバーが完全に起動すると、各サーバーの **[ソースサーバー]** ページの **[アラート]** ステータスに **[起動済み]** と表示されます。 | AWS 管理者、移行エンジニア | 
| サーバーをテストする。 | カットオーバーサーバーに対してテストを行い、想定どおりに機能することを確認します。 | AWS 管理者、移行エンジニア | 
| カットオーバーを確定する。 | **[テストとカットオーバー]** を選択し、**[カットオーバーの完了]** を選択して移行プロセスを終了します。 | AWS 管理者、移行エンジニア | 

## 関連リソース
<a name="migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service-resources"></a>
+ AWS Application Migration Service
+ [AWS Application Migration Service ユーザーガイド](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)

# を使用してオンプレミスから Amazon S3 に小さなデータセットを移行する AWS SFTP
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp"></a>

*Amazon Web Services、Charles Gibson、Sergiy Shevchenko*

## 概要
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-summary"></a>

このパターンでは、 AWS Transfer for SFTP () を使用して、オンプレミスのデータセンターから Amazon Simple Storage Service (Amazon S3) に小さなデータセット (5 TB 以下) を移行する方法について説明しますAWS SFTP。データは、データベースダンプまたはフラットファイルのいずれかです。

## 前提条件と制限
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ データセンターと の間に確立された AWS Direct Connect リンク AWS

**制限事項**
+ データファイルは 5 TB 未満である必要があります。5 TB を超えるファイルの場合は、Amazon S3 へのマルチパートアップロードを実行するか、別のデータ転送方法を選択できます。 

## アーキテクチャ
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスのフラットファイルまたはデータベースダンプ

**ターゲットテクノロジースタック**
+ Amazon S3

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

![\[Diagram showing data flow from on-premises servers to AWS クラウド services via Direct Connect and VPN.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/a9c016ff-3e68-4714-ac51-46cb4727397a/images/5c5bb9ea-d552-44e8-8d0d-df341f84f55d.png)


## ツール
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-tools"></a>
+ [AWS SFTP](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html) – Secure File Transfer Protocol (Amazon S3との間でファイルを直接転送できるようにします。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) – オンプレミスのデータセンターから への専用ネットワーク接続を確立します AWS。
+ [VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) – インターネットゲートウェイ、ネットワークアドレス変換 (NAT) デバイス、VPN 接続、または Direct Connect 接続 AWS PrivateLink を使用せずに、サポートされている AWS のサービス および を搭載した VPC エンドポイントサービスに VPC をプライベートに接続できます。VPC のインスタンスでは、サービスのリソースと通信するためにパブリック IP アドレスを必要としません。

## エピック
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 現在の SFTP 要件を文書化してください。 |  | アプリ所有者、SA | 
| 認証要件を特定します。 | 要件には、キーベースの認証、ユーザー名またはパスワード、または ID プロバイダー (IdP) が含まれる場合があります。 | アプリ所有者、SA | 
| アプリケーション統合要件を特定する。 |  | アプリ所有者 | 
| サービスを必要とするユーザーを特定します。 |  | アプリ所有者 | 
| SFTP サーバーエンドポイントの DNS 名を決定します。 |  | ネットワーク | 
| バックアップ戦略を決定します。 |  | SA、DBA (データが転送される場合)  | 
| アプリケーションの移行またはカットオーバー戦略を特定します。 |  | アプリ所有者、SA、DBA | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| に 1 つ以上の仮想プライベートクラウド (VPCs) とサブネットを作成します AWS アカウント。 |  | AMS のアプリ所有者 | 
| セキュリティグループとネットワークアクセスコントロールリスト (ACL) |  | ネットワークとセキュリティ | 
| Amazon S3 バケットを作成します。 |  | AMS のアプリ所有者 | 
|  AWS Identity and Access Management (IAM) ロールを作成します。 | が Amazon S3 バケット AWS SFTP にアクセスできるようにするアクセス許可を含む IAM ポリシーを作成します。 Amazon S3 この IAM ポリシーは、 ユーザーに提供するアクセスのレベルを決定します。信頼関係を確立する別の IAM ポリシーを作成します AWS SFTP。 | セキュリティ、AMS | 
| 登録済みドメインを関連付けます (オプション)。 | 独自の登録済みドメインを所有している場合は、そのドメインを SFTP サーバーに関連付けることができます。SFTP トラフィックを といったドメインから、または といったサブドメインから、SFTP サーバーエンドポイントにルーティングできます。 | ネットワーク、AMS | 
| SFTP サーバーの作成 | SFTP サーバーを作成し、サービスが使用する ID プロバイダータイプを指定して、ユーザーを認証します。 | AMS のアプリ所有者 | 
| SFTP クライアントを開きます。 | SFTP クライアントを開き、SFTP エンドポイントホストを使用するように接続を設定します。 は標準の SFTP クライアント AWS SFTP をサポートします。一般的に使用されているSFTPクライアントには、OpenSSH、WinSCP、サイバーダック、FileZilla などがあります。SFTP サーバーのホスト名は、 AWS SFTP コンソールから取得できます。 | AMS のアプリ所有者 | 

### プランニングとテスト
<a name="plan-and-test"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションの移行を計画する。 | 必要なアプリケーション構成の変更を計画し、移行日を設定し、テストスケジュールを決定します。 | AMS のアプリ所有者 | 
| インフラストラクチャをテストする | 本番稼働用環境以外でテストする | AMS のアプリ所有者 | 

## 関連リソース
<a name="migrate-small-sets-of-data-from-on-premises-to-amazon-s3-using-aws-sftp-resources"></a>

**リファレンス**
+ [AWS Transfer for SFTP ユーザーガイド](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)
+ [AWS Direct Connect リソース](https://aws.amazon.com/directconnect/resources/) 
+ [VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)

**チュートリアルと動画**
+ [AWS Transfer for SFTP (ビデオ)](https://www.youtube.com/watch?v=wcnGez5PP1E)
+ [AWS Transfer for SFTP ユーザーガイド](https://docs.aws.amazon.com/transfer/latest/userguide/what-is-aws-transfer-for-sftp.html)
+ [AWS SA ホワイトボード - Direct Connect (ビデオ)](https://www.youtube.com/watch?v=uP68iqyuqTg)

# オンプレミスの Oracle データベースを Oracle Amazon EC2 に移行する
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2"></a>

*Amazon Web Services、Baji Shaik および Pankaj Choudhary*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-summary"></a>

このパターンでは、オンプレミスの Oracle データベースを Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上の Oracle に移行する手順について説明します。AWS Data Migration Services (AWS DMS) を使用するか、RMAN、Data Pump インポート/エクスポート、 トランスポータブル表領域、Oracle GoldenGate などのネイティブ Oracle ツールを使用するかの 2 つの移行オプションについて説明します。

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターにあるソース Oracle データベース

**機能制限**
+ ターゲットオペレーティングシステム (OS) は Amazon EC2 でサポートされている必要があります。サポートされているシステムの完全なリストについては、「[Amazon EC2 のよくある質問](https://aws.amazon.com/ec2/faqs/)」を参照してください。

**製品バージョン**
+ Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 10.2 以降 (バージョン 10.x)、11g、12.2 および 18c まで。AWS DMS でサポートされているバージョンの最新リストについては、AWS DMS ドキュメントの「[データ移行ソース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)」にある「オンプレミスと Amazon EC2 インスタンスデータベース」を参照してください。  

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース

**ターゲットテクノロジースタック**
+ Amazon EC2 上の Oracle データベースインスタンス

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

![\[Amazon EC2 上の Oracle データベースのレプリケーションをセットアップします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/66c98694-6580-4ffb-9f16-84de58cf8b07/images/386d5b14-8633-4ecc-98fb-59872de99d41.png)


**データ移行アーキテクチャ**

AWS DMS を使用する:

![\[AWS DMS を使用してオンプレミスの Oracle データベースを Amazon EC2 に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/66c98694-6580-4ffb-9f16-84de58cf8b07/images/14954066-d22b-486a-a432-265296752878.png)


*ネイティブ Oracle ツールの使用:*

![\[Oracle ツールを使用してオンプレミスの Oracle データベースを Amazon EC2 に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/66c98694-6580-4ffb-9f16-84de58cf8b07/images/82ba5fcb-8640-45fa-b432-2702dedc0774.png)


## ツール
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-tools"></a>
+ **AWS DMS — **[AWS Database Migration Service](https://docs.aws.amazon.com/dms/index.html) (AWS DMS) は、複数のソースデータベースとターゲットデータベースをサポートします。サポートされているデータベースのバージョンとエディションについては、「[AWS DMS のソースとして Oracle データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。 
+ **ネイティブ Oracle ツール - **RMAN、Data Pump インポート/エクスポート、トランスポータブル表領域、Oracle GoldenGate                                                         

## エピック
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  ソースデータベースとターゲットデータベースのバージョンを検証します。 |  | DBA | 
|  ターゲット OS のバージョンを特定します。 |  | DBA、SysAdmin | 
| Oracle 互換性リストと容量要件に基づいて、ターゲットサーバーインスタンスのハードウェア要件を特定します。 |  | DBA、SysAdmin | 
| ストレージ要件 (ストレージタイプと容量) を特定します。 |  | DBA、SysAdmin | 
| ネットワーク要件 (レイテンシーと帯域幅) を特定します。 |  | DBA、SysAdmin | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、SysAdmin | 
| ソースデータベースおよびターゲットデータベースのネットワークアクセスのセキュリティ要件を特定します。 |  | DBA、SysAdmin | 
| Oracleソフトウェアのインストールに必要な OS ユーザーのリストを決定します。 |  | DBA、SysAdmin | 
| AWS Schema Conversion Tool (AWS SCT) とドライバーをダウンロードします。 |  | DBA | 
| ワークロード用の AWS SCT プロジェクトを作成し、ソースデータベースに接続します。 |  | DBA | 
| オブジェクト (テーブル、インデックス、シーケンスなど) を作成する SQL ファイルを生成します。 |  | DBA | 
| バックアップ戦略を決定します。 |  | DBA、SysAdmin  | 
| 可用性の要件を決定します。 |  | DBA | 
| アプリケーションの移行/切り替え戦略を特定します。 |  | DBA、SysAdmin、アプリ所有者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS アカウントに仮想プライベートクラウド (VPC) を作成します。 |  | SysAdmin | 
| セキュリティグループとネットワークアクセスコントロールリスト (ACL) を作成します。 |  | SysAdmin | 
| EC2 インスタンスを設定して起動します。 |  | SysAdmin | 

### Oracle ソフトウェアをインストールします。
<a name="install-the-oracle-software"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle ソフトウェアに必要な OS ユーザーとグループを作成します。 |  | DBA、SysAdmin | 
| Oracle ソフトウェアの必要なバージョンをダウンロードします。 |  |  | 
| EC2 インスタンスに Oracle ソフトウェアをインストールします。 |  | DBA、SysAdmin | 
| AWS SCT で生成されたスクリプトを使用して、テーブル、プライマリキー、ビュー、シーケンスなどのオブジェクトを作成します。 |  | DBA | 

### データ移行 — オプション 1
<a name="migrate-data---option-1"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ネイティブ Oracle ツールまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 | Oracle ツールには、Data Pump インポート/エクスポート、RMAN、トランスポータブル表領域、および GoldenGate が含まれます。 | DBA | 

### データ移行 — オプション 2
<a name="migrate-data---option-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行方法を決定します。 |  | DBA | 
| AWS DMS コンソールからレプリケーションインスタンスを作成します。 |  | DBA | 
| ソースおよびターゲットエンドポイントを作成します。 |  | DBA | 
| レプリケーションタスクを作成します。 |  | DBA | 
| 変更データキャプチャ (CDC) を有効にして、継続的なレプリケーションの変更をキャプチャします。 |  | DBA | 
| レプリケーションタスクを実行し、ログをモニタリングします。 |  | DBA | 
| 完全なロードが完了したら、インデックスや外部キーなどのセカンダリオブジェクトを作成します。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 |  | DBA、SysAdmin、アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションのカットオーバー/スイッチオーバー戦略に従ってください。 |  | DBA、SysAdmin、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS Secrets Manager リソースをシャットダウンします。 |  | DBA、SysAdmin | 
| プロジェクト文書を確認して検証する。 |  | DBA、SysAdmin、アプリ所有者 | 
| 移行の所要時間、手動タスクとツールによるタスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、SysAdmin、アプリ所有者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  |  | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2-resources"></a>

**リファレンス**
+ 「[Oracle データベースを AWS に移行するための戦略](https://docs.aws.amazon.com/whitepapers/latest/strategies-migrating-oracle-db-to-aws/strategies-migrating-oracle-db-to-aws.html)」 
+ 「[AWS クラウドへの Oracle データベースの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/)」
+ 「[Amazon EC2 ウェブサイト](https://aws.amazon.com/ec2/)」
+ [AWS DMS ウェブサイト](https://aws.amazon.com/dms/)
+ [AWS DMS に関するブログ投稿](https://aws.amazon.com/blogs/database/category/dms/)
+ 「[Amazon EC2 の料金](https://aws.amazon.com/ec2/pricing/)」
+ 「[クラウドコンピューティング環境における Oracle ソフトウェアのライセンス](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)」

**チュートリアルと動画**
+ 「[Amazon EC2 の開始方法](https://aws.amazon.com/ec2/getting-started/)」
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [Amazon EC2 のご紹介 - Elastic クラウドサーバーと AWS でのホスティング (動画)](https://www.youtube.com/watch?v=TsRBftzZsQo) 

# Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon EC2 に移行する
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump"></a>

*Amazon Web Services、Navakanth Talluri*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-summary"></a>

データベースを移行するときは、ソースとターゲットのデータベースエンジンとバージョン、移行ツールとサービス、許容されるダウンタイム期間などの要素を考慮する必要があります。オンプレミスの Oracle データベースを Amazon Elastic Compute Cloud (Amazon EC2) に移行する場合は、Oracle Data Pump や Oracle Recovery Manager (RMAN) などのOracleのツールを使用できます。詳細については、ガイド [AWS クラウドへの Oracle データベースの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)を参照してください。

Oracle Data Pump は、データベースの論理的で一貫性のあるバックアップを抽出し、ターゲット EC2 インスタンスに復元するのに役立ちます。このパターンでは、Oracle Data Pump `NETWORK_LINK` とパラメータを使用して、オンプレミスの Oracle データベースを EC2 インスタンスに移行する方法を、最小限のダウンタイムで説明します。この `NETWORK_LINK` パラメータは、データベースリンクを通じてインポートを開始します。ターゲット EC2 インスタンスの Oracle Data Pump Import (impdp) クライアントは、ソースデータベースに接続し、そこからデータを取得して、ターゲットインスタンスのデータベースに直接データを書き込みます。このソリューションではバックアップファイルや*ダンプ*ファイルは使用されません。

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ 以下の機能を備えたオンプレミスの Oracle データベース
  + Oracle・リアル・アプリケーション・クラスター (RAC) データベースではない
  + Oracle 自動ストレージ管理 (Oracle ASM) データベースではない
  + 読み書きモードです。
+ オンプレミスデータセンターと AWS の間に AWS Direct Connect リンクが作成されました。詳細については、[接続の作成](https://docs.aws.amazon.com/directconnect/latest/UserGuide/create-connection.html) (Direct Connect ドキュメント)を参照してください。

**製品バージョン**
+ Oracle Database 12c リリース 1 (12.1.0.2.v14) 以降

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス・データセンター内のスタンドアロン (非RACおよび非ASM) Oracleデータベース・サーバー

**ターゲットテクノロジースタック**
+ Amazon EC2 上で実行されている Oracle データベース

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

AWS Well-Architected フレームワーク の [信頼性の柱](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html) は、高い可用性と耐障害性を提供するためにデータのバックアップを作成することを推奨しています。詳細については、「*AWS での Oracle Database の稼働に関するベストプラクティス*」の「[高可用性を実現するアーキテクチャの設計](https://docs.aws.amazon.com/whitepapers/latest/oracle-database-aws-best-practices/architecting-for-high-availability.html#amazon-ec2)」を参照してください。このパターンでは、Oracle Active Data Guard を使用して EC2 インスタンスにプライマリデータベースとスタンバイデータベースを設定します。高可用性を実現するには、EC2 インスタンスを異なるアベイラビリティーゾーンに配置する必要があります。ただし、アベイラビリティーゾーンは同じ AWS リージョン内に存在することも、異なる AWS リージョン内に存在することもできます。

Oracle アクティブデータガードは、クエリ、ソート、レポート、その他の読み取り操作を行う際に、フィジカル・スタンバイ・データベースへの読み取り専用アクセスを提供しますが、その間、プライマリ・データベースからREDOの変更を継続的に適用します。目標復旧時点 (RPO) と目標復旧時間 (RTO) に基づいて、同期と非同期のREDO転送オプションを選択できます。

以下の画像は、プライマリ EC2 インスタンスとスタンバイ EC 2 インスタンスが異なる AWS リージョンにある場合のターゲットアーキテクチャを示しています。

![\[プライマリ EC2 インスタンス上の新しいデータベースに接続する アプリケーション。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bdd49395-2f99-43e2-ad1d-a1d09d90fb58/images/37fcd4dc-5516-416b-a280-0c5f002880de.png)


**データ移行アーキテクチャ**

ターゲットアーキテクチャの設定が完了したら、Oracle Data Pump を使用してオンプレミスのデータとスキー マをプライマリ EC2 インスタンスに移行します。カットオーバー中、アプリケーションはオンプレミスデータベースまたはターゲットデータベースにアクセスできません。これらのアプリケーションは、プライマリ EC2 インスタンスの新しいターゲットデータベースに接続できるよう になるまでシャットダウンします。

以下の画像は、データ移行中のアーキテクチャを示しています。このサンプルアーキテクチャでは、プライマリ EC2 インスタンスとスタンバイ EC2 インスタンスは異なる AWS リ ージョンにあります。

![\[ソース DB は、ターゲット DB に接続します。アプリケーションは、ソース DB とターゲット DB から切断されます。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bdd49395-2f99-43e2-ad1d-a1d09d90fb58/images/c58b669b-b11f-4d78-8911-c07b81b7c6a0.png)


## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-tools"></a>

** サービス**
+ [AWS Direct Connect](https://aws.amazon.com/directconnect/) は、標準のイーサネット光ファイバーケーブルを介して内部ネットワークを Direct Connect の場所にリンクします。この接続を使用すると、Amazon S3 などのパブリックサービス、または Amazon VPC に対する仮想インターフェイスを直接作成できるため、ネットワークパスのインターネットサービスプロバイダーを回避できます。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。

**その他のツールとサービス**
+ [Oracle Active Data Guard](https://docs.oracle.com/en/database/oracle/oracle-database/21/sbydb/introduction-to-oracle-data-guard-concepts.html#GUID-5E73667D-4A56-445E-911F-1E99092DD8D7) は、スタンバイ・データベースの作成、保守、管理、監視に役立ちます。
+ [Oracle Data Pump](https://www.oracle.com/technetwork/documentation/data-pump-overview-084963.html) を使用すると、データやメタデータをあるデータベースから別のデータベースに高速に移動できます。

## ベストプラクティス
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-best-practices"></a>
+ [AWS で Oracle Database を実行するためのベストプラクティス](https://docs.aws.amazon.com/whitepapers/latest/oracle-database-aws-best-practices/architecting-for-security-and-performance.html)
+ [NETWORK\$1LINK を使用してデータをインポートします](https://docs.oracle.com/database/121/SUTIL/GUID-23E58D59-A477-4A87-BD0E-C82447581D0A.htm#SUTIL856)

## エピック
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-epics"></a>

### AWS で EC2 インスタンスをセットアップする
<a name="set-up-the-ec2-instances-on-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミスホストのソースハードウェア構成とカーネルパラメータを 特定します。 | ストレージサイズ、1 秒あたりの入出力オペレーション (IOPS)、CPU など、オンプレミス設定を検証します。これは CPU コアに基づく Oracle ライセンスにとって重要です。 | DBA、SysAdmin | 
| AWS でインフラストラクチャを作成します。 | 仮想プライベートクラウド (VPC)、プライベートサブネット、セキュリテ ィグループ、ネットワークアクセスコントロールリスト (ACL)、ルートテーブル、インターネットゲートウェイを作成します。詳細については次を参照してください:[\[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-ec2-by-using-oracle-data-pump.html) | AWS システム管理者 | 
| アクティブデータガードを使用して EC2 インスタンスをセットアップします。 | [AWS Well-Architected フレームワーク](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html) で説明されているように、アクティブデータガード設定を使用して AWS EC2 インスタンスを設定します。EC2 インスタンス上の Oracle Database のバージョンは、オンプレミスバージョンと異なる場合があります。 これは、このパターンでは論理バックアップが使用されるためです。次の点に注意してください。[\[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-ec2-by-using-oracle-data-pump.html)詳細については、以下を参照してください。[\[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-ec2-by-using-oracle-data-pump.html) | AWS システム管理者 | 

### データベースを Amazon EC2 に移行する
<a name="migrate-the-database-to-amazon-ec2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスからオンプレミスデータベースへの dblink を作成します。 | EC2 インスタンスの Oracle データベースとオンプレミスの Oracle データベースとの間にデータベースリンク (d blink) を作成します。詳細については、[ネットワークリンクインポートによるデータの移動](https://docs.oracle.com/database/121/SUTIL/GUID-3E1D4B46-E856-4ABE-ACC5-977A898BB0F1.htm#SUTIL806) (Oracle ドキュメント) を参照してください。 | DBA | 
| EC2 インスタンスとオンプレミスホスト間の接続を確認します。 | dblink を使用して、EC2 インスタンスとオンプレミスデータベース間の接続が機能していることを確認します。手順については、[データベースリンクの作成](https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm) (Oracle ドキュメント) を参照してください。 | DBA | 
| オンプレミスデータベースに接続されているすべてのアプリケーション を停止します。 | データベースのダウンタイムが承認されたら、オンプレミスデータベースに接続しているすべてのアプリケーションと依存ジョブを停止します。これは、アプリケーションから直接実行することも、cron を使用してデータベースから実行することもできます。詳細については、[Oracle Linux で Crontab ユーティリティを使用してタスクをスケジュールする](https://docs.oracle.com/en/learn/oracle-linux-crontab/index.html)を参照してください。 | DBA、アプリケーション開発者 | 
| データ移行ジョブをスケジュールします。 | ターゲットホストで、`impdb` コマンドを使用して Data Pump のインポートをスケジュールします。これにより、ターゲットデータベースがオンプレミスホストに接続され、データ移行が開始されます。詳細については、[Data Pump Import](https://docs.oracle.com/database/121/SUTIL/GUID-D11E340E-14C6-43B8-AB09-6335F0C1F71B.htm#SUTIL300) と[NETWORK\$1LINK](https://docs.oracle.com/database/121/SUTIL/GUID-0871E56B-07EB-43B3-91DA-D1F457CF6182.htm#SUTIL919)(Oracle ドキュメント) を参照してください。 | DBA | 
| データ移行を検証します。 | データ検証は重要なステップです。データ検証には、dblink と SQL クエリの組み合わせなど、カスタムツールや Oracle ツールを使用できます。 | DBA | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行元データベースは、特別な読み取り専用モードとなります。 | アプリケーションがシャットダウンされ、ソースデータベースに、変更が加えられていないことを確認します。ソースデータベースを読み取り専用モードで開きます。これにより、未処理のトランザクションを回避できます。詳細については、[SQL ステートメント](https://docs.oracle.com/database/121/SQLRF/statements_1006.htm#i2135540)の`ALTER DATABASE` を参照してください。 | DevOps エンジニア、開発者 | 
| オブジェクト数とデータを検証します。 | データ検証には、dblink と SQL クエリの組み合わせなど、カスタムツールや Oracle ツールを使用できます。 | DBA、アプリケーション開発者 | 
| プライマリ EC2 インスタンス上の新しいデータベースに接続するアプリケーション。 | プライマリ EC2 インスタンスに作成した新しいデータベースを指すようにアプリケーションの接続属性を変更します。 | DBA、アプリケーション開発者 | 
| アプリケーションのパフォーマンスを検証します。 | アプリケーションの起動 [Automated Workload Repository](https://docs.oracle.com/database/121/RACAD/GUID-C3CD2DCE-38BD-46BA-BC32-7A28CAC9A7FD.htm#RACAD951) (Oracle ドキュメント) を使用して、アプリケーションの機能とパフォーマンスを検証します。 | アプリ開発者、DevOps エンジニア | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump-resources"></a>

**AWS リファレンス**
+ 「[AWS クラウドへの Oracle データベースの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)」
+ [Amazon EC2 for Oracle](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/ec2-oracle.html)
+ [クロスプラットフォーム環境の場合にバルク Oracle データベースを AWS に移行します](https://docs.aws.amazon.com/prescriptive-guidance/latest/migrate-bulky-oracle-databases/welcome.html)
+ [VPC とサブネット](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)
+ [チュートリアル：DB インスタンス用の Amazon VPC を作成する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateVPC.html)

**Oracleのリファレンス**
+ [Oracle Data Guard 設定](https://docs.oracle.com/en/database/oracle/oracle-database/21/sbydb/introduction-to-oracle-data-guard-concepts.html#GUID-AB9DF863-2C7E-4767-81F2-56AD0FA30B49)
+ [データポンプインポート](https://docs.oracle.com/database/121/SUTIL/GUID-D11E340E-14C6-43B8-AB09-6335F0C1F71B.htm#SUTIL300)

# AWS MGN を使用して RHEL BYOL システムを AWS ライセンス込みのインスタンスに移行する
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn"></a>

*Amazon Web Services、Mike Kuznetsov*

## 概要
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-summary"></a>

AWS Application Migration Service (AWS MGN) を使用してワークロードを AWS に移行する場合、移行中に Red Hat Enterprise Linux (RHEL) インスタンスをリフトアンドシフト (リホスト) し、ライセンスをデフォルトの Bring Your Own License (BYOL) モデルから AWS ライセンス付属 (LI) モデルに変更しなければならない場合があります。AWS MGN は Amazon マシンイメージ (AMI) ID を使用するスケーラブルなアプローチをサポートしています。このパターンは、大規模なリホスト移行中に RHEL サーバーのライセンス変更を行う方法を説明しています。また、Amazon Elastic Compute Cloud (Amazon EC2) で既に実行している Red System のライセンスを変更する方法についても説明します。

## 前提条件と制限事項
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-prereqs"></a>

**前提条件**
+ ターゲット AWS アカウントへのアクセス
+ 移行対象の AWS アカウントとリージョンで AWS MGN を初期化しました (オンプレミスシステムから AWS に既に移行している場合は不要)
+ 有効な RHEL ライセンスを持つソース RHEL サーバー

## アーキテクチャ
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-architecture"></a>

このパターンは 2 つのシナリオをカバーしています。
+ AWS MGN を使用して、システムをオンプレミスから AWS LI インスタンスに直接移行します。このシナリオでは、最初のエピック (*LI インスタンスに移行 - オプション 1*) と 3 番目のエピックの手順に従います。
+ Amazon EC2 で既に稼働している RHEL システムのライセンスモデルを BYOL から LI に変更します。このシナリオでは、2 番目のエピック (*LI インスタンスへの移行* - *オプション 2*) と 3 番目のエピックの指示に従います。

**注記**  
3 番目のエピックでは、AWS が提供する Red Hat 更新インフラストラクチャ (RHUI) サーバーを使用するよう、新しい RHEL インスタンスを再構成します。このプロセスはどちらのシナリオでも同じです。

## ツール
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-tools"></a>

**AWS サービス**
+ 「[AWS Application Migration Service (AWS MGN)](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)」を使用すると、変更を加えることなく、ダウンタイムを最小限に抑えながら、アプリケーションを AWS クラウドにリホスト (リフトアンドシフト) できます。

## エピック
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-epics"></a>

### LI インスタンスへの移行 — オプション 1 (オンプレミスの RHEL システム用)
<a name="migrate-to-li-instance---option-1-for-an-on-premises-rhel-system"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットリージョンの RHEL AWS LI インスタンスの AMI ID を検索します。 | 「[AWS Marketplace](https://aws.amazon.com/marketplace)」にアクセスするか、「[Amazon EC2 コンソール](https://console.aws.amazon.com/ec2/)」を使用して RHEL ソースシステムのバージョン (RHEL-7.7 など) と一致する RHEL AMI ID を探し、その AMI ID を書き留めます。Amazon EC2 コンソールでは、次の検索用語のいずれかを使用して AMI をフィルタリングできます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | クラウド管理者 | 
| AWS MGN の起動設定を行います。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html)これで、AWS MGN はこのバージョンの起動テンプレートを使用してテストインスタンスまたはカットオーバーインスタンスを起動します。詳細については、「[AWS MGN ドキュメント](https://docs.aws.amazon.com/mgn/latest/ug/ec2-launch.html)」を参照してください。 | クラウド管理者 | 
| 設定を検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | クラウド管理者 | 
| 新しい LI インスタンスを起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | クラウド管理者 | 

### LI インスタンスへの移行-オプション 2 (RHEL BYOL EC2 インスタンスの場合)
<a name="migrate-to-li-instance---option-2-for-a-rhel-byol-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| RHEL BYOL EC2 インスタンスを AWS LI インスタンスに移行します。 | 以前に BYOL として AWS に移行した RHEL システムを AWS LI インスタンスに切り替えることができます。そのためには、ディスク (Amazon Elastic Block Store ボリューム) を移動して新しい LI インスタンスにアタッチします。これらを切り替えるには、以下の手順で行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | クラウド管理者 | 

### AWS が提供する RHUI を使用するように RHEL OS を再設定する (どちらのオプションも選択可能)
<a name="reconfigure-rhel-os-to-use-aws-provided-rhui-ndash-both-options"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Red Hat のサブスクリプションとライセンスから OS の登録を解除します。 | 移行してカットオーバーが成功したら、Red Hat ライセンスの使用を停止し、二重請求を防ぐため、RHEL システムを Red Hat サブスクリプションから削除する必要があります。RHEL OS を Red Hat サブスクリプションから削除するには、「[Red Hat サブスクリプション管理 (RHSM) ドキュメント](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/installation_guide/chap-subscription-management-unregistering)」に記載されている手順に従ってください。 CLI コマンドを使用します。 <pre>subscription-manager unregister</pre>また、サブスクリプションマネージャープラグインを無効にして、**[yum]** が呼び出されるたびにサブスクリプションの状態を確認しないようにすることもできます。これを行うには、設定ファイル `/etc/yum/pluginconf.d/subscription-manager.conf` を編集し、パラメータ `enabled=1` を `enabled=0` に変更します。 | Linux またはシステム管理者ユーザー | 
| 古い更新設定 (RHUI、Red Hat Satellite ネットワーク、yum リポジトリ) を AWS が提供する RHUI に置き換えます。 | 移行した RHEL システムを、AWS が提供する RHUI サーバーを使用するように再設定する必要があります。これにより、外部の更新インフラストラクチャを必要とせずに、AWS リージョン内の RHUI サーバーにアクセスできます。この変更には以下のプロセスが含まれます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html)詳細な手順とコマンドは次のとおりです。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.html) | Linux またはシステム管理者ユーザー | 
| 設定を検証します。 | 移行したターゲットインスタンスで、新しい設定が正しいことを確認します。<pre>sudo yum clean all <br />sudo yum repolist </pre> | Linux またはシステム管理者ユーザー | 

## 関連リソース
<a name="migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn-resources"></a>
+ 「[AWS Application Migration Service (AWS MGN) ユーザーガイド](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)」
+ 「[IMDSv2 をサポートする AWS RHUI クライアントパッケージを入手する](https://access.redhat.com/solutions/5009491)」(Red Hat ナレッジベース記事)
+ 「[Amazon EC2 起動テンプレート](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)」(Amazon EC2 ドキュメント)

# オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2"></a>

*Amazon Web Services、Senthil Ramasamy*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-summary"></a>

このパターンでは、オンプレミスの Microsoft SQL Server データベースを Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上の Microsoft SQL Server に移行する方法を説明します。移行には AWS Database Migration Service 、(AWS DMS) の使用、バックアップと復元などのネイティブ Microsoft SQL Server ツールの使用、データベースウィザードのコピー、データベースのコピーとアタッチの 2 つのオプションがあります。

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Amazon EC2 がサポートするオペレーティングシステム (サポートされているオペレーティングシステムバージョンの全リストについては、[Amazon EC2 のよくある質問](https://aws.amazon.com/ec2/faqs/) を参照してください)
+ オンプレミスデータセンターにある Microsoft SQL Server ソースデータベース

**製品バージョン**
+ オンプレミスおよび Amazon EC2 インスタンスデータベースの場合、 は以下 AWS DMS をサポートします。
  + SQL Server バージョン 2005、2008、2008R2、2012、2014、2016、2017、2019 をサポートします。
  + Enterprise、Standard、Workgroup、Developer、および Web エディションをサポートします。
+ サポートされているバージョンの最新リストについては、「[Microsoft SQL Server データベースの AWS DMSのターゲットとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html)」を参照してください。  

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-architecture"></a>

**ソーステクノロジースタック**
+ Microsoft SQL Server データベースのオンプレミス版

**ターゲットテクノロジースタック**
+ Microsoft SQL Server データベースをホストする EC2 インスタンス

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

![\[2 つのアベイラビリティーゾーンの EC2 インスタンス上のプライマリおよびスタンバイ Microsoft SQL Server インスタンス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f0a155b3-4977-4e1f-8332-89eab29c1e25/images/53e2c27d-ceb4-4d88-a022-93dd0b343eaf.png)


**データ移行アーキテクチャ**
+ の使用 AWS DMS

![\[AWS DMS を使用してオンプレミスの SQL Server データを EC2 インスタンスに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f0a155b3-4977-4e1f-8332-89eab29c1e25/images/1cbe32ea-e285-4cac-9153-4428bad9b229.png)

+ ネイティブ SQL Server ツールの使用 

![\[ネイティブ SQL Server ツールを使用して、オンプレミスの SQL Server データを EC2 インスタンスに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f0a155b3-4977-4e1f-8332-89eab29c1e25/images/ad2caf54-7399-4038-91a3-acba9fa7da29.png)


## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/) は、Oracle、SQL Server、MySQL、PostgreSQL など、広く使用されている商用データベースやオープンソースデータベースとの間でデータを移行するのに役立ちます。 AWS DMS を使用して、オンプレミスインスタンス間 ( AWS クラウド セットアップ経由) AWS クラウド、またはクラウドとオンプレミスのセットアップの組み合わせ間でデータを に移行できます。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行をサポートします。
+ Microsoft SQL Serverのネイティブツールには、バックアップと復元、データベースコピーウィザード、データベースのコピーとアタッチが含まれます。

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンを検証します。 |  | DBA | 
| 対象オペレーティングシステムのバージョンを特定します。 |  | DBA、システム管理者 | 
| Microsoft SQL Server 互換性リストと容量要件に基づいて、ターゲットサーバーインスタンスのハードウェア要件を特定します。 |  | DBA、システム管理者 | 
| ストレージタイプと容量要件を特定します。 |  | DBA、システム管理者 | 
| レイテンシーや帯域幅などのネットワーク要件を特定します。 |  | DBA、システム管理者 | 
| 容量、ストレージ機能、ネットワーク機能に基づいてEC2インスタンスタイプを選択してください。 |  | DBA、システム管理者 | 
| ソースおよびターゲットのデータベースのネットワークおよびホストアクセスのセキュリティ要件を特定します。 |  | DBA、システム管理者 | 
| Microsoft SQL Server ソフトウェアのインストールに必要なユーザーのリストを特定してください。 |  | DBA、システム管理者 | 
| バックアップ戦略を決定します。 |  | DBA | 
| 可用性要件を決定します。 |  | DBA | 
| アプリケーションの移行とカットオーバー戦略を特定する。 |  | DBA、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) とサブネットを作成する。 |  | システム管理者 | 
| セキュリティグループとネットワークアクセスコントロールリスト (ACL) |  | システム管理者 | 
| EC2 インスタンスを設定して起動します。 |  | システム管理者 | 

### ソフトウェアをインストールします。
<a name="install-the-software"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Microsoft SQL Server ソフトウェアの動作に必要なユーザーとグループを作成します。 |  | DBA、システム管理者 | 
| Microsoft SQL Server ソフトウェアをダウンロードします。 |  | DBA、システム管理者 | 
| Microsoft SQL Server ソフトウェアを EC2 インスタンスにインストールし、サーバーを設定します。 |  | DBA、システム管理者 | 

### データを移行する — オプション 1
<a name="migrate-the-data---option-1"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ネイティブ SQL Server ツールまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 | Microsoft SQL Serverのネイティブツールには、データベースコピーウィザード、データベースのコピーとアタッチが含まれます。詳細については、「[Microsoft SQL Server データベースの AWS クラウドへの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/)」を参照してください。 | DBA | 

### データを移行する — オプション 2
<a name="migrate-the-data---option-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS を使用してデータを移行します。 | の使用の詳細については AWS DMS、[関連リソース](#migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-resources)セクションのリンクを参照してください。 | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 |  AWS Schema Conversion Tool (AWS SCT) を使用して、アプリケーションのソースコードに埋め込まれた SQL コードを分析および変更します。 | DBA、アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションのスイッチオーバー戦略に従ってください。 |  | DBA、アプリ所有者、システム管理者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| すべての一時 AWS リソースをシャットダウンします。 | 一時的なリソースには、 AWS DMS レプリケーションインスタンスと EC2 インスタンスが含まれます AWS SCT。 | DBA、システム管理者 | 
| プロジェクト文書を確認して検証する。 |  | DBA、アプリ所有者、システム管理者 | 
| 移行の所要時間、手動とツールによるコスト削減の割合などのメトリクスを収集します。 |  | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを閉じて、フィードバックを提供します。 |  | DBA、アプリ所有者、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2-resources"></a>

**リファレンス**
+ [Microsoft SQL Server データベースの への移行 AWS クラウド](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/)
+ [Amazon EC2](https://aws.amazon.com/ec2/)
+ [Amazon EC2 よくある質問](https://aws.amazon.com/ec2/faqs/)
+ [Amazon EC2 の料金](https://aws.amazon.com/ec2/pricing/)
+ [AWS Database Migration Service](https://aws.amazon.com/dms/)
+ [での Microsoft 製品 AWS](https://aws.amazon.com/windows/products/)
+ [での Microsoft ライセンス AWS](https://aws.amazon.com/windows/resources/licensing/)
+ [での Microsoft SQL Server AWS](https://aws.amazon.com/windows/products/sql/)

**チュートリアルと動画**
+ 「[Amazon EC2 の開始方法](https://aws.amazon.com/ec2/getting-started/)」
+ [https://aws.amazon.com/dms/getting-started/](https://aws.amazon.com/dms/getting-started/) の開始方法AWS Database Migration Service
+ [Amazon EC2 インスタンスを Simple AD Active Directory に結合する](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/simple_ad_join_instance.html)
+ [Amazon EC2 インスタンスを AWS Managed Microsoft AD Active Directory に結合する](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_join_instance.html)
+ [AWS Database Migration Service](https://www.youtube.com/watch?v=zb4GcjEdl8U) (ビデオ)
+ [Amazon EC2 のご紹介 – Elastic クラウドサーバーと AWSでのホスティング](https://www.youtube.com/watch?v=TsRBftzZsQo) (ビデオ)

# AWS Cloud でオンプレミスワークロードをリホストする: 移行チェックリスト
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist"></a>

*Srikanth Rangavajhala、Amazon Web Services*

## 概要
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-summary"></a>

Amazon Web Services (AWS) クラウドでのオンプレミスワークロードのリホストには、計画、事前検出、検出、構築、テスト、カットオーバーという移行フェーズが含まれます。このパターンは、フェーズとその関連タスクの概要を示しています。タスクは高レベルで説明され、すべてのアプリケーションワークロードの約 75% をサポートしています。これらのタスクは、アジャイルスプリントサイクルで 2～3 週間かけて実装できます。

これらのタスクは、移行チームとコンサルタントと確認して検証する必要があります。確認後は、入力を収集し、要件を満たすための必要に応じてタスクを削除または再評価し、ポートフォリオ内のアプリケーションワークロードの少なくとも 75% をサポートするように他のタスクを変更できます。その後、Atlassian Jira または Rally Software などのアジャイルプロジェクト管理ツールを使用して、タスクをインポートし、リソースに割り当て、移行アクティビティを追跡できます。 

このパターンでは、[AWS クラウド移行ファクトリー](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/solution-overview.html)を使用してワークロードをリホストすることを前提としていますが、任意の移行ツールを使用できます。

Amazon Macie は、Amazon Simple Storage Service (Amazon S3) バケットにデータソース、モデル呼び出しログ、プロンプトストアとして保存されているナレッジベースの機密データを識別するのに役立ちます。詳細については、[Macie のドキュメント](https://docs.aws.amazon.com/macie/latest/user/data-classification.html)を参照してください。

## 前提条件と制限
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-prereqs"></a>

**前提条件**
+ 移行タスクを追跡するプロジェクト管理ツール (例、Atlassian Jira または Rally ソフトウェア)
+ AWS でワークロードをリホストする移行ツール (例、[クラウド移行ファクトリ](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/solution-overview.html))

## アーキテクチャ
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-architecture"></a>

**ソースプラットフォーム**
+ オンプレミスソーススタック (テクノロジー、アプリケーション、データベース、インフラストラクチャなど)  

**ターゲットプラットフォーム**
+ AWS クラウドターゲットスタック (テクノロジー、アプリケーション、データベース、インフラストラクチャなど) 

**アーキテクチャ**

次の図は、クラウド移行ファクトリーと AWS Application Migration Service を使用したリホスティング (オンプレミスのソース環境から AWS へのサーバーの検出と移行) を示しています。

![\[クラウド移行ファクトリとアプリケーション移行サービスを使用して AWS 上のサーバーをリホストする\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/8e2d2d72-30cc-4e98-8abd-ac2ef95e599b/images/735ad65b-2646-4803-82c9-f7f93369b3a5.png)


## ツール
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-tools"></a>
+ 任意の移行とプロジェクト管理ツールを使用できます。

## エピック
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-epics"></a>

### 計画フェーズ
<a name="planning-phase"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 事前検出のバックログを整理します。 | 部門長やアプリケーション所有者とともに事前検出のバックログ整理作業セッションを実施します。  | プロジェクトマネージャー、アジャイルスクラムリーダー | 
|  スプリント計画作業セッションを実施します。 | 範囲確定演習として、移行するアプリケーションをスプリントとウェーブに分散します。 | プロジェクトマネージャー、アジャイルスクラムリーダー | 

### 事前検出フェーズ
<a name="pre-discovery-phase"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションに関する知識を確認します。 | アプリケーション所有者とそのアプリケーションに関する知識を確認し、文書化します。技術的な質問に対応する担当者が他にいるかどうかを確認します。 | 移行スペシャリスト (インタビュアー) | 
| アプリケーションのコンプライアンス要件を決定します。 | アプリケーションが Payment Card Industry Data Security Standard (PCI DSS)、Sarbanes-Oxley Act (SOX)、個人を特定できる情報 (PII)、またはその他の基準の要件に準拠する必要がないことをアプリケーション所有者に確認します。コンプライアンス要件が存在する場合、チームは移行するサーバーでコンプライアンスチェックを終了する必要があります。 | 移行スペシャリスト (インタビュアー) | 
| 製品リリース要件を確認します。 | 移行したアプリケーションを本番環境にリリースするための要件 (リリース日やダウンタイム期間など) を、アプリケーション所有者または技術担当者に確認します。 | 移行スペシャリスト (インタビュアー) | 
| サーバーリストを取得します。 | ターゲットのアプリケーションに関連付けられているサーバーのリストを取得します。 | 移行スペシャリスト (インタビュアー) | 
| 現在の状態を示す論理ダイアグラムを取得します。 | アプリケーションの現在の状態図は、エンタープライズアーキテクトまたはアプリケーション所有者から入手します。 | 移行スペシャリスト (インタビュアー) | 
| ターゲットの状態を示す論理ダイアグラムを作成します。 | AWS 上のターゲットアーキテクチャを示すアプリケーションの論理ダイアグラムを作成します。このダイアグラムは、サーバー、接続性、マッピング要素を示す必要がありますす。 | エンタープライズアーキテクト、ビジネスオーナー | 
| サーバー情報を取得します | 設定詳細など、アプリケーションに関連付けられたサーバーに関する情報を収集します。 | 移行スペシャリスト (インタビュアー) | 
| 検出テンプレートにサーバー情報を追加します。 | アプリケーション検出テンプレートに詳細なサーバー情報を追加します (このパターンについては添付の `mobilize-application-questionnaire.xlsx` を参照)。このテンプレートには、アプリケーション関連のセキュリティ、インフラストラクチャ、オペレーティングシステム、ネットワークに関する詳細がすべて含まれます。 | 移行スペシャリスト (インタビュアー) | 
| アプリケーション検出テンプレートを公開します。 | アプリケーション検出テンプレートをアプリケーション所有者および移行チームと共有して、共通のアクセスと使用を可能にします。 | 移行スペシャリスト (インタビュアー) | 

### 発見フェーズ
<a name="discovery-phase"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サーバーリストを確認します。 | サーバーのリストと各サーバーの目的を、アプリケーション所有者またはテクニカルリードに確認します。 | 移行スペシャリスト | 
| サーバーグループを特定して追加します。 | Web サーバーまたはアプリケーションサーバーなどのサーバーグループを特定し、この情報をアプリケーション検出テンプレートに追加します。各サーバーが属するアプリケーションの階層 (Web、アプリケーション、データベース) を選択します。 | 移行スペシャリスト | 
| アプリケーション検出テンプレートに記入します。 | 移行チーム、アプリケーションチーム、AWS の協力を得て、アプリケーション検出テンプレートの詳細を完了します。 | 移行スペシャリスト | 
| 足りないサーバーの詳細 (ミドルウェアチームと OS チーム) を追加します。 | ミドルウェアチームとオペレーティングシステム (OS) チームに、アプリケーション検出テンプレートを確認し、不足しているサーバー情報 (データベース情報など) を追加するよう依頼します。 | 移行スペシャリスト | 
| インバウンド/アウトバウンドのトラフィックルールを取得します (ネットワークチーム)。 | ネットワークチームに、送信元サーバーと送信先サーバーのインバウンド/アウトバウンドのトラフィックルールを取得するよう依頼します。また、ネットワークチームは既存のファイアウォールルールを追加し、セキュリティグループ形式にエクスポートし、既存のロードバランサーをアプリケーション検出テンプレートに追加する必要があります。 | 移行スペシャリスト | 
| 必要なタグ付けを特定します。 | アプリケーションのタグ付け要件を決定します。 | 移行スペシャリスト | 
| ファイアウォールリクエストの詳細を作成します。 | アプリケーションとの通信に必要なファイアウォールルールをキャプチャしてフィルタリングします。  | 移行スペシャリスト、ソリューションアーキテクト、ネットワークリード  | 
| EC2 インスタンスタイプを更新します。 | インフラストラクチャとサーバーの要件に基づいて、ターゲット環境で使用する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプを更新します。  | 移行スペシャリスト、ソリューションアーキテクト、ネットワークリード | 
| 現在の状態ダイアログを特定します。 | アプリケーションの現在の状態を示すダイアログを特定または作成します。このダイアログは情報セキュリティ (InfoSec) リクエストで使用されます。  | 移行スペシャリスト、ソリューションアーキテクト | 
| 将来の状態ダイアログを完成させます。 | アプリケーションの将来の (ターゲット) 状態を示すダイアログを完成させます。このダイアログも InfoSec リクエストで使用されます。  | 移行スペシャリスト、ソリューションアーキテクト | 
| ファイアウォールまたはセキュリティグループのサービスリクエストを作成します。 | ファイアウォールまたはセキュリティグループのサービスリクエスト (開発/QA、実稼働前、実稼働用) を作成します。クラウド移行ファクトリーを使用中の場合は、レプリケーション固有のポート（まだ開いていない場合）を含めます。  | 移行スペシャリスト、ソリューションアーキテクト、ネットワークリード | 
| ファイアウォールまたはセキュリティグループのリクエストを確認します (InfoSec チーム)。 | この手順では、InfoSecチームが前の手順で作成したファイアウォールまたはセキュリティグループのリクエストを確認して承認します。  | InfoSec エンジニア、移行スペシャリスト | 
| ファイアウォールセキュリティグループのリクエストを実装します (ネットワークチーム)。 | InfoSec チームがファイアウォールリクエストを承認すると、ネットワークチームは必要なインバウンド/アウトバウンドのファイアウォールルールを実装します。  | 移行スペシャリスト、ソリューションアーキテクト、ネットワークリード | 

### ビルドフェーズ (開発/QA、実稼働前環境、本番環境の場合は繰り返し)
<a name="build-phase-repeat-for-development-qa-pre-production-and-production-environments"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションとサーバーのデータをインポートします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist.html)クラウド移行ファクトリーを使用していない場合は、移行ツールの設定手順に従います。 | 移行スペシャリスト、クラウド管理者 | 
| ソースサーバーの前提条件を確認します。 | 対象範囲内のソースサーバーと接続し、TCP 1500、TCP 443、ルートボリュームの空き容量、.Net Framework バージョン、その他のパラメータなど、前提条件を確認します。これらはレプリケーションに必要です。追加情報については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#prerequisites-2)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| レプリケーションエージェントをインストールするサービスリクエストを作成します。 | 開発/QA、実稼働前、または実稼働用の範囲内対象サーバーにレプリケーションエージェントをインストールするサービスリクエストを作成します。 | 移行スペシャリスト、クラウド管理者 | 
| レプリケーションエージェントをインストールします。 | 開発/QA、実稼働前、または実稼働マシンの範囲内対象ソースサーバーにレプリケーションエージェントをインストールします。追加情報については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#install-the-replication-agents)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| 起動後スクリプトをプッシュします。 | AWS Application Migration Service は起動後のスクリプトをサポートしており、ターゲットインスタンス起動後のソフトウェアのインストール/アンインストールなど、OS レベルのアクティビティの自動化に役立ちます。この手順は、移行対象として特定されたサーバーに応じて、起動後のスクリプトを Windows マシンまたは Linux マシンにプッシュします。手順については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#push-the-post-launch-scripts)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| レプリケーションステータスを確認します。 | 提供されたスクリプトを使用して、対象範囲内のソースサーバーのレプリケーションステータスを自動的に確認します。このスクリプトは、指定したウェーブ内のすべてのソースサーバーのステータスが**健全**ステータスに変わるまで 5 分ごとに繰り返します。手順については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#verify-the-replication-status)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| 管理者ユーザーを作成します。 | 対象範囲内のソースサーバーから AWS への移行後の問題のトラブルシューティングには、ソースマシンのローカル管理者または sudo ユーザーが必要になる場合があります。認証サーバー (DC または LDAP サーバーなど) にアクセスできない場合は、移行チームはこのユーザーを使用してターゲットサーバーにログインします。この手順の指示については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/step4.html#add-a-user-to-the-admin-group)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| 起動テンプレートを検証します。 | サーバーのメタデータを検証して、正常に動作し、無効なデータがないことを確認します。この手順はテストメタデータとカットオーバーメタデータの両方を検証します。手順については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#validate-launch-template-1)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 

### テストフェーズ (開発/QA、実稼働前環境、本番環境の場合は繰り返し)
<a name="test-phase-repeat-for-development-qa-pre-production-and-production-environments"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| サービスリクエストを作成します。 | インフラストラクチャチームと他のチームが、開発/QA、実稼働前、または実稼働インスタンスへのアプリケーションのカットオーバーを実行するサービスリクエストを作成します。  | 移行スペシャリスト、クラウド管理者 | 
| ロードバランサーを設定します (オプション)。 | [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) または iRules を搭載した [F5 ロードバランサー](https://www.f5.com/resources/white-papers/load-balancing-101-nuts-and-bolts)など、必要なロードバランサーを設定します。 | 移行スペシャリスト、クラウド管理者 | 
| テスト用のインスタンスを起動します。 | テストモードの AWS Application Migration Service で、指定したウェーブのすべてのターゲットマシンを起動します。追加情報については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#launch-instances-for-testing)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| ターゲットインスタンスのステータスを確認します。 | 同じウェーブ内のすべての対象範囲内のソースサーバーの起動プロセスをチェックして、ターゲットインスタンスのステータスを確認します。ターゲットインスタンスが起動するまでに最大 30 分かかることがあります。Amazon EC2 コンソールにログインし、ソースサーバー名を検索し、[**Status check（ステータスチェック）**] 列を確認することで、ステータスを手動で確認できます。ステータス **2/2 チェック合格**は、インフラストラクチャの観点からインスタンスが健全であることを示します。 | 移行スペシャリスト、クラウド管理者 | 
| DNS エントリを変更します。 | ドメインネームシステム (DNS) エントリを変更します。(Microsoft Windows 環境では `resolv.conf` または `host.conf` を使用) 各 EC2 インスタンスが、このホストの新しい IP アドレスを指すように設定します。オンプレミスサーバーと AWS クラウドサーバーの間に DNS の競合がないことを確認してください。サーバーがホストされている環境に応じて、この手順と以下の手順はオプションです。 | 移行スペシャリスト、クラウド管理者 | 
| EC2 インスタンスからバックエンドホストへの接続性をテストします。 | 移行したサーバーのドメイン認証情報を使用してログインを確認します。 | 移行スペシャリスト、クラウド管理者 | 
| DNS A レコードを更新します。 | 各ホストの DNS A レコードが新しい Amazon EC2 プライベート IP アドレスを指すように更新します。 | 移行スペシャリスト、クラウド管理者 | 
| DNS CNAME レコードを更新します。 | 仮想 IP (ロードバランサー名) の DNS CNAME レコードが、Web サーバーとアプリケーションサーバーのクラスターを指すように更新します。 | 移行スペシャリスト、クラウド管理者 | 
| 該当する環境でアプリケーションをテストします。 | 新しい EC2 インスタンスにログインし、開発/QA、実稼働前環境、本番環境でアプリケーションをテストします。 | 移行スペシャリスト、クラウド管理者 | 
| カットオーバーの準備完了とマークします。 | テストが完了したら、ソースサーバーのステータスがカットオーバーの準備完了を示し、ユーザーがカットオーバーインスタンスを起動できるように変更します。手順については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#mark-as-ready-for-cutover)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 

### カットオーバーフェーズ
<a name="cutover-phase"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 実稼働環境デプロイ計画を作成します。 | 実稼働環境デプロイ計画 (バックアウト計画を含む) を作成します。 | 移行スペシャリスト、クラウド管理者 | 
| オペレーションチームにダウンタイムを通知します。 | オペレーションチームにサーバーのダウンタイムスケジュールを通知します。チームによっては、この通知の変更リクエストまたはサービスリクエスト (CR/SR) チケットが必要な場合があります。 | 移行スペシャリスト、クラウド管理者 | 
| 実稼働マシンを複製します。 | アプリケーション移行サービスまたは別の移行ツールを使用して、実稼働マシンを複製します。 | 移行スペシャリスト、クラウド管理者 | 
| 対象範囲内のソースサーバーをシャットダウンします。 | ソースサーバーのレプリケーションステータスを確認したら、ソースサーバーをシャットダウンして、クライアントアプリケーションからサーバーへのトランザクションを停止できます。ソースサーバーはカットオーバーウィンドウでシャットダウンできます。詳細については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#shut-down-the-in-scope-source-servers)を参照してください。 | クラウド管理者 | 
| カットオーバー用のインスタンスを起動します。 | カットオーバーモードの Application Migration Service で、指定したウェーブのすべてのターゲットマシンを起動します。詳細については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-factory-web-console.html#launch-instances-for-cutover)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| ターゲットインスタンス IP を取得します。 | ターゲットインスタンスの IP を取得します。DNS 更新が環境で手動処理の場合、すべてのターゲットインスタンスの新しい IP アドレスを取得する必要があります。詳細については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-command-prompt.html#retrieve-the-target-instance-ip)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 
| ターゲットサーバーの接続を確認します。 | DNS レコードを更新したら、ホスト名でターゲットインスタンスに接続して接続を確認します。詳細については、[クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/list-of-automated-migration-activities-using-command-prompt.html#verify-the-target-server-connections)を参照してください。 | 移行スペシャリスト、クラウド管理者 | 

## 関連リソース
<a name="rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist-resources"></a>
+ [移行方法](https://aws.amazon.com/migrate-modernize-build/cloud-migration/how-to-migrate/)
+ [AWS クラウド移行ファクトリー実装ガイド](https://docs.aws.amazon.com/solutions/latest/cloud-migration-factory-on-aws/solution-overview.html)
+ [クラウド移行ファクトリーによる大規模なサーバー移行の自動化](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-factory-cloudendure/welcome.html)
+ [AWS Application Migration Service ユーザーガイド](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)
+ [AWS Migration Acceleration Program](https://aws.amazon.com/migration-acceleration-program/)

## アタッチメント
<a name="attachments-8e2d2d72-30cc-4e98-8abd-ac2ef95e599b"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/8e2d2d72-30cc-4e98-8abd-ac2ef95e599b/attachments/attachment.zip)」

# Amazon FSx を使用して SQL Server Always On FCI 向けのマルチ AZ インフラストラクチャをセットアップする
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx"></a>

*Manish Garg、T.V.R.L.Phani Kumar Dadi、Nishad Mankar、RAJNEESH TYAGI、Amazon Web Services*

## 概要
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-summary"></a>

多数の Microsoft SQL Server Always On フェイルオーバークラスターインスタンス (FCI) を迅速に移行する必要がある場合、このパターンを使用するとプロビジョニング時間を最小限に抑えることができます。自動化と Amazon FSx for Windows File Server を使用することで、手作業、人為的ミス、および多数のクラスターをデプロイするのに必要な時間を削減できます。

このパターンでは、Amazon Web Services (AWS) のマルチアベイラビリティーゾーン (マルチ AZ) 配置で SQL Server FCI のインフラストラクチャを設定します。このインフラストラクチャに必要な AWS サービスのプロビジョニングは、[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)テンプレートを使用して自動化されます。[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) インスタンスでの SQL Server のインストールとクラスターノードの作成は、PowerShell コマンドで実行されます。

このソリューションでは、可用性の高いマルチ AZ [Amazon FSx for Windows](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) ファイルシステムが、SQL Server データベースファイルを保存するための共有モニタリングシステムとして使用されます。SQL Server をホストする Amazon FSx ファイルシステムと EC2 Windows インスタンスは、AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) ドメインに参加します。

## 前提条件と制限事項
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ AWS CloudFormation テンプレートを使用してリソースをプロビジョニングするために十分な権限を持つ AWS ユーザー
+ AWS Directory Service for Microsoft Active Directory
+ キーと値のペアで AWS Managed Microsoft AD を認証するための AWS Secrets Manager の認証情報:
  + `ADDomainName`: <Domain Name>
  + `ADDomainJoinUserName`: <Domain Username>
  + `ADDomainJoinPassword`:<Domain User Password>
  + `TargetOU` : <Target OU Value>
**注記**  
AWS Managed Microsoft AD への参加アクティビティでは、AWS Systems Manager Automation でも同じキー名を使用します。
+ SQL Server のインストールおよび Windows サービスまたはドメインアカウントを作成するための SQL Server メディアファイル。これらはクラスター作成時に使用されます。
+ 別々のアベイラビリティーゾーンに 2 つのパブリックサブネット、アベイラビリティーゾーンに 2 つのプライベートサブネット、インターネットゲートウェイ、NAT ゲートウェイ、ルートテーブルの関連付け、ジャンプサーバーを備えた仮想プライベートクラウド (VPC)

**製品バージョン**
+ Windows Server 2012 R2 および Microsoft SQL Server 2016

## アーキテクチャ
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-architecture"></a>

**ソーステクノロジースタック**
+ 共有ドライブを使用する FCI を備えたオンプレミスの SQL Server

**ターゲットテクノロジースタック**
+ AWS EC2 インスタンス
+ Amazon FSx for Windows File Server
+ AWS Systems Manager Automation ランブック
+ ネットワーク設定 (VPC、サブネット、インターネットゲートウェイ、NAT ゲートウェイ、ジャンプサーバー、セキュリティグループ)
+ AWS Secrets Manager
+ AWS Managed Microsoft AD
+ Amazon EventBridge
+ AWS Identity and Access Management (IAM)

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

次の図は、1 つの AWS リージョン内の AWS アカウントを示しています。その VPC には 2 つのアベイラビリティーゾーン、2 つのパブリックサブネット (NAT ゲートウェイ付き)、1 つ目のパブリックサブネットに 1 つのジャンプサーバー、2 つのプライベートサブネット (それぞれにノードセキュリティグループ内の SQL Server ノードの EC2 インスタンスがあります)、および 各 SQL Server ノードに接続する Amazon FSx ファイルシステムが含まれます。AWS Directory Service、Amazon EventBridge、AWS Secrets Manager、AWS Systems Manager も含まれます。　

![\[パブリックサブネットとプライベートサブネットのリソースとノードセキュリティグループを備えたマルチ AZ アーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f09c0164-be2d-4665-a574-7ec29fd25082/images/543829a9-e130-4542-9c4e-7518c6cbe967.png)


**自動化とスケール**
+ AWS Systems Manager を使用して AWS Managed Microsoft AD に参加し、SQL Server のインストールを実行します。

## ツール
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-tools"></a>

**AWS サービス**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体でライフサイクル全体にわたってリソースを管理できます。
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) は、Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Relational Database Service (Amazon RDS) for SQL Server、Amazon FSx for Windows File Server などの他の AWS サービスで Microsoft Active Directory (AD) を使用するための複数の方法を提供します。
+ 「[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/)」は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。たとえば、AWS Lambda 関数、API 宛先を使用する HTTP 呼び出しエンドポイント、または他の AWS アカウントのイベントバスなどです。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) は、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得する上で役立ちます。
+ 「[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)」は、AWS クラウドで実行されるアプリケーションとインフラストラクチャの管理に役立ちます。アプリケーションとリソースの管理が簡略化され、オペレーション上の問題の検出と解決時間が短縮され、AWS リソースを大規模かつセキュアに管理できるようになります。

**その他のツール**
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/) は Windows、Linux、および macOS で動作する Microsoft の自動化および構成管理プログラムです。このパターンでは PowerShell スクリプトを使用します。

**コードリポジトリ**

このパターンのコードは、GitHub 内の「[aws-windows-failover-cluster-automation](https://github.com/aws-samples/aws-windows-failover-cluster-automation)」リポジトリで利用できます。

## ベストプラクティス
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-best-practices"></a>
+ このソリューションのデプロイに使用する IAM ロールは、最小特権の原則に従う必要があります。詳細については、「[IAM ドキュメント](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)」を参照してください。
+ 「[AWS CloudFormation ベストプラクティス](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html)」に従ってください。

## エピック
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-epics"></a>

### インフラストラクチャをデプロイする
<a name="deploy-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Systems Manager CloudFormation スタックをデプロイします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps、DevOps エンジニア | 
| インフラストラクチャをデプロイします。 | Systems Manager スタックのデプロイが正常に完了したら、EC2 インスタンスノード、セキュリティグループ、Amazon FSx for Windows File Server ファイルシステム、および IAM ロールを含む `infra` スタックを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps、DevOps エンジニア | 

### Windows SQL Server Always On FCI をセットアップします。
<a name="set-up-the-windows-sql-server-always-on-fci"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Windows ツールのインストール　 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps、DevOps エンジニア、DBA | 
| Active Directory ドメインサービスでクラスター化されたコンピュータオブジェクトをプレステージします。 | Active Directory ドメインサービス (AD DS) のクラスター名オブジェクト (CNO) をプレステージし、クラスター化されたロールの仮想コンピューターオブジェクト (VCO) をプレステージするには、[Windows Server ドキュメント](https://learn.microsoft.com/en-us/windows-server/failover-clustering/prestage-cluster-adds)の指示に従ってください。 | AWS DevOps、DBA、DevOps エンジニア | 
| WSFC を作成します。 | 次の手順に従って、Windows Server Failover Clustering (WSFC) クラスターを作成できます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps、DBA、DevOps エンジニア | 
| SQL Server フェイルオーバークラスターをインストールします。 | WSFC クラスターを設定したら、SQL Server クラスターをプライマリインスタンス (ノード 1) にインストールします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html)<pre>D:\setup.exe /Q  `<br />/ACTION=InstallFailoverCluster `<br />/IACCEPTSQLSERVERLICENSETERMS `<br />/FEATURES="SQL,IS,BC,Conn"  `<br />/INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"  `<br />/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"  `<br />/RSINSTALLMODE="FilesOnlyMode"  `<br />/INSTANCEID="MSSQLSERVER" `<br />/INSTANCENAME="MSSQLSERVER"  `<br />/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)"  `<br />/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>"  `<br />/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>"  `<br />/INSTANCEDIR="C:\Program Files\Microsoft SQL Server"  `<br />/ENU="True"  `<br />/ERRORREPORTING=0  `<br />/SQMREPORTING=0  `<br />/SAPWD="<Domain User password>" `<br />/SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS"  `<br />/SQLSYSADMINACCOUNTS="<domain\username>" `<br />/SQLSVCACCOUNT="<domain\username>"  /SQLSVCPASSWORD="<Domain User password>" `<br />/AGTSVCACCOUNT="<domain\username>"  /AGTSVCPASSWORD="<Domain User password>" `<br />/ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>"  `<br />/FTSVCACCOUNT="NT Service\MSSQLFDLauncher"  `<br />/INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server"  `<br />/SQLUSERDBDIR="\\<FSX DNS name>\share\data"  `<br />/SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" `<br />/SQLTEMPDBDIR="T:\tempdb"  `<br />/SQLTEMPDBLOGDIR="T:\log"  `<br />/SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" `<br />/SkipRules=Cluster_VerifyForErrors `<br />/INDICATEPROGRESS</pre> | AWS DevOps、DBA、DevOps エンジニア | 
| セカンダリノードをクラスターに追加します。 | SQL Server をセカンダリノード (ノード 2) に追加するには、次の PowerShell コマンドを実行します。<pre>D:\setup.exe /Q  `<br />/ACTION=AddNode `<br />/IACCEPTSQLSERVERLICENSETERMS `<br />/INSTANCENAME="MSSQLSERVER"  `<br />/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `<br />/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" `<br />/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `<br />/CONFIRMIPDEPENDENCYCHANGE=1 `<br />/SQLSVCACCOUNT="<domain\username>"  /SQLSVCPASSWORD="<Domain User password>" `<br />/AGTSVCACCOUNT="domain\username>"  /AGTSVCPASSWORD="<Domain User password>" `<br />/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `<br />/SkipRules=Cluster_VerifyForErrors `<br />/INDICATEPROGRESS</pre> | AWS DevOps、DBA、DevOps エンジニア | 
| SQL Server FCI をテストします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | DBA、DevOps エンジニア | 

### リソースをクリーンアップする
<a name="clean-up-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをクリーンアップします。 | リソースをクリーンアップするには、AWS CloudFormation スタックの削除プロセスを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html)スタックの削除が完了すると、スタックの状態が `DELETE_COMPLETE` になります。デフォルトでは、`DELETE_COMPLETE` 状態のスタックは CloudFormation コンソールに表示されません。削除したスタックを表示するには、「[削除済みのスタックを AWS CloudFormation コンソールで確認する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-deleted-stacks.html)」で説明されているようにスタックの表示フィルターを変更する必要があります。削除が失敗した場合、スタックは `DELETE_FAILED` 状態になります。解決策については、CloudFormation のドキュメントの「[スタックの削除の失敗](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-delete-stack-fails)」を参照してください。 | AWS DevOps、DBA、DevOps エンジニア | 

## トラブルシューティング
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| AWS CloudFormation テンプレートの失敗 | CloudFormation テンプレートがデプロイ中に失敗した場合は、次の操作を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | 
| AWS Managed Microsoft AD への参加に失敗 | 参加に関する問題のトラブルシューティングには、以下の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | 

## 関連リソース
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-resources"></a>
+ 「[Amazon FSx for Windows File Server を使用して、Microsoft SQL Server の高可用性デプロイメントを簡素化する](https://aws.amazon.com/blogs/storage/simplify-your-microsoft-sql-server-high-availability-deployments-using-amazon-fsx-for-windows-file-server/)」
+ 「[Microsoft SQL Server で FSx for Windows File Server を使用する](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/sql-server.html)」

# BMC ディスカバリークエリを使用して移行計画のために移行データを抽出
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning"></a>

*Amazon Web Services 所属 Ben Tailor-Hamblin、Emma Baldry、Simon Cunningham、Shabnam Khan*

## 概要
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-summary"></a>

このガイドには、BMC ディスカバリーを使用してオンプレミスのインフラストラクチャとアプリケーションからデータを抽出するためのクエリの例と手順が記載されています。このパターンは、BMC ディスカバリークエリを使用して、インフラストラクチャをスキャンし、ソフトウェア、サービス、依存関係の情報を抽出する方法を示します。抽出されたデータは、Amazon Web Services (AWS) クラウドへの大規模な移行の評価段階と準備段階に必要です。このデータを使用して、移行計画の一環としてどのアプリケーションをまとめて移行するかという重要な決定を下すことができます。

## 前提条件と制限
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-prereqs"></a>

**前提条件**
+ BMC ディスカバリー (旧 BMC ADDM) または BMC ヘリックスディスカバリーのsoftware as a service (SaaS)バージョンのライセンス
+ [インストール済みの](https://docs.bmc.com/docs/discovery/221/installing-1050933835.html)オンプレミスまたは SaaS バージョンの BMC ディスカバリー 
**注記**  
オンプレミスバージョンの BMC ディスカバリーの場合、複数のデータセンター間の移行の対象となるすべてのネットワークデバイスとサーバーデバイスにアクセスできるクライアントネットワークに、アプリケーションをインストールする必要があります。クライアントネットワークへのアクセスは、アプリケーションのインストール手順に従って許可する必要があります。Windows Server 情報のスキャンが必要な場合、ネットワークで Windows プロキシマネージャーデバイスをセットアップする必要があります。
+ BMC ヘリックスディスカバリーを使用する場合、「[ネットワークアクセス](https://docs.bmc.com/docs/discovery/221/network-ports-used-for-discovery-communications-1050933821.html)」により、データセンターを渡ってデバイスをスキャンできるようにします

**製品バージョン**
+ BMC ディスカバリー 22.2 (12.5)
+ BMC ディスカバリー 22.1 (12.4)
+ BMC ディスカバリー 21.3 (12.3)
+ BMC ディスカバリー 21.05 (12.2)
+ BMC ディスカバリー 20.08 (12.1)
+ BMC ディスカバリー 20.02 (12.0)
+ BMC ディスカバリー 11.3
+ BMC ディスカバリー 11.2
+ BMC ディスカバリー 11.1
+ BMC ディスカバリー 11.0
+ BMC アトリウムディスカバリー 10.2
+ BMC アトリウムディスカバリー 10.1
+ BMC アトリウムディスカバリー 10.0

## アーキテクチャ
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-architecture"></a>

次の図表は、資産管理者が BMC ディスカバリークエリを使用して、SaaS 環境とオンプレミス 環境の両方でBMCモデル化されたアプリケーションをスキャンする方法を示します。

![\[BMC ディスカバリーを使用してソフトウェア、サービス、依存関係の情報を抽出するアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5e549882-8deb-4459-8891-e39bbf80e320/images/0ebb3e68-5828-45aa-86f4-c741c7b6cd94.jpeg)


この図表は次のワークフローを示しています: 資産管理者は BMC ディスカバリー または BMC ヘリックスディスカバリーを使用して、複数の物理サーバーでホストされている仮想サーバーで実行されているデータベースとソフトウェアインスタンスをスキャンします。このツールは、複数の仮想サーバーと物理サーバーにまたがるコンポーネントを含むアプリケーションをモデル化できます。

**テクノロジースタック**
+ BMC ディスカバリー
+ BMC ヘリックスディスカバリー

## ツール
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-tools"></a>
+ 「[BMC ディスカバリー](https://docs.bmc.com/xwiki/bin/view/IT-Operations-Management/Discovery/BMC-Discovery/)」 は、データセンターを自動的に検出するためのデータセンター検出ツールです。
+ 「[BMC ヘリックスディスカバリー](https://www.bmc.com/it-solutions/bmc-helix-discovery.html)」 は、 SaaS ベースの検出および依存関係モデリングシステムで、データ資産とその依存関係を動的にモデル化することを支援します。

## ベストプラクティス
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-best-practices"></a>

ベストプラクティスは、クラウドに移行する場合、アプリケーション、依存関係、インフラストラクチャのデータをマッピングすることです。マッピングは、現在の環境の複雑さや、さまざまなコンポーネント間の依存関係の把握に役立ちます。

これらのクエリより提供される資産情報は、いくつかの理由で重要です：

1. 「**計画** 」— コンポーネント間の依存関係を理解することで、移行プロセスをより効果的に計画することを支援します。例えば、他のコンポーネントを確実に正常に移行するためには、まず特定のコンポーネントを移行する必要がある場合があります。

1. 「**リスク評価** 」— コンポーネント間の依存関係をマッピングすることは、移行プロセス中に発生する可能性のある潜在的なリスクや問題を特定することに役立ちます。例えば、特定のコンポーネントが、クラウドで問題を引き起こす可能性のある古いテクノロジーや適用されないテクノロジーに依存していることに気付くかもしれません。

1. 「**クラウドアーキテクチャ** 」— アプリケーションとインフラストラクチャのデータをマッピングすることで、組織のニーズを満たす適切なクラウドアーキテクチャを設計することを支援します。例えば、高い可用性やスケーラビリティの要件をサポートする多層アーキテクチャを設計する必要があるかもしれません。

全体として、アプリケーション、依存関係、インフラストラクチャのデータをマッピングすることは、クラウド移行プロセスの重要なステップです。マッピングの実践は、現在の環境をよりよく理解し、潜在的な問題やリスクを特定し、適切なクラウドアーキテクチャを設計することを支援します。

## エピック
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-epics"></a>

### ディスカバリーツールの特定と評価
<a name="identify-and-evaluate-discovery-tooling"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ITSM 所有者を特定します。 | IT サービス管理 (ITSM) のオーナーを特定します (通常はオペレーションサポートチームに連絡)。 | 移行リード | 
| CMDB を確認します。 | 資産情報を含む構成管理データベース (CMDB) の数を特定し、次にその情報のソースを特定します。 | 移行リード | 
| 検出ツールを特定し、BMC ディスカバリーの使用を確認します。 | 組織が BMC ディスカバリーを使用して、環境に関するデータを CMDB ツールに送信している場合、そのスキャンの範囲と対象範囲を確認します。例えば、BMC ディスカバリーがすべてのデータセンターをスキャンしているかどうか、アクセスサーバーが境界ゾーンにあるかどうかを確認します。 | 移行リード | 
| アプリケーションモデリングのレベルをチェックします。 | アプリケーションが BMC ディスカバリーでモデル化されているかどうかを確認します。そうでない場合は、BMC ディスカバリーツールを使用して、実行中のどのソフトウェアインスタンスがアプリケーションとビジネスサービスを提供するかをモデル化することを推奨します。 | 移行エンジニア、移行リード | 

### インフラストラクチャデータの抽出
<a name="extract-infrastructure-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 物理サーバーと仮想サーバーでデータを抽出します。 | BMC ディスカバリー によってスキャンされた物理サーバーと仮想サーバーのデータを抽出するには、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」 を使用して次のクエリを実行します：<pre>search Host show key as 'Serverid', virtual, name as 'HOSTNAME', os_type as 'osName', os_version as 'OS Version', num_logical_processors as 'Logical Processor Counts', cores_per_processor as 'Cores per Processor', logical_ram as 'Logical RAM', #Consumer:StorageUse:Provider:DiskDrive.size as 'Size'</pre>抽出されたデータを使用して、移行の適切なインスタンスサイズを決定できます。 | 移行エンジニア、移行リード | 
| モデル化されたアプリケーションのデータを抽出します。 | アプリケーションが BMCディスカバリーでモデル化されている場合、アプリケーションソフトウェアを実行するサーバーに関するデータを抽出できます。サーバー名を取得するには、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」を使用して次のクエリを実行します：<pre>search SoftwareInstance show key as 'ApplicationID', #RunningSoftware:HostedSoftware:Host:Host.key as 'ReferenceID', type, name</pre>BMC ディスカバリーで、アプリケーションは実行中のソフトウェアインスタンスの収集によってモデル化されます。アプリケーションは、アプリケーションソフトウェアを実行するすべてのサーバーに依存します。 | BMC ディスカバリのアプリ所有者 | 
| データベースからデータを抽出します。 | スキャンされたすべてのデータベースと、それらのデータベースが実行されているサーバーのリストを取得するには、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」 を使用して次のクエリを実行します：<pre>search Database show key as 'Key', name, type as 'Source Engine Type', #Detail:Detail:ElementWithDetail:SoftwareInstance.name as 'Software Instance', #Detail:Detail:ElementWithDetail:SoftwareInstance.product_version as 'Product Version', #Detail:Detail:ElementWithDetail:SoftwareInstance.edition as 'Edition', #Detail:Detail:ElementWithDetail:SoftwareInstance.#RunningSoftware:HostedSoftware:Host:Host.key as 'ServerID'</pre> | アプリ所有者 | 
| サーバー通信のデータを抽出します。 | BMC ディスカバリによって収集されたサーバー間のすべてのネットワーク通信に関する情報を過去のネットワーク通信ログから取得するには、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」を使用して次のクエリを実行します<pre>search Host<br /> TRAVERSE InferredElement:Inference:Associate:DiscoveryAccess<br /> TRAVERSE DiscoveryAccess:DiscoveryAccessResult:DiscoveryResult:NetworkConnectionList<br /> TRAVERSE List:List:Member:DiscoveredNetworkConnection<br /> PROCESS WITH networkConnectionInfo</pre> | BMC ディスカバリのアプリ所有者 | 
| アプリケーションディスカバリーのデータを抽出します。 | アプリケーションの依存関係の情報を取得するには、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」 を使用して次のクエリを実行します：<pre>search SoftwareInstance show key as 'SRC App ID', #Dependant:Dependency:DependedUpon:SoftwareInstance.key as 'DEST App ID'</pre> | BMC ディスカバリのアプリ所有者 | 
| ビジネスサービスのデータを抽出します。 | ホストが提供するビジネスサービスのデータを抽出するには、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」 を使用して次のクエリを実行します：<pre>search Host show name, #Host:HostedSoftware:AggregateSoftware:BusinessService.name as 'Name'</pre> | BMC ディスカバリのアプリ所有者 | 

## トラブルシューティング
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| クエリの実行がされないか、入力されていない列が含まれています。 | BMC ディスカバリのアセットレコードを確認し、どのフィールドが必要かを判断します。次に、「[クエリビルダー](https://docs.bmc.com/docs/discovery/221/query-builder-1051985747.html)」を使用してクエリ内のこれらのフィールドを置き換えます。 | 
| 依存資産の詳細は入力されません。 | これは、おそらくアクセス権限またはネットワーク接続によるものと考えられます。ディスカバリーツールでは、特に、異なるネットワークや環境にある時、特定の資産へのアクセスに必要な権限がない場合があります。ディスカバリ主題専門家と緊密に連携して、関連するすべての資産が確実に特定されるようにすることを推奨します。 | 

## 関連リソース
<a name="use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning-resources"></a>

**リファレンス**
+ 「[BMC ディスカバリー・ライセンス資格](https://docs.bmc.com/docs/discovery/bmc-discovery-licensing-entitlement-531336348.html)」 (BMC 文書)
+ 「[BMC ディスカバリーの特徴量とコンポーネント](https://docs.bmc.com/docs/discovery/221/bmc-discovery-features-and-components-1052418000.html)」 (BMC ドキュメント)
+ 「[BMC ディスカバリーユーザーガイド](https://docs.bmc.com/xwiki/bin/view/IT-Operations-Management/Discovery/BMC-Discovery/)」 (BMC ドキュメント)
+ 「[データの検索 (BMC ディスカバリーについて)](https://docs.bmc.com/docs/discovery/120/searching-for-data-911457232.html)」 (BMC ドキュメント)
+ 「[移行のためのポートフォリオの発見と分析](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-portfolio-discovery/welcome.html) (AWS 規範ガイダンス)

**チュートリアルと動画**
+ 「[BMC ディスカバリー:ウェビナー-レポーティングクエリのベストプラクティス (第1部分)](https://www.youtube.com/watch?v=iwXy6x40kO8)」 (YouTube)

# リロケート
<a name="migration-relocate-pattern-list"></a>

**Topics**
+ [Amazon RDS for Oracle データベースを別の に移行 AWS アカウント し、 AWS リージョン を使用して継続的なレプリケーション AWS DMS を行う](migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication.md)
+ [Amazon RDS DB インスタンスを別の VPC またはアカウントに移行する](migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.md)
+ [Amazon Redshift クラスターを中国の AWS リージョンに移行する](migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china.md)
+ [pg\$1transport を使用して 2 つの Amazon RDS DB インスタンス間でPostgreSQL データベースを転送する](transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.md)

# Amazon RDS for Oracle データベースを別の に移行 AWS アカウント し、 AWS リージョン を使用して継続的なレプリケーション AWS DMS を行う
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication"></a>

*Amazon Web Services、Durga Prasad Cheepuri、Eduardo Valentim*

## 概要
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-summary"></a>


| 
| 
| 警告: IAM ユーザーは有効期間が長い認証情報を持っているため、セキュリティ上のリスクが存在します。このリスクを軽減するために、これらのユーザーにはタスクの実行に必要な権限のみを付与し、不要になったユーザーは削除することをお勧めします。 | 
| --- |

このパターンでは、Oracle ソースデータベース用の Amazon Relational Database Service (Amazon RDS) を別の AWS アカウント および に移行する手順について説明します AWS リージョン。このパターンでは、DB スナップショットを 1 回限りのフルデータロードに使用し、継続的なレプリケーションに enable AWS Database Migration Service (AWS DMS) を使用します。

## 前提条件と制限
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-prereqs"></a>

**前提条件**
+ ソース Amazon RDS for Oracle データベース AWS アカウント を含むアクティブな 。デフォルト以外の AWS Key Management Service (AWS KMS) キーを使用して暗号化されています。
+ ターゲット Amazon RDS for Oracle データベースに使用する、ソースデータベース AWS リージョン とは異なる AWS アカウント でアクティブな 。
+ ソース VPC とターゲット VPC 間の仮想プライベートクラウド (VPC) ピアリング
+ [のソースとしての 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.Oracle.html)に関する知識 

**製品バージョン**
+ Oracle バージョン 11g (バージョン 11.2.0.3.v1 以降)～12.2、および 18c。サポートされているバージョンとエディションの最新リストについては、 AWS ドキュメントの[「Using an Oracle Database as a Source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」および[「Using an Oracle database as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html)」を参照してください。Amazon RDS でサポートされている Oracle バージョンについては、[Oracle on Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) を参照してください。

## アーキテクチャ
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-architecture"></a>

**ソースとターゲットテクノロジースタック**
+ Amazon RDS for Oracle DB インスタンス

![\[ソースリージョンとターゲットリージョンを含むターゲット AWS アカウントに接続するソース AWS アカウント\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5ecd5359-884e-455c-b5d0-ef08eda2ea1f/images/e17fa7fe-d924-4f35-9707-b93572fa1227.png)


**継続的なレプリケーションアーキテクチャ**

![\[VPC ピアリングを介してレプリケーションインスタンスおよび Amazon RDS に接続する EC2 インスタンス上の DB。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/5ecd5359-884e-455c-b5d0-ef08eda2ea1f/images/b60b3500-5d29-487a-bbab-0ae9f3f386aa.png)


## ツール
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-tools"></a>

**1 回限りのフルデータロードに使用されるツール**
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) は DB インスタンスのストレージボリュームのスナップショットを作成し、個々のデータベースだけではなく、その DB インスタンス全体をバックアップします。DB スナップショットを作成したら、バックアップする DB インスタンスを識別した後、DB スナップショットに名前を付けて後で復元できるようにする必要があります。スナップショットの作成にかかる時間は、データベースのサイズによって異なります。スナップショットにはストレージボリューム全体が含まれているため、一時ファイルなどのファイルのサイズも、スナップショットを作成する時間に影響します。DB スナップショットを作成する方法については、Amazon RDS ドキュメントの [DB スナップショットを作成する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)を参照してください。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) は** **Amazon RDS** **暗号化用の** **キーを作成します。暗号化された DB インスタンスを作成するときに、暗号化[AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)キーのキー識別子を指定することもできます。[AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) キー識別子を指定しない場合、Amazon RDS は新しい DB インスタンスに対してデフォルトの暗号化キーを使用します。[AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) は、 AWS アカウント用にデフォルトの暗号化キーを作成します。には、それぞれ異なるデフォルトの暗号化キー AWS アカウント があります AWS リージョン。このパターンでは、Amazon RDS DB インスタンスはデフォルト以外の [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) キーを使用して暗号化する必要があります。Amazon RDS の暗号化に [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) キーを使用する方法の詳細については、Amazon RDS ドキュメントの「[Amazon RDS リソースを暗号化する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html)」を参照してください。

**継続的なレプリケーションに使用されるツール**
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) は、進行中の変更をレプリケートし、ソースデータベースとターゲットデータベースを同期させるために使用されます。継続的なレプリケーション AWS DMS に を使用する方法の詳細については、 AWS DMS ドキュメントの「レ[AWS DMS プリケーションインスタンスの使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html)」を参照してください。

## エピック
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-epics"></a>

### ソースを設定する AWS アカウント
<a name="configure-your-source-aws-account"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソース Oracle DB インスタンスを準備します。 | Amazon RDS for Oracle DB インスタンスをアーカイブログモードで実行し、保持期間を設定します。詳細については、「 [のソースとしての AWS マネージド Oracle データベースの使用 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Amazon-Managed)」を参照してください。 | DBA | 
| ソース Oracle DB インスタンスのサプリメンタルロギングを設定します。 | Amazon RDS for Oracle DB インスタンスのデータベースレベルおよびテーブルレベルのサプリメンタルロギングを設定します。詳細については、「 [のソースとしての AWS マネージド Oracle データベースの使用 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Amazon-Managed)」を参照してください。 | DBA | 
| ソースアカウントの AWS KMS キーポリシーを更新します。 | ソースの AWS KMS キーポリシーを更新 AWS アカウント して、ターゲットが暗号化された Amazon RDS AWS KMS キー AWS アカウント を使用できるようにします。詳細については、[AWS KMS ドキュメント](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts)を参照してください。 | SysAdmin | 
| ソース DB インスタンスの手動 Amazon RDS DB スナップショットを作成します。 |  | AWS IAM ユーザー | 
| 手動で暗号化された Amazon RDS スナップショットをターゲット AWS アカウントと共有します。 | 詳細については、「[DB スナップショットの共有](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)」を参照してください。 | AWS IAM ユーザー | 

### ターゲットを設定する AWS アカウント
<a name="configure-your-target-aws-account"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ポリシーをアタッチします。 | ターゲットで AWS アカウント、ルート IAM ユーザーに AWS Identity and Access Management (IAM) ポリシーをアタッチして、IAM ユーザーが共有 AWS KMS キーを使用して暗号化された DB スナップショットをコピーできるようにします。 | SysAdmin | 
| ソース AWS リージョンに切り替えます。 |  | AWS IAM ユーザー | 
| 共有したスナップショットをコピーします。 | Amazon RDS コンソールの **[スナップショット]** ペインで、**[自分と共有]** を選択し、共有スナップショットを選択します。ソースデータベースで使用される AWS KMS キーの Amazon リソースネーム (ARN) を使用して、ソースデータベース AWS リージョン と同じ にスナップショットをコピーします。詳細については、「[DB スナップショットのコピー](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html)」を参照してください。 | AWS IAM ユーザー | 
| ターゲットに切り替え AWS リージョン、新しい AWS KMS キーを作成します。 |  | AWS IAM ユーザー | 
| スナップショットをコピーします。 | ソース AWS リージョンに切り替えます。Amazon RDS コンソールの **[スナップショット]** ペインで、**[自分が所有]** を選択し、コピーしたスナップショットを選択します。新しいターゲットの AWS KMS キー AWS リージョン を使用して、スナップショットをターゲットにコピーします AWS リージョン。 | AWS IAM ユーザー | 
| スナップショットを復元します。 | ターゲットに切り替えます AWS リージョン。Amazon RDS コンソールの **[スナップショット]** ペインで、**[自分が所有]** を選択します。コピーしたスナップショットを選択し、Amazon RDS for Oracle DB インスタンスに復元します。詳細については、「[DB スナップショットからの復元](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html)」を参照してください。 | AWS IAM ユーザー | 

### 継続的なレプリケーションに備えてソースデータベースを準備する
<a name="prepare-your-source-database-for-ongoing-replication"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 適切な権限がある Oracle ユーザーを作成します。 |  AWS DMSのソースとして、Oracle に必要な特権がある Oracle ユーザーを作成します。詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)を参照してください。 | DBA | 
| Oracle LogMiner または Oracle Binary Reader のソースデータベースを設定します。 |  | DBA | 

### 継続的なレプリケーションに備えてターゲットデータベースを準備する
<a name="prepare-your-target-database-for-ongoing-replication"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 適切な権限がある Oracle ユーザーを作成します。 |  AWS DMSのターゲットとして、Oracle に必要な特権がある Oracle ユーザーを作成します。詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html#CHAP_Target.Oracle.Privileges)を参照してください。 | DBA | 

### AWS DMS コンポーネントの作成
<a name="create-dms-components"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットにレプリケーションインスタンスを作成します AWS リージョン。 | ターゲットの VPC にレプリケーションインスタンスを作成します AWS リージョン。詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.ReplicationInstance)を参照してください。 | AWS IAM ユーザー | 
| 必要な暗号化でソースエンドポイントとターゲットエンドポイントを作成し、接続をテストします。 | 詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Endpoints)を参照してください。 | DBA | 
| レプリケーションタスクを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication.html)詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html#CHAP_GettingStarted.Tasks)を参照してください。 | IAM ユーザー | 
| タスクを開始して監視します。 | 詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html)を参照してください。 | AWS IAM ユーザー | 
| 必要に応じて、タスクの検証を有効化します。 | 検証を有効化すると、レプリケーションのパフォーマンスに影響することに注意してください。詳細については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)を参照してください。 | AWS IAM ユーザー | 

## 関連リソース
<a name="migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication-resources"></a>
+ [キーポリシーの変更](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts)
+ [手動 Amazon RDS DB スナップショットを作成する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)
+ [手動 Amazon RDS DB スナップショットを共有する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)
+ [スナップショットをコピーする](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html) 
+ [Amazon RDS Custom DB スナップショットから復元する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html) 
+ [の開始方法 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) 
+ [のソースとしての 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.Oracle.html) 
+ [AWS DMS VPC ピアリングを使用した のセットアップ](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer) 
+ [手動 Amazon RDS DB スナップショットまたは DB クラスタースナップショットを別の AWS アカウントと共有する方法とは](https://aws.amazon.com/premiumsupport/knowledge-center/rds-snapshots-share-account/) AWS ナレッジセンターの記事） 

# Amazon RDS DB インスタンスを別の VPC またはアカウントに移行する
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account"></a>

*Amazon Web Services、Dhrubajyoti Mukherjee*

## 概要
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-summary"></a>

このパターンは、Amazon Relational Database Service (Amazon RDS) DB インスタンスを、ある仮想プライベートクラウド (VPC) から同じ AWS アカウント内の別の仮想プライベートクラウド (VPC) に、またはある AWS アカウントから別の AWS アカウントに移行するためのガイダンスを提供します。

このパターンは、分離またはセキュリティ上の理由から Amazon RDS DB インスタンスを別の VPC またはアカウントに移行する場合 (たとえば、アプリケーションスタックとデータベースを別の VPC に配置する場合など) に役立ちます。 

DB インスタンスを別の AWS アカウントに移行するには、手動スナップショットの作成、共有、ターゲットアカウントでのスナップショットの復元などの手順が必要です。この処理は、データベースの変更やトランザクションレートによっては時間がかかる場合があります。また、データベースのダウンタイムも発生するため、事前に移行計画を立ててください。ダウンタイムを最小限に抑えるため、ブルー/グリーンデプロイ戦略を検討してください。 または、AWS データ移行サービス (AWS DMS) を評価して、変更によるダウンタイムを最小限に抑えることもできます。ただし、このパターンではこのオプションは対象外です。詳細については、「[メトリクスのドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を参照してください。

## 前提条件と制限
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ VPC、サブネット、Amazon RDS コンソールに必要な AWS Identity and Access Management (IAM) のアクセス許可

**制限事項**
+ VPC を変更するとデータベースが再起動し、アプリケーションが停止します。移行はピークの少ない時間に移行することをお勧めします。
+ Amazon RDS を別の VPC に移行する場合の制限事項:
  + 移行する DB インスタンスは、スタンバイのない 1 つのインスタンスである必要があります。クラスターのメンバーであってはなりません。
  + Amazon RDS が複数のアベイラビリティーゾーンに置かれていてはなりません。
  + Amazon RDS にはリードレプリカがあってはなりません。
  + ターゲット VPC で作成されたサブネットグループには、ソースデータベースが実行されているアベイラビリティーゾーンのサブネットが必要です。
+ Amazon RDS を別の RDS に移行する場合の制限事項:
  + Amazon RDS のデフォルトサービスキーで暗号化されたスナップショットの共有は、現在サポートされていません。

## アーキテクチャ
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-architecture"></a>

同じ AWS アカウントの VPC への移行

次の図は、Amazon RDS DB インスタンスを同じ AWS アカウントの別の VPC に移行するためのワークフローを示しています。

![\[Amazon RDS DB インスタンスを同じ AWS アカウントの別の VPC に移行するワークフロー\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/dabcee69-9cc6-47f9-9964-635e349caaaf/images/73e16544-6276-4f03-9ae2-42b8c7c20315.png)


ステップには、以下があります。詳細な手順については、「[エピック](#migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-epics)」 セクションを参照してください。

1. ターゲット VPC に DB サブネットグループを作成します。DB サブネットグループは DB インスタンスを作成する場合に特定の VPC を指定するサブネットのコレクションです。

1. 新しい DB サブネットグループを使用するように、ソース VPC の Amazon RDS DB インスタンスを設定します。

1. 変更を適用して Amazon RDS DB をターゲット VPC に移行します。

別の AWS アカウントに移行

次の図は、Amazon RDS DB インスタンスを別の AWS アカウントに移行するワークフローを示しています。

![\[Amazon RDS DB インスタンスを別の AWS アカウントに移行するためのワークフロー\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/dabcee69-9cc6-47f9-9964-635e349caaaf/images/5536e69e-3965-4ca2-8a0b-2573659b5f8f.png)


ステップには、以下があります。詳細な手順については、「[エピック](#migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-epics)」 セクションを参照してください。

1. 作成元の AWS アカウントで Amazon RDS DB インスタンスにアクセスします。

1. 作成元の AWS アカウントに Amazon RDS スナップショットを作成します。

1. Amazon RDS スナップショットをターゲット AWS アカウントと共有します。

1. ターゲット AWS アカウントの Amazon RDS スナップショットにアクセスします。

1. ターゲット AWS アカウントに Amazon RDS DB インスタンスを作成します。

## ツール
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-tools"></a>

**AWS サービス**
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークに似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。

## ベストプラクティス
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-best-practices"></a>
+ Amazon RDS DB インスタンスを別のアカウントに移行する際にデータベースのダウンタイムが懸念される場合は、「[AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」を使用することをお勧めします。このサービスではデータ複製が可能で、停止時間は 5 分未満です。

## エピック
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-epics"></a>

### 同じ AWS アカウントの別の VPC に移行する
<a name="migrate-to-a-different-vpc-in-the-same-aws-account"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 新しい VPC を作成します。 | 「[Amazon VPC コンソール](https://console.aws.amazon.com/vpc/)」で、必要なプロパティと IP アドレス範囲を使用して新しい VPC とサブネットを作成します。詳細な手順については、「[Amazon VPC のドキュメント](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)」 を参照してください。 | 管理者 | 
| DB サブネットグループを作成します。 | 「[Amazon RDS コンソール](https://console.aws.amazon.com/rds/)」で:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html)詳細については、「[Amazon EC2 ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.CreateDBSubnetGroup)」 を参照してください。 | 管理者 | 
| 新しいサブネットグループを使用するように Amazon RDS DB インスタンスを変更します。 | Amazon RDS コンソールで:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html)ターゲット VPC への移行が完了すると、ターゲット VPC のデフォルトのセキュリティグループが Amazon RDS DB インスタンスに割り当てられます。DB インスタンスに必要なインバウンドルールとアウトバウンドルールを使用して、その VPC の新しいセキュリティグループを設定できます。または、AWS コマンドラインインターフェイス (AWS CLI) を使用して、新しい VPC セキュリティグループ ID を明示的に指定して、ターゲット VPC に移行します。例えば、次のようになります。<pre>aws rds modify-db-instance \<br />    --db-instance-identifier testrds \<br />    --db-subnet-group-name new-vpc-subnet-group \<br />    --vpc-security-group-ids sg-idxxxx \<br />    --apply-immediately</pre> | 管理者 | 

### 別の AWS アカウントに移行する
<a name="migrate-to-a-different-aws-account"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲット AWS アカウントに新しい VPC とサブネットグループを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html) | 管理者 | 
| データベースの手動スナップショットを共有し、ターゲットアカウントと共有します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-amazon-rds-db-instance-to-another-vpc-or-account.html) | 管理者 | 
| 新しいAmazon RDS DB インスタンスを起動します。 | ターゲット AWS アカウントの共有スナップショットから新しい Amazon RDS DB インスタンスを起動します。手順については、「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html)」を参照してください。 | 管理者 | 

## 関連リソース
<a name="migrate-an-amazon-rds-db-instance-to-another-vpc-or-account-resources"></a>
+ 「[Amazon VPCドキュメント](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)」 
+ 「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」
+ 「[VPC を Amazon RDS DB インスタンスに変更する方法](https://aws.amazon.com/premiumsupport/knowledge-center/change-vpc-rds-db-instance/)」 (AWS re: POST の記事)
+ 「[Amazon RDS リソースの所有権を別の AWS アカウントに移すにはどうすればよいですか?](https://aws.amazon.com/premiumsupport/knowledge-center/account-transfer-rds/)」 (AWS re: POST の記事)
+ 「[手動の Amazon RDS DB スナップショットまたは Aurora DB クラスタースナップショットを別の AWS アカウントと共有する方法を教えてください。](https://aws.amazon.com/premiumsupport/knowledge-center/rds-snapshots-share-account/)」 (AWS re: POST の記事)
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)

# Amazon Redshift クラスターを中国の AWS リージョンに移行する
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china"></a>

*Amazon Web Services、Jing Yan*

## 概要
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-summary"></a>

このパターンでは、Amazon Redshift クラスターを別の AWS リージョンから中国の AWS リージョンに移行するステップバイステップのアプローチを提供します。

このパターンは、SQL コマンドを使用してすべてのデータベースオブジェクトを再作成し、UNLOAD コマンドを使用してこのデータを Amazon Redshift からソースリージョンの Amazon Simple Storage Service (Amazon S3) バケットに移動します。その後、データは中国の AWS リージョンの S3 バケットに移行されます。COPY コマンドは、S3 バケットからデータをロードし、ターゲットの Amazon Redshift クラスターに転送します。

Amazon Redshift は現在、中国の AWS リージョンへのスナップショットコピーなどのクロスリージョン機能をサポートしていません。このパターンはその制限を回避する方法を提供します。このパターンの手順を逆にして、中国の AWS リージョンから別の AWS リージョンにデータを移行することもできます。

## 前提条件と制限
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-prereqs"></a>

*前提条件*
+ 中国リージョンと中国以外の AWS リージョンの両方のアクティブな AWS アカウント
+ 中国リージョンと中国以外の AWS リージョンの両方にある既存の Amazon Redshift クラスター

*制限*
+ これはオフライン移行です。つまり、ソース Amazon Redshift クラスターは移行中に書き込み操作を実行できません。

## アーキテクチャ
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-architecture"></a>

**ソーステクノロジースタック**
+ 中国以外の AWS リージョンにある Amazon Redshift クラスター

**ターゲットテクノロジースタック**
+ 中国の AWS リージョンにある Amazon Redshift クラスター

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

![\[AWS リージョンの S3 バケット内の Amazon Redshift クラスターデータを中国リージョンのバケットに移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f7d241d9-b700-406b-95a0-3e47e7f0fa60/images/b6016e3d-76db-4176-8f99-f804da94d3f2.png)


## ツール
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-tools"></a>

**ツール**
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) – Amazon Simple Storage Service (Amazon S3) は、スケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。Amazon S3 を使用して、Amazon Redshift からのデータを保存できます。また、S3 バケットから Amazon Redshift にデータをコピーできます。
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html) - Amazon Redshift は、クラウド内のフルマネージド型、ペタバイト規模のデータウェアハウスサービスです。 
+ [psql](https://www.postgresql.org/docs/8.4/app-psql.html) — psql は PostgreSQL へのターミナルベースのフロントエンドです。 

## エピック
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-epics"></a>

### ソースリージョンで移行の準備をする
<a name="prepare-for-migration-in-the-source-region"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースリージョンで EC2 インスタンスを起動して設定します。 | AWS マネジメントコンソールにサインインし、Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。現在のリージョンは、画面トップのナビゲーションバーに表示されます。このリージョンは中国のAWS リージョンにはできません。Amazon EC2 コンソールダッシュボードから、[インスタンスを起動] を選択し、EC2 インスタンスを作成して設定します。重要: インバウンドルールの EC2 セキュリティグループが、ソースマシンから TCP ポート 22 への無制限のアクセスを許可していることを確認します。EC2 インスタンスを起動して設定する手順については、「関連リソース」セクションを参照してください。 | DBA、開発者 | 
| psql ツールをインストールします。 | PostgreSQL をダウンロードしてインストールします。psql ツールは、Amazon Redshift から提供されるのではなく PostgreSQL とともにインストールされます。psql の使用と PostgreSQL ツールのインストールの詳細については、「関連リソース」セクションを参照してください。 | DBA | 
| Amazon Redshift クラスターの詳細を記録します。 | Amazon Redshift コンソールを開き、ナビゲーションペインの [クラスター] を選択します。次に、リストから Amazon Redshift クラスター名を選択します。[データベース設定] セクションの [プロパティ] タブで、[データベース名] と [ポート] を記録します。[接続詳細] セクションを開き、「endpoint:<port>/<databasename>」形式の「エンドポイント」を記録します。重要: インバウンドルールの Amazon Redshift セキュリティグループが EC2 インスタンスから TCP ポート 5439 への無制限のアクセスを許可していることを確認します。 | DBA | 
| psql を Amazon Redshift クラスターに接続します。 | コマンドプロンプトで、「psql -h <endpoint> -U <userid> -d <databasename> -p <port>」コマンドを実行して接続情報を指定します。psql パスワードプロンプトで、「<userid>」ユーザーのパスワードを入力します。これで Amazon Redshift クラスターに接続されるため、コマンドをインタラクティブに入力できます。 | DBA | 
| S3 バケットを作成する。 | Amazon S3 コンソールを開き、S3 バケットを作成して Amazon Redshift からエクスポートされたファイルを保持します。S3 バケットを作成する手順については、「関連リソース」セクションを参照してください。 | DBA、AWS 全般 | 
| データのアンロードをサポートする IAM ポリシーを作成します。 | AWS Identity and Access Management (IAM) コンソールを開き、[ポリシー] を選択します。[ポリシーの作成] を選択し、[JSON] タブを選択します。「追加情報」セクションからデータをアンロードする IAM ポリシーをコピーして貼り付けます。重要:「s3\$1bucket\$1name」は、お使いの S3 バケット名に置き換えてください。[ポリシーの確認] を選択し、ポリシーの名前と説明を入力します。[ポリシーの作成] を選択します。 | DBA | 
| IAM ロールを作成し、Amazon Redshift の UNLOAD 操作を許可します。 | IAM コンソールを開き、[ロール] を選択します。[ロールの作成] を選択し、[信頼できるエンティティのタイプの選択] で [AWS サービス] を選択します。サービスの [Redshift] を選択し、[Redshift — カスタマイズ可能] を選択してから、[次へ] を選択します。前に作成した [ポリシーをアンロード] を選択し、[次へ] を選択します。[ロール名] を入力し、[ロールの作成] を選択します。 | DBA | 
| IAM ロールを Amazon Redshift クラスターに関連付けます。 | Amazon Redshift コンソールを開き、[IAM ロールの管理] を選択します。ドロップダウンメニューから、[利用可能なロール] を選択し、前に作成したロールを選択します。[変更の適用] を選択します。[IAM ロールの管理] の IAM ロールの [ステータス] が [同期中] と表示されたら、UNLOAD コマンドを実行できます。 | DBA | 
| Amazon Redshift クラスターへの書き込み操作を停止します。 | 移行が完了するまで、移行元の Amazon Redshift クラスターへのすべての書き込み操作を停止することを忘れないでください。 | DBA | 

### ターゲットリージョンの移行を準備する
<a name="prepare-for-migration-in-the-target-region"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットリージョンで EC2 インスタンスを起動して設定します。 | 中国のリージョン (北京または寧夏) の AWS マネジメントコンソールにサインインします。Amazon EC2 コンソールで、[インスタンスを起動] を選択し、EC2 インスタンスを作成して設定します。重要: インバウンドルールのAmazon EC2 セキュリティグループが、ソースマシンから TCP ポート 22 への無制限のアクセスを許可していることを確認します。EC2 インスタンスを起動して設定する手順の詳細については、「関連リソース」セクションを参照してください。 | DBA | 
| Amazon Redshift クラスターの詳細を記録します。 | Amazon Redshift コンソールを開き、ナビゲーションペインの [クラスター] を選択します。次に、リストから Amazon Redshift クラスター名を選択します。[データベース設定] セクションの [プロパティ] タブで、[データベース名] と [ポート] を記録します。[接続詳細] セクションを開き、「endpoint:<port>/<databasename>」形式の「エンドポイント」を記録します。重要:インバウンドルールの Amazon Redshift セキュリティグループが EC2 インスタンスから TCP ポート 5439 への無制限のアクセスを許可していることを確認します。 | DBA | 
| psql を Amazon Redshift クラスターに接続します。 | コマンドプロンプトで、「psql -h <endpoint> -U <userid> -d <databasename> -p <port>」コマンドを実行して接続情報を指定します。psql パスワードプロンプトで、「<userid>」ユーザーのパスワードを入力します。これで Amazon Redshift クラスターに接続されるため、コマンドをインタラクティブに入力できます。 | DBA | 
| S3 バケットを作成する。 | Amazon S3 コンソールを開き、S3 バケットを作成して Amazon Redshift からエクスポートされたファイルを保持します。このストーリーやその他のストーリーに関するヘルプは、「関連リソース」セクションを参照してください。 | DBA | 
| データのコピーをサポートする IAM ポリシーを作成します。 | IAM コンソールを開き、[ポリシー] を選択します。[ポリシーの作成] を選択し、[JSON] タブを選択します。「追加情報」セクションからデータをコピーする IAM ポリシーをコピーして貼り付けます。重要:「s3\$1bucket\$1name」は、お使いの S3 バケット名に置き換えてください。[ポリシーの確認] を選択し、ポリシーの名前と説明を入力します。[ポリシーの作成] を選択します。 | DBA | 
| IAM ロールを作成し、Amazon Redshift の COPY 操作を許可します。 | IAM コンソールを開き、[ロール] を選択します。[ロールの作成] を選択し、[信頼できるエンティティのタイプの選択] で [AWS サービス] を選択します。サービスの [Redshift] を選択し、[Redshift — カスタマイズ可能] を選択してから、[次へ] を選択します。前に作成した [コピー] ポリシーを選択し、[次へ] を選択します。[ロール名] を入力し、[ロールの作成] を選択します。 | DBA | 
| IAM ロールを Amazon Redshift クラスターに関連付けます。 | Amazon Redshift コンソールを開き、[IAM ロールの管理] を選択します。ドロップダウンメニューから、[利用可能なロール] を選択し、前に作成したロールを選択します。[変更の適用] を選択します。[Manage IAM roles（IAM ロールの管理）] の IAM ロールの [Status（ステータス）] が [In-sync（同期中）] と表示されたら、「COPY」コマンドを実行できます。 | DBA | 

### 移行を開始する前に、ソースデータとオブジェクト情報を確認する
<a name="verify-source-data-and-object-information-before-beginning-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソース Amazon Redshift テーブルの行を確認します。 | 「追加情報」セクションのスクリプトを使用して、ソース Amazon Redshift テーブルの行数を確認して記録します。UNLOAD スクリプトと COPY スクリプトでは、データを均等に分割することを忘れないでください。これにより、各スクリプトでカバーされるデータ量のバランスが取れるため、データのアンロードとロードの効率が向上します。 | DBA | 
| ソース Amazon Redshift クラスター内のデータベースオブジェクトの数を確認します。 | 「追加情報」セクションのスクリプトを使用して、ソース Amazon Redshift クラスター内のデータベース、ユーザー、スキーマ、テーブル、ビュー、およびユーザー定義関数 (UDF) の数を確認および記録します。 | DBA | 
| 移行前に SQL ステートメントの結果を検証します。 | データ検証用の SQL ステートメントの中には、実際のビジネス状況やデータ状況に応じてソートする必要があるものがあります。これは、インポートされたデータが一貫していて正しく表示されているかを検証するためです。 | DBA | 

### データとオブジェクトをターゲットリージョンに移行する
<a name="migrate-data-and-objects-to-the-target-region"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Redshift DDL スクリプトを生成します。 | 「追加情報」セクションの「Amazon Redshift をクエリする SQL ステートメント」セクションのリンクを使用して、データ定義言語 (DDL) スクリプトを生成します。これらの DDL スクリプトには、「ユーザー作成」、「スキーマの作成」、「ユーザーへのスキーマの特権」、「テーブル/ビューの作成」、「ユーザーへのオブジェクトの特権」、および「関数の作成」クエリが含まれている必要があります。 | DBA | 
| ターゲットリージョンの Amazon Redshift クラスターにオブジェクトを作成します。 | 中国の AWS リージョンで AWS コマンドラインインターフェイス (AWS CLI) を使用して DDL スクリプトを実行します。これらのスクリプトは、ターゲットリージョンの Amazon Redshift クラスターにオブジェクトを作成します。 | DBA | 
| Amazon Redshift クラスターのソースデータを S3 バケットにアンロードします。 | UNLOAD コマンドを実行して、ソースリージョンの Amazon Redshift クラスターから S3 バケットにデータをアンロードします。 | DBA、開発者  | 
| ソースリージョン S3 バケットデータをターゲットリージョン S3 バケットに転送します。 | ソースリージョン S3 バケットからターゲットの S3 バケットにデータを転送します。「\$1 aws s3 sync」コマンドは使用できないため、「関連リソース」セクションの「AWS リージョンから中国の AWS リージョンへ Amazon S3 データを転送する」記事で説明されているプロセスを使用してください。 | 開発者 | 
|  ターゲット Amazon Redshift クラスターにデータをロードします。 | ターゲットリージョンの psql ツールで、COPY コマンドを実行して、S3 バケットからターゲット Amazon Redshift クラスターにデータをロードします。 | DBA | 

### 移行後にソースリージョンとターゲットリージョンのデータを検証する
<a name="verify-the-data-in-the-source-and-target-regions-after-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソーステーブルとターゲットテーブルの行数を検証して比較します。 | ソースリージョンとターゲットリージョンのテーブル行数を検証して比較し、すべてが移行されていることを確認します。 | DBA | 
| ソースデータベースオブジェクトとターゲットデータベースオブジェクトの数を検証して比較します。 | ソースリージョンとターゲットリージョン内のすべてのデータベースオブジェクトを検証して比較し、すべてが移行されていることを確認します。 | DBA | 
| ソースリージョンとターゲットリージョンの SQL スクリプトの結果を検証して比較します。 | 移行前に準備した SQL スクリプトを実行します。データを検証して比較し、SQL の結果が正しいことを確認します。 | DBA | 
| ターゲット Amazon Redshift クラスターのすべてのユーザーのパスワードをリセットします。 | 移行が完了し、すべてのデータが確認されたら、中国の AWS リージョンにある Amazon Redshift クラスターのすべてのユーザーパスワードをリセットする必要があります。 | DBA | 

## 関連リソース
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-resources"></a>
+ [Amazon S3 データを AWS リージョンから中国の AWS リージョンに転送する](https://aws.amazon.com/cn/blogs/storage/transferring-amazon-s3-data-from-aws-regions-to-aws-regions-in-china/)
+ [S3 バケットを作成する](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)
+ [Amazon Redshift ユーザーパスワードをリセットする](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html)
+ [psql ドキュメント](https://www.postgresql.org/docs/8.4/static/app-psql.html)

## 追加情報
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-additional"></a>

*データをアンロードする IAM ポリシー*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::s3_bucket_name"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::s3_bucket_name/*"]
    }
  ]
}
```

*データをコピーする IAM ポリシー*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::s3_bucket_name"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::s3_bucket_name/*"]
    }
  ]
}
```

*Amazon Redshift をクエリする SQL ステートメント*

```
##Database

select * from pg_database where datdba>1;

##User

select * from pg_user where usesysid>1;

##Schema

SELECT n.nspname AS "Name",

  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"

FROM pg_catalog.pg_namespace n

WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'

ORDER BY 1;

##Table

select count(*) from pg_tables where schemaname not in ('pg_catalog','information_schema');

select schemaname,count(*) from pg_tables where schemaname not in ('pg_catalog','information_schema') group by schemaname order by 1;

##View

SELECT 

    n.nspname AS schemaname,c.relname AS viewname,pg_catalog.pg_get_userbyid(c.relowner) as "Owner"

FROM 

    pg_catalog.pg_class AS c

INNER JOIN

    pg_catalog.pg_namespace AS n

    ON c.relnamespace = n.oid

WHERE relkind = 'v' and n.nspname not in ('information_schema','pg_catalog');

##UDF

SELECT 

   n.nspname AS schemaname,

   p.proname AS proname,

   pg_catalog.pg_get_userbyid(p.proowner) as "Owner"

FROM pg_proc p

LEFT JOIN pg_namespace n on n.oid = p.pronamespace

WHERE p.proowner != 1;
```

*DDL ステートメントを生成する SQL スクリプト*
+ [Get\$1schema\$1priv\$1by\$1user スクリプト](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_get_schema_priv_by_user.sql)
+ [Generate\$1tbl\$1ddl スクリプト](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql)
+ [Generate\$1view\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_view_ddl.sql)
+ [Generate\$1user\$1grant\$1revoke\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_user_grant_revoke_ddl.sql)
+ [Generate\$1udf\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_udf_ddl.sql)

# pg\$1transport を使用して 2 つの Amazon RDS DB インスタンス間でPostgreSQL データベースを転送する
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport"></a>

*Amazon Web Services、Raunak Rishabh、Jitender Kumar*

## 概要
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-summary"></a>

このパターンでは、**pg\$1transport** エクステンションを使用して、2 つの Amazon Relational Database Service (Amazon RDS) for PostgreSQL DB インスタンス間で非常に大規模なデータベースを移行する手順を示しています。このエクステンションは、物理的な移行メカニズムで各データベースを移行させます。最小限のプロセスでデータベースファイルをストリーミングすることで、最小限のダウンタイムで DB インスタンス間で大規模なデータベースを移行できます。この拡張機能では、ターゲット DB インスタンスがソース DB インスタンスからデータベースをインポートするプルモデルを使用します。

## 前提条件と制限事項
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-prereqs"></a>

**前提条件**
+ 両方の DB インスタンスが同じメジャーバージョンの PostgreSQL を実行している必要があります。
+ データベースはターゲットに存在してはいけません。そうしない場合、移行は失敗します。
+ **pg\$1transport** 以外の拡張機能をソースデータベースで有効にしないでください。
+ すべてのソースデータベースオブジェクトはデフォルトの **pg\$1default** テーブルスペースになければなりません。
+ ソース DB インスタンスのセキュリティグループは、ターゲット DB インスタンスからのトラフィックを許可する必要があります。
+ 「[psql](https://www.postgresql.org/docs/11/app-psql.html)」や「[PgAdmin](https://www.pgadmin.org/)」などの PostgreSQL クライアントをインストールして、Amazon RDS PostgreSQL DB インスタンスと連携させます。クライアントは、ローカルシステムにインストールすることも、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用することもできます。このパターンでは、EC2 インスタンスで psql を使用します。

**制限事項**
+ Amazon RDS for PostgreSQL の異なるメジャーバージョン間でデータベースを転送することはできません。
+ ソースデータベースからのアクセス許可と所有権は、ターゲットデータベースに移行されません。
+ リードレプリカやリードレプリカの親インスタンス上でデータベースを転送することはできません。
+ このメソッドで転送する予定のデータベーステーブルでは、**reg** データタイプを使用することはできません。
+ DB インスタンス上で、合計 32 トランスポー (インポートとエクスポートの両方を含む) まで同時に実行できる。
+ テーブルの名前を変更したり、テーブルを含めたり除外したりすることはできません。すべてはそのまま移行されます。

注意
+ 拡張機能を削除すると依存オブジェクトやデータベースの操作に重要なデータも削除されるため、拡張機能を削除する前にバックアップを作成してください。
+ **pg\$1transport** のワーカー数と `work_mem` 値を決定するときは、ソースインスタンス上の他のデータベースで実行されているインスタンスクラスとプロセスを考慮してください。
+ トランスポートが開始されると、ソースデータベースのすべての接続が終了し、データベースは読み取り専用モードになります。

**注記**  
トランスポートが 1 つのデータベースで実行されている場合、同じサーバー上の他のデータベースには影響しません。****

**製品バージョン**
+ Amazon RDS for PostgreSQL 10.10 以降、および Amazon RDS for PostgreSQL 11.5 以降、および Amazon RDS for PostgreSQL 11.5 以降。最新バージョン情報については、Amazon RDS ドキュメントの「[DB インスタンス間の PostgreSQL データベースの転送](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html)」を参照してください。

## アーキテクチャ
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-architecture"></a>

![\[Amazon RDS DB インスタンス間での PostgreSQL データベースの転送\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/d5fb7ea3-32b7-4602-b382-3cf5c075c7c9/images/aec4d8d2-37a8-4136-9042-f9667ac4aebb.png)


## ツール
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-tools"></a>
+ **pg\$1transport** は各データベースを移動するための物理的なトランスポートメカニズムを提供します。最小限のプロセスでデータベースファイルをストリーミングすることで、物理的な移行は、従来のダンプおよびロードプロセスよりもはるかに早くデータを移動でき、ダウンタイムを最小限に抑えます。PostgreSQL トランスポータブルデータベースは、移行先 DB インスタンスが移行元 DB インスタンスからデータベースをインポートするプルモデルを使用します。このパターンで説明されているように、ソース環境とターゲット環境を準備するときに DB インスタンスにこのエクステンションをインストールします。
+ 「[psql](https://www.postgresql.org/docs/11/app-psql.html)」を使用すると、PostgreSQL DB インスタンスに接続して操作することができます。**psql** をシステムにインストールするには、「[PostgreSQL Downloads](https://www.postgresql.org/download/)」ページを参照してください。

## エピック
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-epics"></a>

### ターゲットパラメータグループを作成する
<a name="create-the-target-parameter-group"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットシステムのパラメータグループを作成します。 | ターゲットパラメータグループとして識別できるグループ名 (例: `pgtarget-param-group`) を指定します。手順については、「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating)」を参照してください。 | DBA | 
| パラメータグループのパラメータを変更します。 | 以下のパラメータを設定します:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)パラメータグループの詳細については、「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html)」を参照してください。 | DBA | 

### ソースパラメーターグループの作成
<a name="create-the-source-parameter-group"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースシステムのパラメータグループを作成します。 | ソースパラメータグループであることがわかるグループ名 (例: `pgsource-param-group`) を指定します。手順については、「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithDBInstanceParamGroups.html#USER_WorkingWithParamGroups.Creating)」を参照してください。 | DBA | 
| パラメータグループのパラメータを変更します。 | 以下のパラメータを設定します:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html)パラメータグループの詳細については、「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.TransportableDB.html)」を参照してください。 | DBA | 

### ターゲット環境を準備する
<a name="prepare-the-target-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースの転送先となる新しい Amazon RDS for PostgreSQL DB インスタンスを作成します。 | ビジネス要件に基づいてインスタンスクラスと PostgreSQL バージョンを決定してください。 | DBA、システム管理者、データベースアーキテクト | 
| EC2 インスタンスから DB インスタンスポートに接続できるように、ターゲットのセキュリティグループを変更します。 | デフォルトでは、PostgreSQL インスタンスのポートは 5432 です。別のポートを使用している場合は、そのポートへの接続を EC2 インスタンスで開いておく必要があります。 | DBA、システム管理者 | 
| インスタンスを変更し、新しいターゲットパラメータグループを割り当てます。 | 例えば、`pgtarget-param-group`。 | DBA | 
| ターゲットの Amazon RDS DB インスタンスを再起動します。 | パラメータ `shared_preload_libraries` とパラメータ `max_worker_processes` は静的パラメータで、インスタンスの再起動が必要です。 | DBA、システム管理者 | 
| psql を使用して EC2 インスタンスからデータベースに接続します。 | コマンドを使用します。 <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | DBA | 
| pg\$1transport 拡張機能を作成します。 | `rds_superuser` ロールを持つユーザーとして次のクエリを実行します。<pre>create extension pg_transport;</pre> | DBA | 

### ソース環境の準備
<a name="prepare-the-source-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EC2 インスタンスとターゲット DB インスタンスからの DB インスタンスポートへの接続を許可するように、ソースのセキュリティグループを変更します。 | デフォルトでは、PostgreSQL インスタンスのポートは 5432 です。別のポートを使用している場合は、そのポートへの接続を EC2 インスタンスで開いておく必要があります。 | DBA、システム管理者 | 
| インスタンスを変更し、新しいソースパラメータグループを割り当てます。 | 例えば、`pgsource-param-group`。 | DBA | 
| ソース Amazon RDS DB インスタンスを再起動します。 | パラメータ `shared_preload_libraries` とパラメータ `max_worker_processes` は静的パラメータで、インスタンスの再起動が必要です。 | DBA | 
| psql を使用して EC2 インスタンスからデータベースに接続します。 | コマンドを使用します。 <pre>psql -h <rds_end_point> -p PORT -U username -d database -W</pre> | DBA | 
| pg\$1transport エクステンションを作成し、転送するデータベースから他のすべてのエクステンションを削除します。 | ソースデータベースに **pg\$1transport** 以外の拡張機能がインストールされていると、転送は失敗します。このコマンドは、`rds_superuser` ロールを持つユーザーが実行する必要があります。 | DBA | 

### トランスポートの実行
<a name="perform-the-transport"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ドライランをを実行します。 | `transport.import_from_server` 関数を使用して、最初にリハーサルを実行します。<pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', 'true');</pre>この関数の最後のパラメーター (`true` に設定) はドライランを定義します。この関数は、メイントランスポートを実行したときに表示されるエラーをすべて表示します。メインストランスポートを実行する前に、エラーを解決してください。 | DBA | 
| ドライランが成功したら、データベーストランスポートを開始します。 | `transport.import_from_server` 関数を実行してトランスポートを実行します。ソースに接続し、データをインポートします。 <pre>SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', false);</pre>この関数の最後のパラメーター (`false` に設定) は、これがドライランではないことを示しています。 | DBA | 
| ポストトランスポートステップを実行する。 | データベーストランスポートが完了したら:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.html) | DBA | 

## 関連リソース
<a name="transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport-resources"></a>
+ 「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/rds/)」
+ 「[pg\$1transport ドキュメンテーション](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html#PostgreSQL.TransportableDB.Setup)」
+ 「[RDS PostgreSQL トランスポータブルデータベースを使用したデータベースの移行](https://aws.amazon.com/blogs/database/migrating-databases-using-rds-postgresql-transportable-databases/)」(ブログ投稿)
+ 「[PostgreSQL のダウンロード](https://www.postgresql.org/download/linux/redhat/)」
+ 「[psql ユーティリティ](https://www.postgresql.org/docs/11/app-psql.html)」
+ [DB パラメータグループを作成する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Creating)
+ 「[DB パラメータグループ内のパラメータを変更する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Modifying)」
+ 「[PostgreSQL のダウンロード](https://www.postgresql.org/download/)」

# リプラットフォーム
<a name="migration-replatform-pattern-list"></a>

**Topics**
+ [AWS DMS を使用して Microsoft SQL Server データベースを Amazon S3 にエクスポートする](export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms.md)
+ [Oracle CLOB 値を AWS 上の PostgreSQL の個々の行に移行](migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws.md)
+ [Oracle PeopleSoft を Amazon RDS Custom に移行](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Oracle ROWID 機能を AWS の PostgreSQL に移行](migrate-oracle-rowid-functionality-to-postgresql-on-aws.md)
+ [Oracle Database のエラーコードを Amazon Aurora PostgreSQL-Compatible データベースに移行する](migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.md)
+ [AWS SCT と AWS DMS を使用して Amazon EC2 上の SAP ASE を Amazon Aurora PostgreSQL 互換の Amazon Aurora PostgreSQL 互換に移行します](migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms.md)
+ [ACM を使用して Windows SSL 証明書をApplication Load Balancer に移行](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [メッセージキューを Microsoft Azure Service Bus から Amazon SQS に移行](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [Oracle Data Pump と AWS DMS を使用して Oracle JD Edwards EnterpriseOne データベースを AWS に移行します](migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.md)
+ [AWS DMS を使用して Oracle PeopleSoft データベースを AWS に移行する](migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.md)
+ [オンプレミス MySQL データベースを Amazon RDS for MySQL に移行する](migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql.md)
+ [オンプレミス Microsoft SQL Server データベースを Amazon RDS for SQL Server に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server.md)
+ [Rclone を使用して Microsoft Azure Blob から Amazon S3 にデータを移行する](migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.md)
+ [カウチベースサーバーから AWS 上のカウチベースカペラへの移行](migrate-from-couchbase-server-to-couchbase-capella-on-aws.md)
+ [IBM WebSphere アプリケーションサーバーから Amazon EC2 の Apache Tomcat に移行](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)
+ [IBM WebSphere アプリケーションサーバーから Amazon EC2 上の Apache Tomcat への自動スケーリングによる移行](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [.NET アプリケーションを Microsoft Azure App Serviceから AWS Elastic Beanstalk に移行](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [Amazon ECS で Oracle WebLogic から Apache Tomcat (ToMee) に移行する](migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs.md)
+ [AWS DMS を使用して Oracle データベースを Amazon EC2 から Amazon RDS for Oracle に移行する](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms.md)
+ [Logstash を使用して、オンプレミス Oracle データベースを Amazon OpenSearch Service へ移行する](migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash.md)
+ [オンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.md)
+ [Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump.md)
+ [pglogic を使用して Amazon EC2 上の PostgreSQL から Amazon RDS for PostgreSQL に移行する](migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.md)
+ [オンプレミス PostgreSQL データベースを Aurora PostgreSQL に移行する](migrate-an-on-premises-postgresql-database-to-aurora-postgresql.md)
+ [オンプレミス Microsoft SQL Server データベースを、Linux を実行中の Amazon EC2 上の Microsoft SQL Server に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux.md)
+ [リンクされたサーバーを使用して、オンプレミス Microsoft SQL Server データベースを Amazon RDS for SQL Server に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers.md)
+ [ネイティブバックアップと復元メソッドを使用して、オンプレミスの Microsoft SQL サーバーデータベースを Amazon RDS for SQL Server に移行](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.md)
+ [AWS DMS と AWS SCT を使用して Microsoft SQL Server データベースを Aurora MySQL に移行](migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct.md)
+ [ネイティブツールを使用して オンプレミスの MariaDB Amazon RDS for MariaDB に移行する](migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools.md)
+ [オンプレミス MySQL データベースを Aurora MySQL に移行する](migrate-an-on-premises-mysql-database-to-aurora-mysql.md)
+ [Percona XtraBackup、Amazon EFS、Amazon S3 を使用してオンプレミスの MySQL データベースを Aurora MySQL に移行する](migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.md)
+ [AWS App2Container を使用したオンプレミスの Java プリケーションの AWS への移行](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [AWS 大規模な移行で共有ファイルシステムを移行する](migrate-shared-file-systems-in-an-aws-large-migration.md)
+ [Oracle GoldenGate フラットファイルアダプタを使用して Oracle データベースを Amazon RDS for Oracle に移行する](migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.md)
+ [Microsoft SQL Server から Amazon Aurora PostgreSQL 互換エディションへのデータベース移行をサポートするように Python と Perl アプリケーションを変更する](change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.md)

# AWS DMS を使用して Microsoft SQL Server データベースを Amazon S3 にエクスポートする
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms"></a>

*Amazon Web Services、Sweta Krishna*

## 概要
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-summary"></a>

多くの場合、組織はデータベースの移行、バックアップと復元、データアーカイブ、データ分析のために、データベースを Amazon Simple Storage Service (Amazon S3) にコピーする必要があります。このパターンは、Microsoft SQL Server データベースを Amazon S3 にエクスポートする方法を説明しています。ソースデータベースは、オンプレミスでホストすることも、Amazon Web Services (AWS) クラウドの Microsoft SQL Server 用の Amazon Elastic Compute Cloud (Amazon EC2) または Amazon Relational Database Service (Amazon RDS) でホストすることもできます。

データは AWS Database Migration Service (AWS DMS) を使用してエクスポートされます。デフォルトでは、AWS DMS は全ロードデータおよび変更データキャプチャ (CDC) データをカンマ区切り値 (.csv) 形式で書き込みます。よりコンパクトなストレージとより高速なクエリオプションを実現するため、このパターンでは Apache Parquet (.parquet) 形式オプションを使用します。

## 前提条件と制限
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ ターゲット S3 バケットへの書き込み、削除、タグ付けのアクセス権を持つアカウントの AWS Identity and Access Management (IAM) ロール、およびこの IAM ロールに信頼できるエンティティとして追加された AWS DMS (`dms.amazonaws.com`) 
+ オンプレミスの Microsoft SQL Server データベース (または EC2 インスタンスもしくは Amazon RDS for SQL Server 上の Microsoft SQL Serverデータベース)
+ AWS 上の仮想プライベートクラウド (VPC) と、AWS Direct Connect または仮想プライベートネットワーク (VPN) が提供するオンプレミスネットワークとの間のネットワーク接続

**制限事項**
+ VPC 対応 (ゲートウェイ VPC) S3 バケットは、現在、3.4.7 より前の AWS DMS バージョンではサポートされていません。
+ 全ロード時のソーステーブル構造に対する変更はサポートされていません。
+ AWS DMS フルラージバイナリオブジェクト (LOB) モードはサポートされていません。

**製品バージョン**
+ Enterprise、Standard、Workgroup、および Developer エディションの Microsoft SQL Server バージョン 2005 以降。
+ ソースとしての Microsoft SQL Server バージョン 2019 のサポートは、AWS DMS バージョン 3.3.2 以降で利用可能です。

## アーキテクチャ
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Microsoft SQL Server データベース (または EC2 インスタンスまたは Amazon RDS for SQL Server 上の Microsoft SQL Server データベース)**** 

**ターゲットテクノロジースタック**
+ AWS Direct Connect
+ AWS DMS
+ Amazon S3

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

![\[データを SQL Server データベースから Direct Connect 経由で AWS DMS に移行し、次に S3 バケットに移行する。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/75b8b20f-a1a8-4633-9816-1b370cc7e92c/images/85bd433c-4a0a-4825-8661-e53f53265191.png)


## ツール
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-tools"></a>
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) は、標準のイーサネット光ファイバーケーブルを介して内部ネットワークを Direct Connect の場所にリンクします。この接続を使用すると、ネットワークパスのインターネットサービスプロバイダーを回避してパブリック AWS サービスに対する仮想インターフェイスを直接作成できます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

## エピック
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベースのバージョンを検証します。 | ソースデータベースのバージョンを検証し、AWS DMS でサポートされていることを確認します。サポートされている SQL Server データベースのバージョンについては、「[Microsoft SQL Server データベースを AWS DMS のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)」を参照してください。 | DBA | 
| VPC とセキュリティグループを作成する | AWS アカウントで、VPC とセキュリティグループを作成します。詳細については、[Amazon VPC のドキュメント](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)参照してください。 | システム管理者 | 
| AWS DMS タスクのユーザーを作成します。 | ソースデータベースに AWS DMS ユーザーを作成し、読み取り権限を付与します。このユーザーは AWS DMS で使用します。 | DBA | 
| DB 接続をテストします。 | AWS DMS ユーザーから SQL Server DB インスタンスへの接続をテストします。 | DBA | 
| S3 バケットを作成する。 | ターゲットの S3 バケットを作成します。このバケットには、移行されたテーブルデータが格納されます。 | システム管理者 | 
| IAM ポリシーとロールを作成する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms.html) | システム管理者 | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS レプリケーションインスタンスを作成します。 | AWS マネジメントコンソール にサインインし、AWS DMS コンソールを開きます。ナビゲーションペインで、**[レプリケーション インスタンス]** を選択し、**[レプリケーション インスタンスの作成]** を選択します。手順については、「AWS DMS ドキュメント」の[ステップ 1](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.ReplicationInstance) を参照してください。 | DBA | 
| ソースおよびターゲットエンドポイントを作成します。 | ソースおよびターゲットエンドポイントを作成します。レプリケーション インスタンスからソースおよびターゲットエンドポイントの両方への接続をテストします。手順については、「AWS DMS ドキュメント」の[ステップ 2](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Endpoints) を参照してください。 | DBA | 
| レプリケーションタスクを作成します。 | レプリケーションタスクを作成し、[全ロード] または [変更データキャプチャ (CDC) による全ロード] を選択して SQL Server から S3 バケットにデータを移行します。手順については、「AWS DMS ドキュメント」の[ステップ 3](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Tasks) を参照してください。 | DBA | 
| データレプリケーションを開始する。 | レプリケーションタスクを開始し、ログにエラーがないかモニタリングします。 | DBA | 

### データを検証する
<a name="validate-the-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行したデータを検証します。 | Amazon S3 コンソールで、ターゲット S3 バケットに移動します。ソースデータベースと同じ名前のサブフォルダを開きます。ソースデータベースから移行したすべてのテーブルがフォルダに含まれていることを確認します。 | DBA | 

### リソースをクリーンアップする
<a name="clean-up-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンして削除する。 | データ移行用に作成した一時的な AWS リソース (AWS DMS レプリケーションインスタンスなど) をシャットダウンし、エクスポートを検証した後に削除します。 | DBA | 

## 関連リソース
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-resources"></a>
+ [ Database Migration Service User Guide](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [Microsoft SQL Server データベースの DMS のソースとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)
+ [ Database Migration Service のターゲットとしての Amazon S3 の使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html)
+ [S3 バケットを DMS ターゲットとして使用する](https://repost.aws/knowledge-center/s3-bucket-dms-target) (AWS re:Post)

## 追加情報
<a name="export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms-additional"></a>

次のコードを使用して、S3 バケット権限を持つ AWS DMS ロールが含まれる IAM ポリシーを追加します。`bucketname` をバケットの名前に置き換えます。

```
{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "s3:PutObject",
                 "s3:DeleteObject"
             ],
             "Resource": [
                 "arn:aws:s3:::bucketname*"
             ]
         },
         {
             "Effect": "Allow",
             "Action": [
                 "s3:ListBucket"
             ],
             "Resource": [
                 "arn:aws:s3:::bucketname*"
             ]
         }
     ]
 }
```

# Oracle CLOB 値を AWS 上の PostgreSQL の個々の行に移行
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws"></a>

*Amazon Web Services、Sai Krishna Namburu、Sindhusha Paturu*

## 概要
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-summary"></a>

このパターンは、Amazon Aurora PostgreSQL 互換エディションと PostgreSQL 用 Amazon Relational Database Service (Amazon RDS) で Oracle キャラクターラージオブジェクト (CLOB) の値を個々の行に分割する方法を示しています。PostgreSQL は CLOB データ型をサポートしていません。

インターバルパーティションのあるテーブルはソース Oracle データベースで識別され、テーブル名、パーティションのタイプ、パーティションの間隔、およびその他のメタデータがキャプチャされ、ターゲットデータベースにロードされます。サイズが 1 GB 未満の CLOB データは、AWS Database Migration Service (AWS DMS) を使用してテキストとしてターゲットテーブルにロードできます。または、データを CSV 形式でエクスポートして Amazon Simple Storage Service (Amazon S3) バケットにロードし、ターゲット PostgreSQL データベースに移行できます。

移行後は、このパターンで提供されるカスタム PostgreSQL コードを使用して、CLOB データを改行文字識別子 (`CHR(10)`) に基づいて個々の行に分割し、ターゲット** **テーブルにデータを入力できます。 

## 前提条件と制限事項
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-prereqs"></a>

**前提条件**
+ 区間パーティションと CLOB データ型のレコードを含む Oracle データベーステーブル。
+ Aurora PostgreSQL 互換または Amazon RDS for PostgreSQL データベースで、ソーステーブルと同様のテーブル構造 (同じ列とデータ型) を備えています。

**制限事項**
+ CLOB 値は 1 GB を超えることはできません。
+ ターゲットテーブルの各行には、改行文字 ID が必要です。

**製品バージョン**
+ Oracle 12c
+ Aurora ポストグレス11.6

## アーキテクチャ
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-architecture"></a>

次の図は、CLOB データを含むソース Oracle テーブルと、Aurora PostgreSQL 互換バージョン 11.6 の同等の PostgreSQL テーブルを示しています。

![\[ソース CLOB テーブルおよび同等のターゲット PostgreSQL テーブル\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/55806ee7-6a9f-4058-9a47-a07de68223ca/images/79b9d4b9-6f20-4db5-8ca8-2a599769a498.png)


## ツール
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-tools"></a>

**AWS サービス**
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型で ACID 準拠のリレーショナルデータベースエンジンです。
+ 「[Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html)」を使用して、AWS クラウドでの PostgreSQL リレーショナルデータベースをセットアップ、運用、スケーリングできます。
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

その他のツール

以下のクライアントツールを使用して、Aurora PostgreSQL 互換データベースと Amazon RDS for PostgreSQL データベースへの接続、アクセス、管理を行うことができます。(これらのツールはこのパターンでは使用されません)。
+ 「[pgAdmin](https://www.pgadmin.org/)」は PostgreSQL 用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。
+ 「[DBeaver](https://dbeaver.io/)」は、開発者やデータベース管理者向けのオープンソースのデータベースツールです。このツールを使用して、データの操作、監視、分析、管理、移行を行うことができます。

## ベストプラクティス
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-best-practices"></a>

データベースを Oracle から PostgreSQL に移行するためのベストプラクティスについては、AWS ブログ記事「[Oracle データベースを Amazon RDS PostgreSQL または Amazon Aurora PostgreSQL に移行するためのベストプラクティス:移行プロセスとインフラストラクチャに関する考慮事項](https://aws.amazon.com/blogs/database/best-practices-for-migrating-an-oracle-database-to-amazon-rds-postgresql-or-amazon-aurora-postgresql-migration-process-and-infrastructure-considerations/)」を参照してください。

大きなバイナリオブジェクトを移行するための AWS DMS タスクを設定するベストプラクティスについては、AWS DMS ドキュメントの「[ラージバイナリオブジェクト (LOB) の移行](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html#CHAP_BestPractices.LOBS)」を参照してください。

## エピック
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-epics"></a>

### CLOB データを識別してください。
<a name="identify-the-clob-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CLOB データを分析します。 | ソース Oracle データベースで CLOB データを分析して列ヘッダーが含まれているかどうかを確認し、データをターゲットテーブルに読み込む方法を決定できるようにします。 入力データを分析するには、次のクエリを使用します。`SELECT * FROM clobdata_or;  ` | 開発者 | 
| CLOB データをターゲットデータベースにロードします。 | CLOB データを含むテーブルを Aurora または Amazon RDS ターゲットデータベースの中間 (ステージング) テーブルに移行します。AWS DMS を使用するか、CSV ファイルとして Amazon S3 バケットにアップロードできます。このタスクで AWS DMS を使用する方法については、AWS DMS ドキュメントの「[Oracle データベースのソースとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」と「[PostgreSQL データベースのターゲットとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)」を参照してください。このタスクに Amazon S3 を使用する方法については、AWS DMS ドキュメントの「[ターゲットとしての Amazon S3 の使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html)」を参照してください。 | 移行エンジニア、DBA | 
| ターゲット PostgreSQL テーブルを検証します。 | ターゲットデータベースで以下のクエリを使用して、ヘッダーを含むターゲットデータをソースデータに対して検証します。<pre>SELECT * FROM clobdata_pg;<br />SELECT * FROM clobdatatarget;</pre>結果を (最初のステップの) ソースデータベースからのクエリ結果と比較します。 | 開発者 | 
| CLOB データを別々の行に分割します。 | 「[追加情報](#migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-additional)」セクションに記載されているカスタム PostgreSQL コードを実行して、CLOB データを分割し、ターゲット PostgreSQL テーブルの別々の行に挿入します。 | 開発者 | 

### データを検証します。
<a name="validate-the-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットテーブルのデータを検証します。 | 次のクエリを使用して、ターゲットテーブルに挿入されたデータを検証します。<pre>SELECT * FROM clobdata_pg;<br />SELECT * FROM clobdatatarget;</pre> | 開発者 | 

## 関連リソース
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-resources"></a>
+ 「[CLOB データ型](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF0021)」(Oracle ドキュメント)
+ 「[データタイプ](https://www.postgresql.org/docs/11/datatype.html)」(PostgreSQL ドキュメンテーション)

## 追加情報
<a name="migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws-additional"></a>

CLOB データを分割するための PostgreSQL 関数

```
do
$$
declare
totalstr varchar;
str1 varchar;
str2 varchar;
pos1 integer := 1;
pos2 integer ;
len integer;


begin
        select rawdata||chr(10) into totalstr from clobdata_pg;
        len :=  length(totalstr) ;
        raise notice 'Total length : %',len;
        raise notice 'totalstr : %',totalstr;
        raise notice 'Before while loop';


        while pos1 < len  loop


                  select position (chr(10) in totalstr) into pos2;
                 raise notice '1st position of new line : %',pos2;


                str1 := substring (totalstr,pos1,pos2-1);
                raise notice 'str1 : %',str1;


                   insert into clobdatatarget(data) values (str1);
                   totalstr := substring(totalstr,pos2+1,len);
                   raise notice 'new totalstr :%',totalstr;
                len :=  length(totalstr) ;


        end loop;
end
$$
LANGUAGE 'plpgsql' ;
```

入力例と出力例

データを移行する前に、次の例を使用して PostgreSQL コードを試すことができます。

3 行の入力を含む Oracle データベースを作成します。

```
CREATE TABLE clobdata_or (
id INTEGER GENERATED ALWAYS AS IDENTITY,
rawdata clob  );


insert into clobdata_or(rawdata) values (to_clob('test line 1') || chr(10) || to_clob('test line 2') || chr(10) || to_clob('test line 3') || chr(10));
COMMIT;


SELECT * FROM clobdata_or;
```

これにより、以下の出力が表示されます。


|  |  | 
| --- |--- |
| id | ローデータ | 
| 1 | テストライン 1 テストライン 2 テストライン 3 | 

ソースデータを PostgreSQL ステージングテーブル (`clobdata_pg`) にロードして処理します。

```
SELECT * FROM clobdata_pg;

CREATE TEMP TABLE clobdatatarget (id1 SERIAL,data VARCHAR );

<Run the code in the additional information section.>

SELECT * FROM clobdatatarget;
```

これにより、以下の出力が表示されます。


|  |  | 
| --- |--- |
| id1 | data | 
| 1 | テストライン 1 行目 | 
| 2 | テストライン 2 行目 | 
| 3 | テストライン 3 行目 | 

# Oracle PeopleSoft を Amazon RDS Custom に移行
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom"></a>

*Amazon Web Services、Gaurav Gupta*

## 概要
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-summary"></a>

「[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/)」は、企業全体のプロセスを対象とするエンタープライズリソースプランニング (ERP) ソリューションです。PeopleSoft のアーキテクチャは、クライアント、アプリケーション、データベースの 3 層構造です。PeopleSoft は「[Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」で実行できます。PeopleSoft を「[Amazon RDS Custom](https://aws.amazon.com/rds/custom/)」でも実行できるようになり、基盤となるオペレーティングシステムにアクセスできるようになりました。

「[Amazon RDS Custom for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-custom-oracle.html)」は、基盤となるオペレーティングシステムとデータベース環境へのアクセスを必要とするレガシーアプリケーション、カスタムアプリケーション、パッケージアプリケーション向けのマネージドデータベースサービスです。Oracle データベースを Amazon RDS Custom に移行すると、Amazon Web Services (AWS) がバックアップタスクと高可用性を管理できるため、ユーザーは PeopleSoft のアプリケーションと機能のメンテナンスに集中できます。移行で考慮すべき主な要素については、AWS 規範ガイダンスの「[Oracle データベースの移行戦略](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html)」を参照してください。

このパターンは、Amazon Elastic Compute Cloud (Amazon EC2) の PeopleSoft データベースを Oracle Recovery Manager (RMAN) のバックアップを使用して、Amazon RDS Custom に移行する手順に焦点を当てています。EC2 インスタンスと Amazon RDS Custom 間では「[Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/)」共有ファイルシステムを使用しますが、Amazon FSx や任意の共有ドライブを使用することもできます。このパターンでは RMAN フルバックアップ (レベル 0 バックアップと呼ばれることもあります) を使用します。

## 前提条件と制限
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-prereqs"></a>

**前提条件**
+ Oracle Linux 7、Oracle Linux 8、Red Hat Enterprise Linux (RHEL) 7、または RHEL 8 を搭載した Amazon EC2 上で実行されている Oracle バージョン 19C のソースデータベース。このパターンの例では、ソースデータベース名は `FSDMO92` ですが、必須ではありません。
**注記**  
このパターンはオンプレミスの Oracle ソースデータベースでも使用できます。オンプレミスネットワークと仮想プライベートクラウド (VPC) 間には、適切なネットワーク接続が必要です。
+ PeopleSoft 9.2 デモインスタンス。
+ 単一の PeopleSoft アプリケーション層。ただし、このパターンを複数のアプリケーション層で機能するように調整できます。
+ Amazon RDS Custom には 8 GB 以上のスワップスペースが設定されています。

**制限事項**

このパターンは以下の設定をサポートしていません。
+ データベース `ARCHIVE_LAG_TARGET` パラメータを 60 ～ 7,200 の範囲外の値に設定します。
+ DB インスタンスログモードを無効にする (`NOARCHIVELOG`)
+ EC2 インスタンスの Amazon Elastic Block Store (Amazon EBS) 最適化属性をオフにする
+ EC2 インスタンスにアタッチされた元の EBS ボリュームを変更する
+ 新しい EBS ボリュームを追加するか、ボリュームタイプを gp2 から gp3 に変更します。
+ パラメータの拡張 `LOG_ARCHIVE_FORMAT` フォーマットの変更 (`*.arc` が必須)
+ 制御ファイルの場所と名前を多重化または変更する (必ず `/rdsdbdata/db/*DBNAME*/controlfile/control-01.ctl` に変更する必要がある)

これらおよびその他のサポートされていない設定に関する追加情報については、「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-troubleshooting.html#custom-troubleshooting.fix-unsupported)」を参照してください。

**製品バージョン**

Amazon RDS Custom がサポートする Oracle Database のバージョンとインスタンスクラスについては、「[Amazon RDS Custom for Oracle の要件と制限](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/UserGuide/custom-reqs-limits.html)」を参照してください。

## アーキテクチャ
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-architecture"></a>

**ターゲットテクノロジースタック**
+ Application Load Balancer
+ Amazon EFS
+ Amazon RDS Custom for Oracle
+ AWS Secrets Manager
+ Amazon Simple Storage Service (Amazon S3)

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

以下のアーキテクチャ図は、AWS の単一の「[アベイラビリティーゾーン](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)」で実行されている PeopleSoft システムを表しています。アプリケーション層には、「[Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)」を介してアクセスされます。アプリケーションとデータベースはどちらもプライベートサブネットにあり、Amazon RDS Custom と Amazon EC2 データベースインスタンスは Amazon EFS 共有ファイルシステムを使用して RMAN バックアップファイルを保存し、アクセスします。Amazon S3 は、カスタム RDS Oracle エンジンの作成と REDO ログメタデータの保存に使用されます。

![\[プライベートサブネット内のウェブサーバー、アプリケーションサーバー、Amazon RDS Custom、EC2 DB インスタンス、Amazon EFS。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bd423dfe-f3c8-42d9-ac84-bf3d093c52bc/images/0e9a6431-e6c7-4047-ae6c-85311938041f.jpeg)


## ツール
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-tools"></a>

**ツール**

*AWS サービス*
+ 「[Amazon RDS Custom for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-custom-oracle.html)」は、基盤となるオペレーティングシステムとデータベース環境へのアクセスを必要とするレガシーアプリケーション、カスタムアプリケーション、パッケージアプリケーション向けのマネージドデータベースサービスです。バックアップや高可用性などのデータベース管理タスクを自動化します。 
+ 「[Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)」は、 AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。このパターンでは、Amazon EFS 共有ファイルシステムを使用して RMAN バックアップファイルを保存し、アクセスします。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) は、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得する上で役立ちます。このパターンでは、Secrets Manager からデータベースユーザーのパスワードを取得して、`RDSADMIN` および `ADMIN` ユーザーを作成し、`sys` および `system` のパスワードを変更します。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ 「[Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)」は、受信するアプリケーションまたはネットワークのトラフィックを複数のターゲットに分散します。例えば、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、コンテナ、および 1 つまたは複数のアベイラビリティーゾーンの IP アドレスにトラフィックを分散できます。このパターンでは、Application Load Balancer を使用します。

その他のツール
+ Oracle Recovery Manager (RMAN) は、Oracle データベースのバックアップとリカバリのサポートを提供します。このパターンでは、RMAN を使用して Amazon EC2 上のソース Oracle データベースのホットバックアップを実行し、Amazon RDS Custom で復元します。

## ベストプラクティス
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-best-practices"></a>
+ データベース初期化パラメータについては、Oracle ソースデータベースの spfile を使用する代わりに、PeopleSoft 用の Amazon RDS Custom DB インスタンスによって提供される標準プロファイルをカスタマイズします。これは、Amazon RDS Custom でリードレプリカを作成する際に空白やコメントが原因で問題が発生するためです。データベース初期化パラメータの詳細については、Oracle Support ノート 1100831.1 (「[Oracle Support](https://support.oracle.com/portal/)」アカウントが必要) を参照してください。
+ Amazon RDS Custom はデフォルトで Oracle の自動メモリ管理を使用します。Hugemem カーネルを使用したい場合は、代わりに自動共有メモリ管理を使用するように Amazon RDS Custom を設定できます。
+ `memory_max_target` パラメータはデフォルトでは有効のままにしておきます。フレームワークはこれをバックグラウンドで使用してリードレプリカを作成します。
+ Oracle フラッシュバックデータベースを有効にします。この機能は、フェイルオーバー (スイッチオーバーではない) のテストシナリオでスタンバイを復元する場合に便利です。

## エピック
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-epics"></a>

### DB インスタンスとファイルシステムをセットアップする
<a name="set-up-the-db-instance-and-file-system"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| DB インスタンスを作成します。 | Amazon RDS コンソールで、FSDMO92 (またはソースデータベース名) という名前の DB 名で Amazon RDS Custom for Oracle DB インスタンスを作成します。手順については、AWS ドキュメントの「[Amazon RDS Custom の使用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-custom.html)」と、ブログ記事「[Oracle 用 Amazon RDS カスタム — データベース環境における新しい制御機能](https://aws.amazon.com/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/)」を参照してください。これにより、データベース名はソースデータベースと同じ名前に設定されます。(空白のままにすると、EC2 インスタンスとデータベース名は `ORCL` に設定されます)。 | DBA | 

### ソース Amazon EC2 データベースの RMAN 完全バックアップを実行します。
<a name="perform-an-rman-full-backup-of-the-source-amazon-ec2-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バックアップスクリプトを作成します。 | RMAN バックアップスクリプトを作成して、マウントした Amazon EFS ファイルシステムにデータベースをバックアップします (次の例では `/efs`)。サンプルコードを使用するか、既存の RMAN スクリプトのいずれかを実行できます。<pre>#!/bin/bash<br />Dt=`date +'%Y%m%d-%H%M'`<br />BACKUP_LOG="rman-${ORACLE_SID}-$Dt"<br />export TAGDATE=`date +%Y%m%d%H%M`;<br />LOGPATH=/u01/scripts/logs<br />rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF<br />SQL "ALTER SYSTEM SWITCH LOGFILE";<br />SQL "ALTER SESSION SET NLS_DATE_FORMAT="DD.MM.YYYY HH24:MI:SS"";<br />RUN<br />{<br />  ALLOCATE CHANNEL ch11 TYPE DISK MAXPIECESIZE 5G;<br />  ALLOCATE CHANNEL ch12 TYPE DISK MAXPIECESIZE 5G;<br />  BACKUP AS COMPRESSED BACKUPSET FULL DATABASE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_FULL' ;<br />  SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";<br />  BACKUP FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_ARCHIVE' ARCHIVELOG ALL DELETE ALL INPUT ;<br />  BACKUP CURRENT CONTROLFILE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_CONTROL';<br />}<br />EXIT;<br />EOF<br />  </pre> | DBA | 
| バックアップスクリプトを実行します。 | RMAN バックアップスクリプトを実行するには、Oracle Home User としてログインし、スクリプトを実行します。<pre>$  chmod a+x rman_backup.sh<br />$ ./rman_backup.sh &</pre> | DBA | 
| エラーを確認し、バックアップファイル名をメモします。 | RMAN ログファイルにエラーがないか確認します。すべて問題なければ、以下のコマンドを実行して制御ファイルのバックアップを一覧表示します。<pre>RMAN> list backup of controlfile;<br /><br />using target database control file instead of recovery catalog<br /></pre>出力ファイルの名前に注意してください。<pre>List of Backup Sets<br />===================<br /><br />BS Key  Type LV Size       Device Type Elapsed Time Completion Time<br />------- ---- -- ---------- ----------- ------------ ---------------<br />12      Full    21.58M     DISK        00:00:01     13-JUL-22<br />        BP Key: 12   Status: AVAILABLE  Compressed: NO  Tag: TAG20220713T150155<br />        Piece Name: /efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL<br /> Control File Included: Ckp SCN: 16559159985898   Ckp time: 13-JUL-22<br /></pre>Amazon RDS Custom でデータベースを復元するときは、バックアップコントロール `/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL` ファイルを使用します。 | DBA | 

### ソースアプリケーション層をシャットダウンします
<a name="shut-down-the-source-application-tier"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションをシャットダウンします。 | ソースアプリケーション層をシャットダウンするには、ユーティリティ `psadmin` または `psadmin` コマンドラインユーティリティを使用してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA、PeopleSoft 管理者 | 

### ターゲット Amazon RDS Custom データベースを設定します。
<a name="configure-the-target-amazon-rds-custom-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| nfs-utils rpm パッケージをインストールします。 | `nfs-utils rpm` パッケージをインストールするには、次のコマンドを実行します。<pre>$ yum install -y nfs-utils<br /></pre> | DBA | 
| EFS ストレージをマウントします。 | Amazon EFS コンソールページから Amazon EFS マウントコマンドを取得します。ネットワークファイルシステム (NFS) クライアントを使用して、EFS ファイルシステムを Amazon RDS インスタンスにマウントします。<pre>sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxxxxx.efs.eu-west-1.amazonaws.com:/ /efs<br />sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxxxxx.efs.eu-west-1.amazonaws.com:/ /efs</pre> | DBA | 

### スターターデータベースを削除し、データベースファイルを保存するディレクトリを作成します。
<a name="drop-the-starter-database-and-create-the-directories-to-store-the-database-files"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 自動化モードを一時停止します。 | 自動化が RMAN の復元アクティビティを妨げないように、次のステップに進む前に Amazon RDS Custom DB インスタンスの「[自動化モード](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-managing.html#custom-managing.pausing)」を一時停止する必要があります。AWS コンソールまたは AWS コマンドラインインターフェイス(AWS CLI) コマンドを使用して、オートメーションを一時停止できます (最初に「[AWS CLI を設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」したことを確認してください)。<pre>aws rds modify-db-instance \<br />--db-instance-identifier peoplesoft-fscm-92 \<br />--automation-mode all-paused \<br />--resume-full-automation-mode-minute 360 \<br />--region eu-west-1<br /></pre>一時停止時間を指定するときは、RMAN の復元に十分な時間を確保してください。これはソースデータベースのサイズによって異なるため、360 の値を適宜変更してください。また、自動化の一時停止の合計時間が、データベースのバックアップまたはメンテナンスの時間帯と重ならないようにしてください。 | DBA | 
| PeopleSoft のパラメータファイルを作成して変更する | PeopleSoft 用のファイルを作成および変更するには、Amazon RDS Custom DB インスタンスで作成された標準ファイルを使用します。PeopleSoft に必要なパラメータを追加します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA | 
| スターターデータベースをドロップします。 | 既存の Amazon RDS Custom データベースを削除するには、次のコードを使用します。<pre>$ sqlplus / as sysdba<br />SQL> shutdown immediate;<br />SQL> startup mount exclusive restrict;<br />SQL> drop database;<br />SQL> exit</pre> |  | 
| バックアップから Amazon RDS Custom データベースを復元します。 | 次のスクリプトを使用してデータベースを復元します。このスクリプトは、最初に制御ファイルを復元し、次に EFS マウントに保存されているバックアップピースからデータベース全体を復元します。<pre>#!/bin/bash<br />Dt=`date +'%Y%m%d-%H%M'`<br />BACKUP_LOG="rman-${ORACLE_SID}-$Dt"<br />export TAGDATE=`date +%Y%m%d%H%M`;<br />LOGPATH=/rdsdbdata/scripts/logs<br />rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF<br />restore controlfile from "/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL";<br />alter database mount;<br />run<br />{<br />set newname for database to '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b';<br />SET NEWNAME FOR TEMPFILE 1 TO '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b';<br />RESTORE DATABASE;<br />SWITCH DATAFILE ALL;<br />SWITCH TEMPFILE ALL;<br />RECOVER DATABASE;<br />}<br />EOF<br />sqlplus / as sysdba >> $LOGPATH/rman-${ORACLE_SID}-$Dt<<-EOF<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo01.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo01.log';<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo02.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo02.log';<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo03.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo03.log';<br />alter database clear unarchived logfile group 1;<br />alter database clear unarchived logfile group 2;<br />alter database clear unarchived logfile group 3;<br />alter database open resetlogs;<br />EXIT<br />EOF<br /></pre> | DBA | 

### Secrets Manager からのパスワードの取得、ユーザーの作成、パスワードの変更
<a name="retrieve-passwords-from-secrets-manager-create-users-and-change-passwords"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Secrets Manager からパスワードを取得します。 | このステップは、AWS コンソールまたは AWS CLI を使用して実行できます。以下の手順は、コンソールの手順を示しています。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA | 
| RDSADMIN ユーザーを作成します。 | `RDSADMIN` は、Amazon RDS Custom DB インスタンスのモニタリングとオーケストレーションを行うデータベースユーザーです。スターターデータベースは削除され、ターゲットデータベースは RMAN を使用してソースから復元されたため、Amazon RDS Custom モニタリングが期待どおりに動作するように、復元操作後にこのユーザーを再作成する必要があります。また、`RDSADMIN` ユーザー用に別のプロファイルとテーブルスペースを作成する必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA | 
| マスターユーザーを作成します。 | スターターデータベースは削除され、ターゲットデータベースは RMAN を使用してソースから復元されたため、マスターユーザーを再作成する必要があります。この例では、ユーザーは `admin` という名前になります。<pre>SQL> create user admin identified by <password>;<br />SQL> grant dba to admin</pre> | DBA | 
| システムパスワードを変更します。 | Secrets Manager から取得したパスワードを使用して、システムパスワードを変更します。<pre>SQL> alter user sys identified by xxxxxxxxxxx;<br />SQL> alter user system identified by xxxxxxxxxx;</pre>これらのパスワードを変更しない場合、Amazon RDS Custom は「データベースモニタリングユーザーまたはユーザー認証情報が変更されました」というエラーメッセージを表示します。 | DBA | 

### Amazon RDS Custom と PeopleSoft の TNS エントリを設定します。
<a name="configure-the-tns-entries-for-amazon-rds-custom-and-peoplesoft"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| tnsnames ファイルを設定します。 | アプリケーション層からデータベースに接続するには、アプリケーション層からデータベースに接続できるように `tnsnames.ora` ファイルを設定します。次の例では、`tnsnames.ora` ファイルへのソフトリンクはありますが、デフォルトではファイルは空であることがわかります。 <pre>$ cd /rdsdbbin/oracle/network/admin<br />$ ls -ltr<br />-rw-r--r-- 1 rdsdb database 1536 Feb 14  2018 shrept.lst<br />lrwxrwxrwx 1 rdsdb database   30 Apr  5 13:19 listener.ora -> /rdsdbdata/config/listener.ora<br />lrwxrwxrwx 1 rdsdb database   28 Apr  5 13:19 sqlnet.ora -> /rdsdbdata/config/sqlnet.ora<br />lrwxrwxrwx 1 rdsdb database   30 Apr  5 13:19 tnsnames.ora -> /rdsdbdata/config/tnsnames.ora</pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA | 

### spfile ソフトリンクの作成
<a name="create-the-spfile-softlink"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| spfile ソフトリンクを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA | 

### 移行後の手順を実行する
<a name="perform-post-migration-steps"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スキーマ、接続、メンテナンスタスクを検証する。 | 移行を完了するには、次のタスクを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | DBA | 

## 関連リソース
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-resources"></a>
+ 「[Amazon RDS Custom の操作](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-custom.html)」
+ 「[Oracle 向け Amazon RDS Custom — データベース環境における新しいコントロール機能](https://aws.amazon.com/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/)」(ブログ記事)
+ 「[Amazon RDS Custom for Oracle と Amazon EFS の統合](https://aws.amazon.com/blogs/database/integrate-amazon-rds-custom-for-oracle-with-amazon-efs/)」(ブログ記事)
+ 「[Amazon RDS を Oracle PeopleSoft データベースとして設定](https://d1.awsstatic.com/whitepapers/configuring-amazon-rds-as-peoplesoft-database.pdf)」(AWS ホワイトペーパー)

# Oracle ROWID 機能を AWS の PostgreSQL に移行
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws"></a>

*Amazon Web Services、Rakesh Raghav、Ramesh Pathuri*

## 概要
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-summary"></a>

このパターンでは、Oracle データベースの `ROWID` 疑似列機能を、Amazon Aurora PostgreSQL のAmazon Relational Database Service (Amazon RDS)、Amazon Aurora PostgreSQL　互換バージョン、またはAmazon Elastic Compute Cloud (Amazon EC2)に移行するオプションについて説明しています。

Oracle データベースでは、`ROWID` 疑似列がテーブル内の行の物理アドレスです。この疑似列は、プライマリキーがテーブルに存在しない場合でも行を一意に識別するために使用されます。PostgreSQL にも `ctid` と呼ばれる同様の疑似列がありますが、`ROWID` としては使用できません。「[PostgreSQLのドキュメント](https://www.postgresql.org/docs/current/ddl-system-columns.html)」 で説明されているように、更新される場合、または`ctid` がすべての `VACUUM` のプロセスの後に変更される可能性があります。

PostgreSQLで `ROWID` 疑似列機能を作成する方法が3つあります：
+ `ROWID` の代わりに、テーブルの行を識別するプライマリキー列を使用します。
+ テーブルには論理的なプライマリキー/ユニークキー (複合キーの場合もあります) を使用します。 
+ 自動生成された値を含む列を追加し、`ROWID` を模倣するプライマリキー/ユニークキーにします。

このパターンでは、3 つの実装について順を追って説明し、各オプションの利点と欠点を説明します。

## 前提条件と制限
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ 手続き型言語/PostgreSQL (PL/pgSQL) コーディングの専門知識
+ ソース Oracle データベース
+ Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換クラスター、または PostgreSQL データベースをホストする EC2 インスタンス

**制限事項**
+ このパターンは、`ROWID` の機能の回避策を提供します。PostgreSQL は Oracle データベースの `ROWID` と同等の機能を提供していません。

**製品バージョン**
+ PostgreSQL 11.9 以降

## アーキテクチャ
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-architecture"></a>

**ソーステクノロジースタック**
+ Oracle Database

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換、Amazon RDS for PostgreSQL、または PostgreSQL データベースを備えた EC2 インスタンス

![\[Oracle データベースを AWS で PostgreSQL に変換\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/9a2ce994-4f68-4975-aab2-796cc20a3c82/images/6e7c2ef6-f440-476a-9003-f1f166718e15.png)


**実装オプション**

PostgreSQLで `ROWID` のサポート不足を回避するには、テーブルにプライマリキーまたはユニークインデックス、論理的プライマ的キー、またはID属性があるかどうかに応じて、3つの選択肢があります。どれを選択するかは、プロジェクトのスケジュール、現在の移行フェーズ、アプリケーションとデータベースコードへの依存関係によって異なります。


| 
| 
| オプション | 説明 | 利点 | 欠点 | 
| --- |--- |--- |--- |
| **プライマリキーまたは一意のインデックス** | Oracle テーブルにプライマリキーがある場合、このキーの属性を使用して、行を一意に識別することができます。  | 独自データベースの特徴には依存していません。。プライマリキーフィールドにはインデックスが付けられるため、パフォーマンスへの影響は最小限です。 | プライマリキーフィールドに切り替えるには、`ROWID` に依存するアプリケーションコードやデータベースコードを変更する必要があります。  | 
| **論理プライマリキー/ユニーククキー** | Oracle テーブルに論理プライマリキーがある場合、このキーの属性を使用して行を一意に識別できます。論理プライマリキーは、行を一意に識別できる 1 つまたは複数の属性で構成されますが、制約によってデータベースに適用されません。 | 独自データベースの特徴には依存していません。 | プライマリキーフィールドに切り替えるには、`ROWID` に依存するアプリケーションコードやデータベースコードを変更する必要があります。論理プライマリキーの属性にインデックスが作成されない場合、パフォーマンスに重大な影響があります。ただし、パフォーマンスの問題を防ぐために唯一のインデックスを追加できます。 | 
| **アイデンティティ属性** | Oracle テーブルにプライマリキーがない場合、`GENERATED ALWAYS AS IDENTITY` として追加のフィールドを作成できます。この属性は、テーブルにデータが挿入されるたびに常に唯一の値を生成します。ですから、データ操作言語 (DML) 操作の行を一意に識別するために使用できます。 | 独自データベースの特徴には依存していません。PostgreSQL データベースは、属性を入力し、その一意性を維持します。 | アイデンティティ属性に切り替えるには、」`ROWID` に依存するアプリケーションおよびデータベースコードを変更する必要があります。追加フィールドがインデックスされない場合、パフォーマンスに重大な影響を与えます。ただし、パフォーマンスの問題を避けるためにインデックスを追加できます。 | 

## ツール
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-tools"></a>
+ [PostgreSQLのAmazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) を使用して、 AWSクラウドで PostgreSQLリレーショナルデータベース (DB) のセットアップ、運用、スケーリングができます。
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」は、PostgreSQL デプロイのセットアップ、運用、スケーリングに役立つ、フルマネージド型のACID準拠のリレーショナルデータベースエンジンです。
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。このパターンでは、AWS CLI を使用して **pgAdmin** を介して SQL コマンドを実行できます。
+ 「[pgAdmin](https://www.pgadmin.org/)」は、PostgreSQLのオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) は、ソースデータベーススキーマとカスタムコードの大部分を、ターゲットデータベースと互換性のある形式に自動的に変換することにより、異種データベース移行をサポートします。

## エピック
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-epics"></a>

### ソーステーブルを識別する
<a name="identify-the-source-tables"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| `ROWID` 属性を使用する Oracle テーブルを識別します。 | AWS Schema Conversion Tool (AWS SCT) を使用して、`ROWID` の機能を持つ Oracle テーブルを識別します。詳細については、「[AWS SCTドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.ToPostgreSQL.html#CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID)」を参照してください。-または-Oracle では、`DBA_TAB_COLUMNS` ビューを使用して、`ROWID` 属性を持つテーブルを識別します。これらのフィールドは、10 バイトの英数字を格納するために使用される場合があります。使用方法を決定し、必要に応じて `VARCHAR` フィールドに変換します。 | DBA または開発者 | 
| これらのテーブルを参照するコードを識別します。 | AWS SCT を使用して、移行評価レポートを生成し、`ROWID` より影響された手順を識別します。詳細については、「[AWS SCTドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_AssessmentReport.html)」を参照してください。-または-ソース Oracle データベースでは、`dba_source` のテーブルのテキストフィールドを使用して、`ROWID`の機能を使用するオブジェクトを識別します。 | DBA または開発者 | 

### プライマリキーの使用を決定
<a name="determine-primary-key-usage"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プライマリキーがないテーブルを識別します。 | ソース Oracle データベースで、`DBA_CONSTRAINTS` を使用してプライマリキーがないテーブルを識別します。この情報により、各テーブルの戦略を決定することを支援します。例えば、次のようになります。<pre>select dt.*<br />from dba_tables dt<br />where not exists (select 1<br />                  from all_constraints ct<br />                  where ct.owner = Dt.owner<br />                    and ct.table_name = Dt.table_name<br />                    and ct.constraint_type = 'P'<br />                  )<br />and dt.owner = '{schema}'</pre> | DBA または開発者 | 

### ソリューションを識別して適用
<a name="identify-and-apply-the-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プライマリキーが定義されているテーブル、または論理的なプライマリキーを持つテーブルに変更を適用します。 | 「[追加情報](#migrate-oracle-rowid-functionality-to-postgresql-on-aws-additional)」セクションに示されているアプリケーションコードおよびデータベースコードを変更して、固有のプライマリキーまたは論理プライマリキーを使用してテーブルの行を識別するようにします。 | DBA または開発者 | 
| プライマリキーが定義されていない、または論理プライマリキーがないテーブルにフィールドを追加します。 | タイプ `GENERATED ALWAYS AS IDENTITY` の属性を追加します。「[追加情報](#migrate-oracle-rowid-functionality-to-postgresql-on-aws-additional)」セクションに表示されているアプリケーションとデータベースのコードを変更します。 | DBA または開発者 | 
| 必要に応じてインデックスを追加します。 | SQL のパフォーマンスを向上させるには、追加フィールドまたは論理プライマリキーにインデックスを追加します。 | DBA または開発者 | 

## 関連リソース
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-resources"></a>
+ 「[PostgreSQL CTID](https://www.postgresql.org/docs/current/ddl-system-columns.html)」 (PostgreSQL ドキュメント)
+ 「[生成された列](https://www.postgresql.org/docs/current/ddl-generated-columns.html)」 (PostgreSQL ドキュメント)
+ 「[ROWID 疑似カラム](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ROWID-Pseudocolumn.html#GUID-F6E0FBD2-983C-495D-9856-5E113A17FAF1)」 (Oracle ドキュメンテーション)

## 追加情報
<a name="migrate-oracle-rowid-functionality-to-postgresql-on-aws-additional"></a>

以下のセクションでは、Oracle と PostgreSQL のコード例を示して、これらの 3 つのアプローチを説明します。

「**シナリオ 1: プライマリユニークキーを使用**」 

以下の例では、`testrowid_s1` テーブルを、`emp_id` をプライマリキーとして作成します。

*Orackel コード: *

```
create table testrowid_s1 (emp_id integer, name varchar2(10), CONSTRAINT testrowid_pk PRIMARY KEY (emp_id));
INSERT INTO testrowid_s1(emp_id,name) values (1,'empname1');
INSERT INTO testrowid_s1(emp_id,name) values (2,'empname2');
INSERT INTO testrowid_s1(emp_id,name) values (3,'empname3');
INSERT INTO testrowid_s1(emp_id,name) values (4,'empname4');
commit;

SELECT rowid,emp_id,name FROM testrowid_s1;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3pAAAAAAAMOAAA          1 empname1
AAAF3pAAAAAAAMOAAB          2 empname2
AAAF3pAAAAAAAMOAAC          3 empname3
AAAF3pAAAAAAAMOAAD          4 empname4

UPDATE testrowid_s1 SET name = 'Ramesh' WHERE rowid = 'AAAF3pAAAAAAAMOAAB' ;
commit;

SELECT rowid,emp_id,name FROM testrowid_s1;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3pAAAAAAAMOAAA          1 empname1
AAAF3pAAAAAAAMOAAB          2 Ramesh
AAAF3pAAAAAAAMOAAC          3 empname3
AAAF3pAAAAAAAMOAAD          4 empname4
```

*PostgreSQL コード:*

```
CREATE TABLE public.testrowid_s1
(
    emp_id integer,
    name character varying,
    primary key (emp_id)
);

insert into public.testrowid_s1 (emp_id,name) values 
(1,'empname1'),(2,'empname2'),(3,'empname3'),(4,'empname4');

select emp_id,name from testrowid_s1;
 emp_id |   name   
--------+----------
      1 | empname1
      2 | empname2
      3 | empname3
      4 | empname4

update testrowid_s1 set name = 'Ramesh' where emp_id = 2 ;

select emp_id,name from testrowid_s1;
 emp_id |   name   
--------+----------
      1 | empname1
      3 | empname3
      4 | empname4
      2 | Ramesh
```

**シナリオ 2: 論理プライマリキーを使用**

以下の例では、 `testrowid_s2` テーブルを `emp_id` を配して、論理プライマリキーとして作成します。

*Orackel コード: *

```
create table testrowid_s2 (emp_id integer, name varchar2(10) );
INSERT INTO testrowid_s2(emp_id,name) values (1,'empname1');
INSERT INTO testrowid_s2(emp_id,name) values (2,'empname2');
INSERT INTO testrowid_s2(emp_id,name) values (3,'empname3');
INSERT INTO testrowid_s2(emp_id,name) values (4,'empname4');
commit;

SELECT rowid,emp_id,name FROM testrowid_s2;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3rAAAAAAAMeAAA          1 empname1
AAAF3rAAAAAAAMeAAB          2 empname2
AAAF3rAAAAAAAMeAAC          3 empname3
AAAF3rAAAAAAAMeAAD          4 empname4

UPDATE testrowid_s2 SET name = 'Ramesh' WHERE rowid = 'AAAF3rAAAAAAAMeAAB' ;
commit;

SELECT rowid,emp_id,name FROM testrowid_s2;
ROWID                  EMP_ID NAME
------------------ ---------- ----------
AAAF3rAAAAAAAMeAAA          1 empname1
AAAF3rAAAAAAAMeAAB          2 Ramesh
AAAF3rAAAAAAAMeAAC          3 empname3
AAAF3rAAAAAAAMeAAD          4 empname4
```

*PostgreSQL コード:*

```
CREATE TABLE public.testrowid_s2
(
    emp_id integer,
    name character varying
);

insert into public.testrowid_s2 (emp_id,name) values 
(1,'empname1'),(2,'empname2'),(3,'empname3'),(4,'empname4');

select emp_id,name from testrowid_s2;
 emp_id |   name   
--------+----------
      1 | empname1
      2 | empname2
      3 | empname3
      4 | empname4

update testrowid_s2 set name = 'Ramesh' where emp_id = 2 ;

select emp_id,name from testrowid_s2;
 emp_id |   name   
--------+----------
      1 | empname1
      3 | empname3
      4 | empname4
      2 | Ramesh
```

**シナリオ 3: アイデンティティ属性を使用**

以下の例では、プライマリキーなしで、またアイデンティティ属性を使用して、テーブル `testrowid_s3` を作成します。

*Oracle コード:*

```
create table testrowid_s3 (name varchar2(10));
INSERT INTO testrowid_s3(name) values ('empname1');
INSERT INTO testrowid_s3(name) values ('empname2');
INSERT INTO testrowid_s3(name) values ('empname3');
INSERT INTO testrowid_s3(name) values ('empname4');
commit;

SELECT rowid,name FROM testrowid_s3;
ROWID              NAME
------------------ ----------
AAAF3sAAAAAAAMmAAA empname1
AAAF3sAAAAAAAMmAAB empname2
AAAF3sAAAAAAAMmAAC empname3
AAAF3sAAAAAAAMmAAD empname4

UPDATE testrowid_s3 SET name = 'Ramesh' WHERE rowid = 'AAAF3sAAAAAAAMmAAB' ;
commit;

SELECT rowid,name FROM testrowid_s3;
ROWID              NAME
------------------ ----------
AAAF3sAAAAAAAMmAAA empname1
AAAF3sAAAAAAAMmAAB Ramesh
AAAF3sAAAAAAAMmAAC empname3
AAAF3sAAAAAAAMmAAD empname4
```

*PostgreSQL コード:*

```
CREATE TABLE public.testrowid_s3
(
    rowid_seq bigint generated always as identity,
    name character varying
);

insert into public.testrowid_s3 (name) values 
('empname1'),('empname2'),('empname3'),('empname4');

select rowid_seq,name from testrowid_s3;
 rowid_seq |   name   
-----------+----------
         1 | empname1
         2 | empname2
         3 | empname3
         4 | empname4

update testrowid_s3 set name = 'Ramesh' where rowid_seq = 2 ;

select rowid_seq,name from testrowid_s3;
 rowid_seq |   name   
-----------+----------
         1 | empname1
         3 | empname3
         4 | empname4
         2 | Ramesh
```

# Oracle Database のエラーコードを Amazon Aurora PostgreSQL-Compatible データベースに移行する
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database"></a>

*Amazon Web Services、Sai Parthasaradhi、Veeranjaneyulu Grandhi*

## 概要
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-summary"></a>

このパターンは、事前定義されたメタデータテーブルを使用して Oracle Database のエラーコードを [Amazon Aurora PostgreSQL-Compatible エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)データベースに移行する方法を示しています。

Oracle Database のエラーコードには、対応する PostgreSQL エラーコードが必ずあるとは限りません。このエラーコードの違いにより、ターゲット PostgreSQL アーキテクチャ内の手順または関数の処理ロジックを構成することが困難になる可能性があります。

PL/pgSQL プログラムにとって意味のあるソースデータベースとターゲットデータベースのエラーコードをメタデータテーブルに格納することで、プロセスを簡略化できます。次に、残りのプロセスロジックを続行する前に、有効な Oracle Database エラーコードにフラグを立て、それらを PostgreSQL の同等のエラーコードにマップするようにテーブルを構成します。Oracle Database のエラーコードがメタデータテーブルにない場合、例外が発生してプロセスは終了します。その後、エラーの詳細を手動で確認し、プログラムで必要な場合は新しいエラーコードをテーブルに追加できます。

この構成を使用すると、Amazon Aurora PostgreSQL-Compatible データベースは、ソース Oracle Database と同じ方法でエラーを処理できます。

**注記**  
Oracle Database のエラーコードを正しく処理するように PostgreSQL データベースを構成するには、通常、データベースとアプリケーションコードを変更する必要があります。

## 前提条件と制限
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ インスタンスサービスとリスナーサービスが稼働しているソース Oracle Database
+ 稼働中の Amazon Aurora PostgreSQL-Compatible クラスター
+ Oracle Database に関する知識
+ PostgreSQL データベースに関する知識

## アーキテクチャ
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-architecture"></a>

次の図は、データエラーコードの検証と処理のための Amazon Aurora PostgreSQL-Compatible データベースワークフローの例を示しています。

![\[Aurora PostgreSQL 互換データベースのデータエラーコードの検証と処理。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/82751f40-2fd9-4ce7-ab61-0874552d857b/images/b7ab627e-8f34-4635-8660-93c5c80ce38d.png)


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

1. テーブルには、Oracle Database のエラーコードと分類、およびそれらに対応する PostgreSQL エラーコードと分類が格納されています。このテーブルには、事前に定義された特定のエラーコードが有効かどうかを分類する **valid\$1error** 列が含まれています。

1. PL/pgSQL 関数 (**func\$1processdata**) が例外を投げると、2 つ目の PL/pgSQL 関数 (**error\$1validate**) が呼び出されます。

1. **error\$1validate** 関数は Oracle Database のエラーコードを入力引数として受け入れます。次に、この関数は入力されたエラーコードをテーブルと照合して、エラーがテーブルに含まれているかどうかを確認します。

1. Oracle Database のエラーコードがテーブルに含まれている場合、**error\$1validate** 関数は **TRUE** 値を返し、プロセスロジックは続行されます。エラーコードがテーブルに含まれていない場合、関数は **FALSE** 値を返し、プロセスロジックは例外が発生して終了します。

1. 関数が **FALSE** 値を返すと、アプリケーションの機能責任者がエラーの詳細を手動で確認して、その有効性を判断します。

1. その後、新しいエラーコードは手動でテーブルに追加されるか、追加されないかのどちらかになります。エラーコードが有効でテーブルに追加された場合、**error\$1validate** 関数は次に例外が発生したときに **TRUE** 値を返します。エラーコードが有効ではなく、例外発生時に処理が失敗しなければならない場合、エラーコードはテーブルに追加されません。

**テクノロジースタック**
+ Amazon Aurora PostgreSQL
+ pgAdmin
+ 「Oracle SQL Developer」

## ツール
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-tools"></a>
+ [Amazon Aurora PostgreSQL-Compatible バージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型のACID 準拠リレーショナルデータベースエンジンです。
+ [pgAdmin](https://www.pgadmin.org/) はオープンソースの PostgreSQL 向け管理開発ツールです。データベースオブジェクトの作成、保守、使用を簡素化するグラフィカルインターフェイスを提供します。
+ [Oracle SQL Developer](https://www.oracle.com/in/database/technologies/appdev/sqldeveloper-landing.html) は、従来のデプロイとクラウドデプロイの両方で Oracle Database の開発と管理を簡素化する無料の統合開発環境です。

## エピック
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-epics"></a>

### Oracle Database のエラーコードを Amazon Aurora PostgreSQL-Compatible データベースに移行する
<a name="migrate-oracle-database-error-codes-to-your-amazon-aurora-postgresql-compatible-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Aurora PostgreSQL-Compatible データベースにテーブルを作成します。 | 次の PostgreSQL の[テーブル作成](https://www.postgresql.org/docs/current/sql-createtable.html) コマンドを実行します。<pre>(<br /><br />    source_error_code numeric NOT NULL,<br /><br />    target_error_code character varying NOT NULL,<br /><br />    valid_error character varying(1) NOT NULL<br /><br />); </pre> | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 
| PostgreSQL エラーコードとそれに対応する Oracle Database のエラーコードをテーブルに追加する。 | PostgreSQL の [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) コマンドを実行して、必要なエラーコード値を **error\$1codes** テーブルに追加します。PostgreSQL のエラーコードでは、文字可変データ型 (**SQLSTATE** 値) を使用する必要があります。Oracle のエラーコードでは数値データ型 (**SQLCODE 値**) を使用する必要があります。**Insert ステートメントの例:**<pre>insert into error_codes values (-1817,'22007','Y');<br />insert into error_codes values (-1816,'22007','Y');<br />insert into error_codes values (-3114,'08006','N');</pre>Oracle 固有の Java データベース接続 (JDBC) 例外を catch する場合は、それらの例外を一般的なクロスデータベース例外に置き換えるか、PostgreSQL 固有の例外に切り替える必要があります。 | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 
| PL/pgSQL 関数を作成してエラーコードを検証します。 | PostgreSQL の[関数の作成](https://www.postgresql.org/docs/current/sql-createfunction.html)コマンドを実行して PL/pgSQL 関数を作成します。関数が以下を実行することを確認してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.html) | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 
| PL/pgSQL 関数によって記録された新しいエラーコードを手動で確認する。 | 新しいエラーコードを手動で確認してください。新しいエラーコードがユースケースに当てはまる場合は、PostgreSQL **INSERT** コマンドを実行して **error\$1codes** テーブルに追加します。-または-新しいエラーコードがユースケースに合わない場合は、そのエラーコードをテーブルに追加しないでください。エラーが発生すると、プロセスロジックは引き続き失敗し、例外が発生して終了します。 | PostgreSQL Developer、Oracle、RDS/Aurora for PostgreSQL | 

## 関連リソース
<a name="migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database-resources"></a>

[付録 A. PostgreSQL エラーコード (PostgreSQL ドキュメント](https://www.postgresql.org/docs/11/errcodes-appendix.html))

[データベースエラーメッセージ](https://docs.oracle.com/cd/E11882_01/server.112/e17766/toc.htm) (Oracle Databaseドキュメント)

# AWS SCT と AWS DMS を使用して Amazon EC2 上の SAP ASE を Amazon Aurora PostgreSQL 互換の Amazon Aurora PostgreSQL 互換に移行します
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms"></a>

*Amazon Web Services、Amit Kumar、Ankit Gupta*

## 概要
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-summary"></a>

このパターンでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでホストされている SAP Adaptive Server Enterprise (SAP ASE) データベースを、AWS Schema Conversion Tool (AWS SCT) と AWS Database Migration Service (AWS DMS) を使用して Amazon Aurora PostgreSQL 互換エディションに移行する方法を説明します。このパターンは、保存されたオブジェクトのデータ定義言語 (DDL) 変換とデータ移行の両方に焦点を当てています。

Aurora PostgreSQL 互換では、オンライントランザクション処理 (OLTP) ワークロードがサポートされます。このマネージドサービスは、必要に応じて自動的にスケーリングする構成を提供します。アプリケーションのニーズに基づいて、データベースを自動的に起動、シャットダウン、スケールアップ、またはスケールダウンできます。データベースインスタンスを管理しなくても、クラウドでデータベースを実行できます。Aurora PostgreSQL 互換では、使用頻度が低く、断続的、または予測不可能なワークロードのための、コスト効率の高いオプションが提供されています。

移行プロセスは主に 2 つのフェーズで構成されています。
+ AWS SCT を使用したデータベーススキーマの変換
+ AWS DMS を使用してデータを移行する

両方のフェーズの詳細な手順は、「*エピック*」セクションに記載されています。SAP ASE データベースで AWS DMS を使用する場合に固有の問題のトラブルシューティングについては、AWS DMS ドキュメントの「[SAP ASE に関する問題のトラブルシューティング](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.SAP)」を参照してください。

## 前提条件と制限
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ サーバー、データベース、リスナーサービスが稼働している EC2 インスタンス上のソース SAP ASE データベース
+ ターゲット Aurora PostgreSQL-Compatible データベース

**制限事項**
+ 接続のポート番号は、必ず5432にします。
+ 「[huge\$1pages](https://www.postgresql.org/docs/9.6/static/runtime-config-resource.html)」機能はデフォルトでオンになっていますが、変更できます。
+ ポイントインタイムリカバリ (PITR) の精度は 5 分です。
+ クロスリージョンレプリケーションは現在使用できません。
+ Aurora データベースの最大ストレージサイズは 128 TiB です。
+ 最大 15 つのリードレプリカを作成できます。
+ テーブルサイズの制限は Aurora クラスターボリュームのサイズによってのみ制約されるため、Aurora PostgreSQL 互換 DB クラスターの最大テーブルサイズは 32 TiB です。大きいテーブルの分割など、テーブル設計のベストプラクティスにしたがうことをお勧めします。

**製品バージョン**
+ ソースデータベース：AWS DMS は現在 SAP ASE 15、15.5、15.7、16.x をサポートしています。SAP ASE バージョンサポートの最新情報については、「[AWS DMS ユーザーガイド](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)」を参照してください。
+ ターゲットデータベース：PostgreSQL 9.4 移行 (バージョン 9.x), 10.x, 11.x, 12.x, 13.x, and 14.x. サポートされている最新の PostgreSQL バージョンについては、「[AWS DMS ユーザーガイド](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)」を参照してください。
+ Amazon Aurora 1.x 以降。最新情報については、Aurora ドキュメントの「[Aurora PostgreSQL 互換リリースとエンジンバージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html)」を参照してください。

## アーキテクチャ
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-architecture"></a>

**ソーステクノロジースタック**
+ Amazon EC2 で稼働している SAP ASE データベース

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換 データベース

**移行アーキテクチャ**

![\[AWS SCT と AWS DMS を使用して SAP ASE データベースを Aurora PostgreSQL 互換に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/07fbdea1-0242-40ae-8e5f-2ce4a620a047/images/a3b018f3-2e7b-4c37-a218-870c56132acb.png)


## ツール
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-tools"></a>
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」 は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型で ACID 準拠のリレーショナルデータベースエンジンです。
+ 「[AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」は、ソースデータベーススキーマとほとんどのカスタムコードをターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベース移行をサポートします。
+ 「[AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」では、複数のソースとターゲットのデータベースがサポートされています。詳細については、AWS DMS ドキュメントの「[データ移行のソース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html)」と「[データ移行のターゲット](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html)」を参照してください。最も包括的なバージョンと機能サポートのため、最新バージョンの AWS DMS を使用することをお勧めします。 

## エピック
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-epics"></a>

### 環境をセットアップする
<a name="set-up-the-environment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソース EC2 インスタンスでネットワークアクセスを設定します。 | ソース SAP ASE データベースをホストする EC2 インスタンスにセキュリティグループを設定します。手順については、Amazon EC2 ドキュメントの Linux インスタンス用の Linux インスタンス用の「[Amazon EC2 セキュリティグループ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html?icmpid=docs_ec2_console)」を参照してください。 | システム管理者 | 
| Aurora PostgreSQL 互換 DB クラスターを作成します。 | ターゲットデータベース用の Aurora PostgreSQL 互換クラスターをインストール、設定、起動します。詳細については、Auroraドキュメントの[Amazon Aurora DB クラスターに接続する](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html)を参照してください。 | DBA | 
| ターゲット DB クラスターの認可を設定します。 | ターゲットデータベースのセキュリティグループとファイアウォールを設定します。手順については、Aurora ドキュメントの「[Amazon Aurora DB クラスターの作成](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html)」を参照してください。 | DBA、システム管理者 | 

### AWS SCT によるデータベーススキーマの変換
<a name="convert-your-database-schema-with-aws-sct"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を起動します。 | 「[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_GettingStarted.html)」の指示に従って AWS SCT を起動します。AWS SCT には、SAP ASEソースデータベースのデータベーススキーマをターゲット Aurora PostgreSQL-Compatible インスタンスと互換性のある形式に自動変換するための、プロジェクトベースのユーザーインターフェイスが用意されています。 | DBA | 
| AWS SCT エンドポイントを作成します。 | ソースSAP ASEデータベースとターゲット PostgreSQLデータベースの エンドポイントを作成します。手順については、[AWS SCTドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AddServers)を参照してください。 | DBA | 
| 評価レポートを生成します。 | データベース移行評価レポートを作成して移行を評価し、互換性のないオブジェクトや機能を検出します。手順については、[AWS SCTドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport)を参照してください。 | DBA | 
| スキーマを変換します。 | 「[AWS SCT ドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html)」の指示に従ってデータベーススキーマを変換します。 | DBA | 
| データベースオブジェクトを検証します。 | AWS SCT がデータベースオブジェクトを変換できない場合、その名前とその他の詳細を識別します。これらのオブジェクトは手動で変換する必要があります。これらの不一致を特定するには、AWS ブログ記事「[SAP ASE から Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL に移行した後のデータベースオブジェクトの検証](https://aws.amazon.com/blogs/database/validate-database-objects-after-migrating-from-sap-ase-to-amazon-rds-for-postgresql-or-amazon-aurora-postgresql/)」の手順に従ってください。 | DBA | 

### AWS DMS の移行を分析する
<a name="analyze-the-aws-dms-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンを検証します。 | SAP ASE データベースのバージョンで AWS DMS との互換性を確認してください。詳細については、AWS DMS ドキュメントの「[AWS DMS のソース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html#CHAP_Introduction.Sources.title)」と「[AWS DMS のターゲット](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html)」を参照してください。 | DBA | 
| ストレージタイプと容量の要件を特定します。 | ソースデータベースのサイズに基づいて、ターゲットデータベースの適切なストレージ容量を選択します。 | DBA、システム管理者 | 
| レプリケーションインスタンスのインスタンスタイプ、容量、その他の機能を選択します。 | 要件を満たすインスタンスタイプ、容量、ストレージ機能、ネットワーク機能を選択します。ガイダンスについては、AWS DMS ドキュメントの「[移行に適した AWS DMS レプリケーションインスタンスの選択](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Types.html)」を参照してください。 | DBA、システム管理者 | 
| ネットワークアクセスのセキュリティ要件を特定する。 | ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。AWS DMS ドキュメントの「[レプリケーションインスタンス用のネットワークのセットアップ](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html)」のガイダンスに従ってください。 | DBA、システム管理者 | 

### データを移行する
<a name="migrate-the-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS に移行タスクを作成してデータを移行します。 | データ移行するには、タスクを作成し、[AWS DMSドキュメントの手順](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.Creating.html)に従います。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。 | DBA | 
| データを検証します。 | データがソースデータベースからターゲットデータベースに正確に移行されたことを確認するため、AWS DMS ドキュメントに記載されている「[データ検証ガイドライン](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)」に従ってください。 | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略を特定する。 | アプリケーションをクラウドに移行するための「[7 つの戦略 (7R)](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/planning-phase.html)」から 1 つを選択してください。 | DBA、アプリ所有者、システム管理者 | 
| アプリケーション移行戦略に従ってください。 | ターゲットデータベースの DNS 接続詳細の更新や動的クエリの更新など、アプリケーションチームが指定したデータベースタスクを完了します。  | DBA、アプリ所有者、システム管理者 | 

### ターゲットデータベースにカットオーバーする
<a name="cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 | ソースデータベースからターゲットデータベースへの接続を切り替えます。詳細については、「*リレーショナルデータベースの移行戦略*」の「[カットオーバー](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/cut-over.html)」セクションを参照してください。 | DBA、アプリ所有者、システム管理者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 | すべての移行タスク、レプリケーションインスタンス、エンドポイント、およびその他の AWS SCT および AWS DMS リソースを終了します。詳細については、[AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.Replication.html#CHAP_GettingStarted.Replication.Deleting)を参照してください。 | DBA、システム管理者 | 
| プロジェクト文書を確認して検証する。 | プロジェクト文書のすべてのステップを検証して、すべてのタスクが正常に完了したことを確認します。 | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを閉じます。 | 移行プロジェクトを閉じて、フィードバックを送ってください。 | DBA、アプリ所有者、システム管理者 | 

## 関連リソース
<a name="migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms-resources"></a>

**リファレンス**
+ [Amazon RDS の PostgreSQL DB インスタンスに対して暗号化された接続を有効にする](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/enable-encrypted-connections-for-postgresql-db-instances-in-amazon-rds.html)（AWS 規範ガイダンス）
+ [pg\$1transport を使用して 2 つの Amazon RDS DB インスタンス間でPostgreSQL データベースを転送する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg_transport.html)（AWS 規範ガイダンス）
+ [Amazon Aurora の価格設定](https://aws.amazon.com/rds/aurora/pricing/)
+ [Amazon Aurora PostgreSQL 互換エディションのベストプラクティス](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraPostgreSQL.BestPractices.html) (Amazon Aurora ドキュメント)
+ [AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [SAP ASE データベースを &DMS; のソースとして使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SAP.html)

**チュートリアルと動画**
+ [AWS Database Migration Service の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [AWS Database Migration Service](https://www.youtube.com/watch?v=zb4GcjEdl8U)（動画）

# ACM を使用して Windows SSL 証明書をApplication Load Balancer に移行
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm"></a>

*Amazon Web Services、Chandra Sekhar Yaratha、Igor Kovalchuk*

## 概要
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-summary"></a>

このパターンでは、AWS Certificate Manager (ACM) を使用して、オンプレミスサーバーでホストされているウェブサイトまたは Microsoft インターネットインフォメーションサービス (IIS) 上の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから既存のセキュアソケットレイヤー (SSL) 証明書を移行するためのガイダンスを提供します。その後、SSL 証明書は AWS の Elastic Load Balancing で使用できます。

SSL はデータを保護し、本人確認を行い、検索エンジンのランキングを向上させ、ペイメントカード業界データセキュリティ基準 (PCI DSS) の要件を満たすのに役立ち、顧客の信頼を高めます。これらのワークロードを管理する開発者や IT チームは、IIS サーバーや Windows サーバーなどの ウェブアプリケーションとインフラストラクチャがベースラインポリシーに準拠し続けることを望んでいます。

このパターンでは、既存の SSL 証明書を Microsoft IIS から手動でエクスポートし、個人情報交換 (PFX) 形式から ACM がサポートするプライベート拡張メール (PEM) 形式に変換し、AWS アカウントの ACM にインポートします。また、アプリケーションのApplication Load Balancer を作成し、インポートした証明書を使用するようにApplication Load Balancer を設定する方法についても説明します。その後、HTTPS 接続はApplication Load Balancer で終了されるため、ウェブサーバー上で追加の構成オーバーヘッドが発生することはありません。詳細については、 の[Create an HTTPS Listener for Your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)を参照してください。

Windows サーバーは.pfx または.p12 ファイルを使用して、パブリックキーファイル (SSL 証明書) と固有のプライベートキーファイルを格納します。認証局 (CA) が公開キーファイルを提供します。サーバーを使用して、証明書署名要求 (CSR) が作成された関連する秘密キーファイルを生成します。

## 前提条件と制限
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ ターゲットが使用する各アベイラビリティーゾーンで少なくとも 1 つのプライベートサブネットと 1 つのパブリックサブネットを持つ AWS の仮想プライベートクラウド (VPC)
+ Windows サーバー2012 以降で実行されている IIS バージョン 8.0 以降
+ IIS で実行されているウェブアプリケーション
+ IIS サーバーへの管理者アクセス。

## アーキテクチャ
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-architecture"></a>

**ソーステクノロジースタック**
+ SSL を使用した IISウェブサーバーの実装により、データが暗号化された接続 (HTTPS) で安全に送信されるようにします。

**ソースアーキテクチャ**

![\[ACM を使用して Windows SSL 証明書をApplication Load Balancer に移行するためのソースアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/cad6e465-da39-4819-970e-10e1c30e0a1f/images/e63efb6f-205b-4e20-a043-6bc954470191.png)


**ターゲットテクノロジースタック**
+ AWS アカウントの ACM 証明書
+ インポートされた証明書を使用するように設定されたApplication Load Balancer
+ プライベートサブネット内の Windows サーバーインスタンス

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

![\[ACM を使用して Windows SSL 証明書をApplication Load Balancer に移行するためのターゲットアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/cad6e465-da39-4819-970e-10e1c30e0a1f/images/45ac7fba-fbad-4c74-9b1f-80ca212dae08.png)


 

## ツール
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-tools"></a>
+ [AWS Certificate Manager (ACM) は、 ウェブサイトやアプリケーションを保護するパブリックおよびプライベート SSL/TLS X.509 証明書およびキーの作成、保存、更新に伴う](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)複雑さに対処します。
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) は、受信するアプリケーションまたはネットワークのトラフィックを複数のターゲットに分散します。例えば、1 つ以上のアベイラビリティーゾーンの EC2 インスタンス、コンテナ、IP アドレスにトラフィックを分散できます。

## ベストプラクティス
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-best-practices"></a>
+ HTTP から HTTPS へのトラフィックリダイレクトを強制します。
+ Application Load Balancer のセキュリティグループを適切に設定して、特定のポートへのインバウンドトラフィックのみを許可します。
+ 複数のアベイラビリティーゾーンで EC2 インスタンスを起動し、高可用性を確保します。
+ IP アドレスの代わりに、アプリケーションロードバランサーの DNS 名を指すようにアプリケーションのドメインを設定します。
+ Application Load Balancer にアプリケーションレイヤーの[ヘルスチェック](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) が設定されていることを確認します。
+ ヘルスチェックのしきい値を設定します。
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) を使用してApplication Load Balancer をモニタします。

## エピック
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-epics"></a>

### .pfx ファイルをエクスポート
<a name="export-a-pfx-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Windows サーバーから.pfx ファイルをエクスポートします。 | Windows Server のオンプレミスの IIS マネージャーから SSL 証明書を.pfx ファイルとしてエクスポートするには：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html)これで、.pfx ファイルが指定した場所とパスに保存されるはずです。 | システム管理者 | 

### PFX でエンコードされた証明書を PEM 形式に変換します。
<a name="convert-the-pfx-encoded-certificate-to-pem-format"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| OpenSSL ツールキットをダウンロードし、インストールします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html) | システム管理者 | 
| PFX でエンコードされた証明書を PEM 形式に変換します。 | 次の手順では、PFX でエンコードされた署名付き証明書ファイルを PEM 形式の 3 つのファイルに変換します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html)PFX でエンコードされた証明書を変換するには：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.html) | システム管理者 | 

### ACM に証明書をインポートします。
<a name="import-a-certificate-into-acm"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 証明書をインポートするように準備します。 | [ACM コンソール](https://console.aws.amazon.com/acm/home) で**証明書のインポート**を選択します。 | クラウド管理者 | 
| 証明書本文を提供します。 | **証明書本文**の場合、インポートする PEM エンコードされた証明書を貼り付けます。このエピックの他のタスクで説明されているコマンドと手順の詳細については、ACM ドキュメントの[証明書のインポート](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html) を参照してください。 | クラウド管理者 | 
| 証明書のプライベートキーを指定します。 | **証明書のプライベートキー**の場合、PEM エンコードされ、証明書のパブリックキーに一致する暗号化されていないプライベートキーを貼り付けます。 | クラウド管理者 | 
| 証明書チェーン｡ | 証明書チェーンでは、`CertificateChain.pem` ファイルに保存されている PEM エンコードされた**証明書チェーン**を貼り付けます。 | クラウド管理者 | 
| 証明書をインポートする | **レビューとインポート**を選択します。証明書に関する情報が正しいことを確認し、**インポート**を選択します。 | クラウド管理者 | 

### Application Load Balancer の作成
<a name="create-an-application-load-balancer"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ロードバランサーとリスナーを作成し、設定します。 | [Elastic Load Balancing ドキュメント](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) の指示に従って、ターゲットグループを設定し、ターゲットを登録し、Application Load Balancer とリスナーを作成します。ポート 443 に 2 つ目のリスナー (HTTPS) を追加します。 | クラウド管理者 | 

## トラブルシューティング
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Windows PowerShell は、システムパスに OpenSSL コマンドを追加した後でも、そのコマンドを認識しません。 | `$env:path` をチェックして、OpenSSL バイナリの場所が含まれていることを保証します。できない場合、PowerShell で次のコマンドを実行します。<pre>$env:path = $env:path + ";C:\OpenSSL-Win64\bin"</pre> | 

## 関連リソース
<a name="migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm-resources"></a>

**ACM への証明書のインポート**
+ [ACM コンソール](https://console.aws.amazon.com/acm/home)
+ [インポートのための証明書とキー形式](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-format.html)
+ [証明書のインポート](https://aws.amazon.com/blogs/security/how-to-import-pfx-formatted-certificates-into-aws-certificate-manager-using-openssl/)
+ [AWS 証明書マネージャーユーザーガイド](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)

**Application Load Balancer の作成**
+ [Application Load Balancer の作成](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)
+ [Application Load Balancer のユーザーガイド](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)

# メッセージキューを Microsoft Azure Service Bus から Amazon SQS に移行
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs"></a>

*Amazon Web Services、Nisha Gambhir*

## 概要
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-summary"></a>

このパターンでは、.NET Framework、.NET Core ウェブまたはコンソールアプリケーションを Microsoft Azure Service Bus キューメッセージングプラットフォームを使用していたものから Amazon Simple Queue Service (Amazon SQS) に移行する方法を説明します。

アプリケーションはメッセージングサービスで、他のアプリケーションとの間でデータを送受信します。これらのサービスは、分離された拡張性の高いマイクロサービス、分散システム、サーバーレスアプリケーションをクラウド上に構築するのに役立ちます。

Azure Service Bus キューは、キューイングとパブリッシュ/サブスクライブメッセージングをサポートする幅広い Azure メッセージングインフラストラクチャの一部となっています。 

Amazon SQS は、フルマネージド型のメッセージキューイングサービスであり、マイクロサービス、分散システム、およびサーバーレスアプリケーションのデカップリングとスケーリングを容易にします。Amazon SQS は、メッセージ指向ミドルウェアの管理と運用に伴う複雑さとオーバーヘッドを排除し、開発者が差別化作業に集中できるようにします。Amazon SQS を使用すると、メッセージを失い、または他のサービスを利用する必要がなく、ソフトウェアコンポーネント間でメッセージを送受信、保存できます。

## 前提条件と制限
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-prerequisites-and-limitations"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ AAzure Service Bus キューを使用する .NET Framework、.NET Core ウェブまたはコンソールアプリケーション (サンプルコードが添付されています)

**製品バージョン**
+ .NET Framework 3.5 以降または .NET Core 1.0.1、2.0.0 以降

## アーキテクチャ
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-architecture"></a>

**ソーステクノロジースタック**
+ Azure Service Busキューを使用してメッセージを送信する .NET (コアまたはフレームワーク) ウェブアプリケーションまたはコンソールアプリケーション

 

**ターゲットテクノロジースタック**
+ Amazon SQS

## ツール
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-tools"></a>

**ツール**
+ Microsoft Visual Studio

**Code**

Amazon SQS のために、AWS Identity and Access management (IAM) ポリシーを作成するには:

1. AWS マネジメントコンソールにサインインして、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

2. 左側のナビゲーションペインで、[**Policies**] (ポリシー)、[**Create policy**] (ポリシーの作成) の順にクリックします。

3. **[JSON]** タブを選択し、以下のコードを貼り付けます。

```
{
   "Version": "2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
            "sqs:DeleteMessage",
            "sqs:GetQueueUrl",
            "sqs:ChangeMessageVisibility",
            "sqs:SendMessageBatch",
            "sqs:ReceiveMessage",
            "sqs:SendMessage",
            "sqs:GetQueueAttributes",
            "sqs:ListQueueTags",
            "sqs:ListDeadLetterSourceQueues",
            "sqs:DeleteMessageBatch",
            "sqs:PurgeQueue",
            "sqs:DeleteQueue",
            "sqs:CreateQueue",
            "sqs:ChangeMessageVisibilityBatch",
            "sqs:SetQueueAttributes"
         ],
         "Resource": "arn:aws:sqs:*:<AccountId>:*"
      },
      {
         "Sid": "VisualEditor1",
         "Effect": "Allow",
         "Action": "sqs:ListQueues",
         "Resource": "*"
      }
   ]
}
```

4. **[ポリシーの確認]** を選択し、[名前] に入力して **[ポリシーの作成]** を選択します。

5. 新しく作成したポリシーを既存の IAM ロールにアタッチするか、新しいロールを作成します。

## エピック
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-epics"></a>

### AWS で Amazon SQS をセットアップ
<a name="set-up-amazon-sqs-in-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon SQS IAMポリシーを作成します。 | Amazon SQS へのアクセスを実現する IAM ポリシーを作成します。サンプルポリシーについては、「コード」セッションを参照してください。 | システムエンジニア | 
| AWS プロファイルを作成します。 | AWS Tools for PowerShell コマンド「Set-AWScredential」を実行して、新しいプロファイルを作成します。アクセスキーとシークレットキーは、指定したプロファイル名の下のデフォルトの認証情報ファイルに保存されます。前に作成した Amazon SQS ポリシーをこのアカウントにリンクします。アクセスキー ID とシークレットアクセスキーを保管します。これらは次のステップで必要になります。 | システムエンジニア | 
| SQS キューを作成します。 | 標準キューまたは先入れ先出し (FIFO) キューを作成できます。手順については、「参考文献」セクションのリンクを参照してください。 | システムエンジニア | 

### .NET アプリケーションコードを見直してください。
<a name="revise-your-net-application-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS Toolkit for Visual Studio をインストールします。 | このツールキットは Microsoft Visual Studio の拡張機能で、.NET アプリケーションを AWS で簡単に構築してデプロイできます。インストールと使用方法については、「参考文献」セクションのリンクを参照してください。 | アプリケーション開発 | 
| AWSSDK.SQS NuGet パッケージをインストールします。 | AWSSDK.SQS をインストールするには、Visual Studio で［Manage NuGet Package］を選択するか、［Install-Package AWSSDK.SQS］コマンドを実行します。 | アプリケーション開発 | 
| .NET アプリケーションに AWSCredentials オブジェクトを作成します。 | 添付ファイルのサンプルアプリケーションは、AWScredentials から継承する BasicAWScredentials オブジェクトを作成する方法を示しています。先ほど使用したアクセスキー ID とシークレットアクセスキーを使用することも、実行時にユーザープロファイルの一部として.aws フォルダーからオブジェクトにこれらを選択させることもできます。 | アプリケーション開発 | 
| SQS クライアントオブジェクトを作成します。 | .NET フレームワーク用の SQS クライアントオブジェクト (AmazonSQSClient) を作成します。これは Amazon.SQS ネームスペースの一部です。このオブジェクトは Microsoft.Azure.ServiceBus ネームスペースの一部である iQueueClient の代わりに必要です。 | アプリケーション開発 | 
| SendMessageAsync メソッドを呼び出して SQS キューにメッセージを送信します。 | メッセージをキューに送信するコードを変更して AmazonSQSClient.SendMessageAsync メソッドを使用します。詳細については、添付のコードサンプルを参照してください。 | アプリケーション開発 | 
| SQS キューからメッセージを受信するには、ReceiveMessageAsync メソッドを呼び出します。 | メッセージを受信するコードを変更して AmazonSQSClient.ReceiveMessageAsync メソッドを使用します。詳細については、添付のコードサンプルを参照してください。 | アプリケーション開発 | 
| DeleteMessageAsync メソッドを呼び出して SQS キューからメッセージを削除します。 | メッセージを削除するには、コードを QueueClient.CompleteAsync メソッドから AmazonSQSClient.DeleteMessageAsync メソッドに変更します。詳細については、添付のコードサンプルを参照してください。 | アプリケーション開発 | 

## 関連リソース
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-related-resources"></a>
+ [AWS SDK for .NET 開発者ガイド](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html)
+ 「[Amazon SQS を使用したメッセージング](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sqs-apis-intro.html)」
+ 「[AWS SDK for .NET による Amazon SQS キューの作成と使用](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/how-to-sqs.html)」
+ [Amazon SQS メッセージの送信](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/SendMessage.html)
+ 「[Amazon SQS キューからメッセージを受信する](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/ReceiveMessage.html)」
+ 「[Amazon SQS キューからメッセージを削除する](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/DeleteMessage.html)」
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html)

## 追加情報
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-additional-information"></a>

このパターンには 2 つのサンプルアプリケーションを含んでいます (添付ファイルのセクションを参照)。
+ **AzureSbTestApp** には Azure Service Bus キューを使用するコードが含まれています。
+ **AmazonSqsTestApp** は Amazon SQS を使用します。これは.NET Core 2.2 を使用するコンソールアプリケーションで、メッセージの送受信の例を含んでいます。

注記:
+ queueClient は iQueueClient のオブジェクトで、Microsoft.Azure.ServiceBusネームスペース (Microsoft.Azure.ServiceBus NuGet パッケージに含まれている) の一部です。
+ amazonSQSClient は Amazon.SQS ネームスペース (AWSSDK.SQS NuGet パッケージに含まれている) の一部である AmazonSQSClient のオブジェクトです。
+ コードが実行されている位置 (EC2 で実行されているかどうかなど) によっては、ロールに SQS キューに書き込む権限が必要です。

## アタッチメント
<a name="attachments-25334709-7000-4f60-87ed-ea41acb41a99"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/25334709-7000-4f60-87ed-ea41acb41a99/attachments/attachment.zip)」

# Oracle Data Pump と AWS DMS を使用して Oracle JD Edwards EnterpriseOne データベースを AWS に移行します
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms"></a>

*Amazon Web Services、Thanigaivel Thirumalai*

## 概要
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-summary"></a>

JD Edwards EnterpriseOne データベースを 「[Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」) に移行して実行できます。データベースを Amazon RDS に移行すると、AWS がバックアップタスクと高可用性セットアップを処理するので、お客様は EnterpriseOne アプリケーションとその機能のメンテナンスに集中できます。移行プロセス中に考慮すべき主な要因の包括的なリストについては、AWS 規範ガイダンスの「[Oracle データベースの移行戦略](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html)」を参照してください。

EnterpriseOne データベースを移行するには、次のようないくつかの方法があります。
+ スキーマとテーブルの作成には Oracle ユニバーサルBatch エンジン (UBE) R98403 を使用し、移行には AWS Database Migration Service (AWS DMS) を使用
+ スキーマとテーブルの作成には DB ネイティブツールを使用し、移行には AWS DMS を使用する
+ 既存データの移行 (全ロード) には DB ネイティブツールを使用し、変更データキャプチャ (CDC) タスクには AWS DMS を使用する

このパターンは 3 番目のオプションを対象としています。「[AWS DMS](https://aws.amazon.com/dms)」 とその CDC 特徴量を備えた Oracle Data Pump を使用して、オンプレミスの EnterpriseOne データベースを Oracle 向けの Amazon RDS for Oracle に移行する方法について説明します。

「[Oracle JD Edwards EnterpriseOne](https://www.oracle.com/applications/jd-edwards-enterpriseone/)」は、製品や物理的資産の製造、構築、流通、サービス、管理を行う組織向けのエンタープライズリソースプランニング (ERP) ソリューションです。JD Edwards EnterpriseOne は、さまざまなハードウェア、オペレーティングシステム、データベースプラットフォームをサポートしています。

JD Edwards EnterpriseOne などの重要な ERP アプリケーションを移行する際には、ダウンタイムを最小限に抑えることが重要です。AWS DMS では、ソースデータベースからターゲットデータベースへのフルロードと連続レプリケーションの両方をサポートして、ダウンタイムを最小限に抑えます。AWS DMS では、移行のリアルタイムモニタリングとログ記録も提供されるため、ダウンタイムの原因となる可能性のある問題を特定して解決するのに役立ちます。

AWS DMS で変更を複製する場合、データベースログから変更を読み取る開始点として、時刻またはシステム変更番号 (SCN) を指定する必要があります。AWS DMS がこれらの変更に確実にアクセスできるようにするには、指定された期間 (15 日を推奨) サーバー上でこれらのログにアクセスできるようにしておくことが重要です。

## 前提条件と制限
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-prereqs"></a>

**前提条件**
+ お客様の AWS クラウド環境にターゲットデータベースとしてプロビジョニングされた Amazon RDS for Oracle データベース。手順については、「[Amazon ECR ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html)」を参照してください。
+ オンプレミスで、または AWS の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行されている EnterpriseOne データベース。
**注記**  
このパターンはオンプレミスから AWS への移行を目的としていますが、EC2 インスタンスの EnterpriseOne データベースを使用してテストされています。オンプレミス環境から移行する予定の場合は、適切なネットワーク接続を設定する必要があります。
+ スキーマの詳細です。EnterpriseOne に移行する予定の Oracle データベーススキーマ (DV920 など) を特定します。移行プロセスを開始する前に、スキーマに関する以下の詳細情報を収集します。
  + スキーマサイズ
  + オブジェクトタイプごとのオブジェクトの数
  + 無効なオブジェクトの数

機能制限
+ ターゲット Amazon RDS for Oracle データベースで必要なスキーマを作成する必要があります。AWS DMS はそれらのスキーマを自動的に作成しません。(「[エピック](#migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-epics)」 セクションでは、Data Pump を使用してスキーマをエクスポートおよびインポートする方法について説明しています)。ターゲットの Oracle データベースに対して、スキーマ名がすでに存在している必要があります。ソーススキーマからのテーブルがユーザーまたはスキーマにインポートされ、 AWS DMS が管理者、またはシステムアカウントを使用して、ターゲットインスタンスに接続します。複数のスキーマを移行するには、複数のレプリケーションタスクを作成します。また、データをターゲットインスタンス上の異なるスキーマに移行することもできます。これを行うには、AWS DMS テーブルマッピングのスキーマ変換ルールを使用します。
+ このパターンはデモデータセットでテストされています。データセットとカスタマイズの互換性を検証することをお勧めします。
+ このパターンでは、Microsoft Windows 上で実行されている EnterpriseOne データベースを使用します。ただし、AWS DMS でサポートされている他のオペレーティングシステムでも同じプロセスを使用できます。

## アーキテクチャ
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-architecture"></a>

次の図は、Oracle データベースで EnterpriseOne をソースデータベースとして、Amazon RDS for Oracle データベースをターゲットデータベースとして実行しているシステムを示しています。データはソース Oracle データベースからエクスポートされ、Oracle Data Pump を使用してターゲット Amazon RDS for Oracle データベースにインポートされ、AWS DMS を使用して CDC 更新用に複製されます。

![\[Diagram showing data replication from on-premises Oracle to Amazon RDS using AWS DMS.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/c8ec3789-f80e-4f3a-a3f4-72a4541316b0/images/4e3e3477-2fe0-4a5d-b95e-05a8aafe8b68.png)


1. Oracle Data Pump はソースデータベースからデータを抽出し、そのデータは Amazon RDS for Oracle データベースターゲットに送信されます。

1. CDC データは、ソースデータベースから AWS DMS のソースエンドポイントに送信されます。

1. ソースエンドポイントから AWS DMS レプリケーションインスタンスにデータが送信され、そこでレプリケーションタスクが実行されます。

1. レプリケーションタスクが完了すると、データは AWS DMS のターゲットエンドポイントに送信されます。

1. ターゲットエンドポイントから、データは Amazon RDS for Oracle データベースインスタンスに送信されます。

## ツール
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-tools"></a>

AWS サービス
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ 「[OracleのAmazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)」 によって、AWS クラウドで Oracleリレーショナルデータベースをセットアップ、運用、スケーリングができます。

**その他のサービス**
+ 「[Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm)」 を使用すると、データやメタデータをあるデータベースから別のデータベースに高速に移動できます。

## ベストプラクティス
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-best-practices"></a>

LOB への移行

ソースデータベースに、ターゲットデータベースに移行する必要のあるラージバイナリオブジェクト (LOB) が含まれている場合、AWS DMS には次のオプションがあります。
+ **フル LOB モード** – サイズにかかわらず、AWS DMS はすべての LOB をソースからターゲットに移行します。移行は他のモードよりも遅くなりますが、データが切り捨てられないという利点があります。パフォーマンスを向上させるには、新しいレプリケーションインスタンスに別のタスクを作成して、LOB が数メガバイトを超えるテーブルを移行できます。
+ **制限付き LOB モード** – LOB 列データの最大サイズを指定します。これにより、AWS DMS はリソースを事前に割り当て、LOB を一括適用できます。LOB 列のサイズがタスクで指定されたサイズを超える場合、AWS DMS はデータを切り捨てて AWS DMS ログファイルに警告を送信します。LOB データサイズが制限された LOB サイズ内にある場合、制限付き LOB モードを使用することでパフォーマンスを向上させることができます。
+ **インライン LOB モード** – 小さい LOB と大きな LOB の両方をレプリケートすることで、データを切り捨てたり、タスクのパフォーマンスを低下させたりすることなく LOB を移行できます。まず、`InlineLobMaxSize` パラメータの値を指定します。この値は、フル LOB モードがに設定されている場合に `true` のみ使用できます。AWS DMS タスクでは、小さな LOB をインラインで転送するため、効率が向上します。AWS DMS では、ソーステーブルからルックアップを実行して、大きな LOB を移行します。ただし、インライン LOB モードは全ロードフェーズでのみ機能します。

シーケンス値の生成

AWS DMS CDC プロセス中、インクリメンタルシーケンス番号はソースデータベースから複製されません。シーケンス値の不一致を避けるには、すべてのシーケンスのソースから最新のシーケンス値を生成し、それをターゲット Amazon RDS for Oracle データベースに適用する必要があります。

AWS Secrets Manager

認証情報を管理しやすくするために、ブログ記事「[AWS Secrets Manager を使用して AWS DMS エンドポイントの認証情報を管理する](https://aws.amazon.com/blogs/database/manage-your-aws-dms-endpoint-credentials-with-aws-secrets-manager/)」の手順に従うことをお勧めします。

パフォーマンス
+ **レプリケーションインスタンス** – 最適なインスタンスサイズを選択するためのガイダンスについては、AWS DMS ドキュメントの「[Selecting the best size for a replication instance](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.SizingReplicationInstance.html)」を参照してください。
+ **接続オプション** – レイテンシーの問題を避けるため、適切な接続オプションを選択することをお勧めします。AWS Direct Connect は、企業のデータセンターと AWS 間の専用接続であるため、AWS リソースへの最短経路を提供します。転送中に、ネットワークトラフィックは AWS グローバルネットワーク上に残り、インターネットを経由することはありません。これにより、VPN やパブリックインターネットを使用する場合と比較して、ボトルネックにぶつかったり、レイテンシーが予期せず増加したりする可能性が低くなります。
+ **ネットワーク帯域幅** – パフォーマンスを最適化するには、ネットワークのスループットが高いことを確認してください。オンプレミスのソースデータベースと AWS DMS の間で VPN トンネルを使用している場合は、帯域幅がワークロードに十分であることを確認してください。
+ **タスク並列処理** –フルロード中に複数のテーブルを並列でロードすることで、データレプリケーションを高速化できます。このパターンでは RDBMS エンドポイントを使用するため、このオプションは全ロードプロセスにのみ適用されます。タスクの並列処理は、parallel `MaxFullLoadSubTasks` に実行される全負荷サブタスクの数を決定するパラメーターによって制御されます。デフォルトでは、このパラメーターは 8 に設定されています。つまり、フルモードでは 8 つのテーブル (テーブルマッピングで選択した場合) がまとめてロードされます。このパラメーターは、タスクの JSON スクリプトの全ロードタスク設定セクションで調整できます。
+ **テーブル並列処理** – AWS DMS では、複数の並列スレッドを使用して 1 つの大きなテーブルをロードすることもできます。これは、何十億ものレコードがあり、複数のパーティションやサブパーティションがある Oracle ソーステーブルに特に便利です。ソーステーブルがパーティション化されていない場合は、列の境界を使用してparallel ロードできます。
+ **負荷の分割** – 負荷を複数のタスクまたは AWS DMS インスタンスに分割する場合、変更をキャプチャするときはトランザクションの境界を記憶しておいてください。

## エピック
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-epics"></a>

### Oracle Data Pump を使用してエンタープライズワンのスキーマをエクスポートします
<a name="use-oracle-data-pump-to-export-the-enterpriseone-schema"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SCN を生成します。 | ソースデータベースがアクティブで EnterpriseOne アプリケーションで使用されている場合は、Oracle Data Pump を使用してデータエクスポートを開始します。まず、Oracle Data Pump によるエクスポート時のデータ整合性を保つため、また AWS DMS の CDC の開始点として、ソースデータベースからシステム変更番号 (SCN) を生成する必要があります。ソース・データベースから現在のSCNを生成するには、次のSQL文を使用します。<pre>SQL> select current_scn from v$database;<br /><br />CURRENT_SCN<br />-----------<br />   30009727</pre>生成された SCN を保存します。SCN は、データをエクスポートし、AWS DMS レプリケーションタスクを作成する場合に使用します。 | DBA | 
| パラメータファイルを作成します。 | スキーマをエクスポートするためのパラメータファイルを作成するには、次のコードを使用できます。<pre>directory=DMS_DATA_PUMP_DIR<br />logfile=export_dms.log<br />dumpfile=export_dms_data.dmp<br />schemas=<schema name><br />flashback_scn=<SCN from previous command></pre>要件に応じて、以下のコマンドを使用して，独自の `DATA_PUMP_DIR` を定義することもできます。<pre>SQL> CREATE OR REPLACE DIRECTORY DMS_DATA_PUMP_DIR AS '<Directory for dump>';<br />Directory created.<br /><br />SQL> GRANT READ, WRITE ON DIRECTORY DMS_DATA_PUMP_DIR TO SYSTEM;<br />Grant succeeded.</pre> | DBA | 
| スキーマをエクスポートします。 | エクスポートを実行するには、`expdp` 以下のユーティリティを使用します。<pre>C:\Users\Administrator>expdp system/********@<DB Name> PARFILE='<Path to PAR file create above>'<br /><br />Export: Release 19.0.0.0.0 - Production on *** *** ** **:**:** ****<br />Version 19.3.0.0.0<br /><br />Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.<br /><br />Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production<br />Starting "SYSTEM"."SYS_EXPORT_SCHEMA_02":  system/********@<DB Name>PARFILE='E:\exp_dms_datapump.par'<br />Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA<br />Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS<br />Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS<br />Processing object type SCHEMA_EXPORT/STATISTICS/MARKER<br />Processing object type SCHEMA_EXPORT/USER<br />Processing object type SCHEMA_EXPORT/ROLE_GRANT<br />Processing object type SCHEMA_EXPORT/DEFAULT_ROLE<br />Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA<br />Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA<br />Processing object type SCHEMA_EXPORT/TABLE/TABLE<br />Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT<br />Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX<br />Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT<br />. . exported "<Schema Name>"."<Table Name>"                            228.9 MB  496397 rows</pre><pre>Master table "SYSTEM"."SYS_EXPORT_SCHEMA_02" successfully loaded/unloaded<br />******************************************************************************<br />Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_02 is:<br />  E:\DMSDUMP\EXPORT_DMS_DATA.DMP<br />Job "SYSTEM"."SYS_EXPORT_SCHEMA_02" successfully completed at *** *** ** **:**:** **** elapsed 0 00:01:57</pre> | DBA | 

### Oracle Data Pump を使用してエンタープライズワンのスキーマをインポートします
<a name="use-oracle-data-pump-to-import-the-enterpriseone-schema"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ダンプファイルを、ターゲットインスタンスに転送します。 | `DBMS_FILE_TRANSFER` ユーティリティを使用してファイルを転送するには、ソースデータベースから Amazon RDS for Oracle インスタンスへのデータベースリンクを作成する必要があります。リンクが確立されたら、ユーティリティを使用して Data Pump ファイルを Amazon RDS インスタンスに直接転送できます。または、Data Pump ファイルを「[Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/)」に転送し、Amazon RDS for Oracle インスタンスにインポートできます。このオプションの詳細については、「[追加情報](#migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-additional)」セクションを参照してください。ターゲットの DB インスタンスの Amazon RDS マスターユーザーに接続する `ORARDSDB` というデータベースリンクを作成するには、ソースデータベースで次のコマンドを実行します。<pre>sqlplus / as sysdba<br /><br />SQL*Plus: Release 19.0.0.0.0 on *** *** ** **:**:** ****<br />Version 19.3.0.0.0<br /><br />Copyright (c) 1982, 2019, Oracle.  All rights reserved.<br /><br />Connected to:<br />Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0<br />Version 19.3.0.0.0<br /><br />SQL> create database link orardsdb connect to admin identified by "******" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orcl.******.us-east-1.rds.amazonaws.com)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))';<br /><br />Database link created.<br /><br />SQL></pre> | DBA | 
| データベースリンクをテストします。 | データベースリンクをテストして、`sqlplus` を使用して Amazon RDS for Oracle のターゲットデータベースに接続できることを確認します。<pre>SQL> select name from v$database@orardsdb;<br /><br />NAME<br />---------<br />ORCL<br /></pre> | DBA | 
| ダンプファイルをターゲットデータベースに転送します。 | ダンプファイルを Amazon RDS for Oracle データベースにコピーするには、`DATA_PUMP_DIR` デフォルトのディレクトリを使用するか、次のコードを使用して独自のディレクトリを作成します。このコードはターゲット Amazon RDS インスタンスで実行する必要があります。<pre>exec rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'DMS_TARGET_PUMP_DIR');<br /><br />PL/SQL procedure successfully completed.</pre>次のスクリプトでは、という名前のダンプファイルを、`orardsdb` という名前のデータベースリンクを使用して、`EXPORT_DMS_DATA.DMP` ソースのインスタンスからターゲット Amazon RDS for Oracle Database にコピーします。このスクリプトはソースデータベースインスタンスで実行する必要があります。<pre>BEGIN<br />DBMS_FILE_TRANSFER.PUT_FILE(<br />source_directory_object => 'DMS_DATA_PUMP_DIR',<br />source_file_name => 'EXPORT_DMS_DATA.DMP',<br />destination_directory_object => 'DMS_TARGET_PUMP_DIR',<br />destination_file_name => 'EXPORT_DMS_DATA.DMP',<br />destination_database => 'orardsdb');<br />END;<br /><br />PL/SQL procedure successfully completed.</pre> | DBA | 
| ターゲットデータベース内のダンプファイルを一覧表示します。 | PL/SQL プロシージャが完了したら、次のコードを使用して Amazon RDS for Oracle データベースにデータダンプファイルを一覧表示できます。<pre>select * from table (rdsadmin.rds_file_util.listdir(p_directory => 'DMS_TARGET_PUMP_DIR'));</pre> | DBA | 
| ターゲットインスタンスに JDE 固有のユーザーを作成します。 | ターゲットインスタンスで以下のコマンドを使用して JD Edwards のプロファイルとロールを作成します。<pre>SQL> CREATE PROFILE "JDEPROFILE" LIMIT IDLE_TIME 15;<br />Profile created.<br /><br />SQL> CREATE ROLE "JDE_ROLE";<br />Role created.<br /><br />SQL> CREATE ROLE "JDEADMIN";<br />CREATE ROLE "JDEUSER";<br />Role created.<br />Role created.</pre>ロールに必要なアクセス許可を保証します。<pre>SQL> GRANT CREATE ANY SEQUENCE TO JDE_ROLE;<br /> GRANT DROP ANY SEQUENCE TO JDE_ROLE;<br /> GRANT CREATE ANY TRIGGER TO JDE_ROLE;<br /> GRANT DROP ANY TRIGGER TO JDE_ROLE;<br /></pre> | DBA、JDE、CNC | 
| ターゲットインスタンスにテーブルスペースを作成します。 | この移行に含まれるスキーマに対して以下のコマンドを使用して、ターゲットインスタンスに必要なテーブルスペースを作成します。<pre>SQL> CREATE TABLESPACE <Tablespace Name for Tables>;<br />Tablespace created.<br /><br />SQL> CREATE TABLESPACE <Tablespace Name for Indexes>;<br />Tablespace created.</pre> | DBA、JDE、CNC | 
| ターゲットデータベースでインポートを開始します。 | インポートプロセスを開始する前に、データダンプファイルを使用して、ターゲット Amazon RDS for Oracle データベースにロール、スキーマ、テーブルスペースを設定します。インポートを実行するには、Amazon RDS プライマリユーザーアカウントでターゲットデータベースにアクセスし、Amazon RDS for Oracle Database を含む `tnsnames.ora` ファイル内の接続文字列名を使用します `tns-entry`。必要に応じて、データダンプファイルを別のテーブルスペースまたは別のスキーマ名でインポートする再マップオプションを含めることができます。インポートを開始するには、次のコードを使用します。<pre>impdp admin@orardsdb directory=DMS_TARGET_PUMP_DIR logfile=import.log dumpfile=EXPORT_DMS_DATA.DMP</pre>インポートを正常に完了させるには、インポートログファイルにエラーがないかどうかを確認し、オブジェクト数、行数、無効なオブジェクトなどの詳細を確認します。無効なオブジェクトがある場合は、それらを再コンパイルします。さらに、ソースとターゲットのデータベースオブジェクトを比較して、一致することを確認します。 | DBA | 

### ソースとターゲットのエンドポイントで AWS DMS レプリケーションインスタンスをプロビジョニングします
<a name="provision-an-aws-dms-replication-instance-with-the-source-and-target-endpoints"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テンプレートをダウンロードする。 | AWS CloudFormation 「[DMS\$1Instance.yaml](https://aws-database-blog.s3.amazonaws.com/artifacts/Migrating_oracle_using_DMS/DMS_Instance.yaml)」テンプレートをダウンロードして、AWS DMS レプリケーションインスタンスとそのソースエンドポイントとターゲットエンドポイントをプロビジョニングします。 | クラウド管理者、DBA | 
| スタックの作成を開始します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | クラウド管理者、DBA | 
| パラメータを指定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | クラウド管理者、DBA | 
| スタックを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html)プロビジョニングは約 5 ～ 10 分で完了します。[AWS CloudFormation スタック] ページに **CREATE\$1COMPLETE** と表示されたら完了です。 | クラウド管理者、DBA | 
| エンドポイントをセットアップします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | クラウド管理者、DBA | 
| 接続をテストします。 | ソースエンドポイントとターゲットエンドポイントのステータスが **[アクティブ]** になったら、接続をテストします。各エンドポイント (ソースとターゲット) で **[テストの実行]** を選択し、ステータスが成功と表示されることを確認します。 | クラウド管理者、DBA | 

### ライブレプリケーション用の AWS DMS レプリケーションタスクを作成する
<a name="create-an-aws-dms-replication-task-for-live-replication"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションタスクを作成します。 | 次のステップを使用して AWS DMS レプリケーションタスクを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html)タスクを作成すると、AWS DMS は CDC スタートモードで指定した SCN から Amazon RDS for Oracle データベースインスタンスへの継続的な変更を移行します。CloudWatch ログを確認して移行を確認することもできます。 | クラウド管理者、DBA | 
| レプリケーションタスクを繰り返します。 | 前のステップを繰り返して、移行に含まれる他の JD Edwards スキーマのレプリケーションタスクを作成します。 | クラウド管理者、DBA、JDE CNC 管理者 | 

### ターゲットの Amazon RDS for Oracle Database でデータベーススキーマを検証
<a name="validate-the-database-schema-on-the-target-amazon-rds-for-oracle-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データ転送を検証します。 | AWS DMS タスクが開始されたら、**タスク**ページの**テーブル統計**タブをチェックして、データに加えられた変更を確認できます。進行中のレプリケーションのステータスは、コンソールの **[データベース移行タスク]** ページでモニタリングできます。詳細については、「[ AWS DMS データの検証](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)」 を参照してください。 | クラウド管理者、DBA | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションを開始します。 | レプリケーション手順を中止し、ソースアプリケーションサービスを停止します。 | クラウド管理者、DBA | 
| JD Edwards アプリケーションを起動します。 | ターゲットの JD Edwards プレゼンテーションおよびロジック層アプリケーションを AWS で起動し、Amazon RDS for Oracle データベースに転送します。アプリケーションにアクセスすると、Amazon RDS for Oracle データベースとのすべての接続が確立されていることに気付くはずです。 | DBA、JDE CNC 管理者 | 
| ソースデータベースをオフにします。 | 接続がないことを確認したら、ソースデータベースをオフにできます。 | DBA | 

## トラブルシューティング
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| 「[継続的なレプリケーションのためにソースデータベースへの追加ロギング](https://docs.oracle.com/database/121/SUTIL/GUID-D2DDD67C-E1CC-45A6-A2A7-198E4C142FA3.htm#SUTIL1583)」を有効にするよう求める警告メッセージが表示されます。 | 以下のコマンドを入力して補足ロギングを有効にします。<pre>SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;<br />SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;</pre> | 
| AWS DMS に、サプリメンタルロギングがオフになっています。 | AWS DMS では、補足ログ記録はデフォルトでオフになっています。ソース Oracle エンドポイントで有効にするには:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | 
| CDB レベルでは補足ロギングは有効になっていません。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.html) | 
| 「Test Endpoint failed: Application-Status: 1020912, Application-Message: LogMiner is not supported in Oracle PDB environment Endpoint initialization failed.」というエラーメッセージが表示されます。 | このエラーメッセージが表示される場合は、LogMiner の代わりにバイナリリーダーを使用できます。**[エンドポイント設定]** で、ソースデータベースの追加の接続属性に次の行を追加します。<pre>useLogMinerReader=N;useBfile=Y;</pre> | 

## 関連リソース
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-resources"></a>
+ [AWS Database Migration Service の使用開始](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ 「[AWS Database Migration Service ベストプラクティス](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)」
+ 「[AWS クラウドへの Oracle データベースの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)」
+ 「[AWS CloudFormation の AWS Database Migration Service リソースタイプリファレンス](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DMS.html)」
+ 「[AWS DMS エンドポイントの認証情報を AWS Secrets Manager で管理](https://aws.amazon.com/blogs/database/manage-your-aws-dms-endpoint-credentials-with-aws-secrets-manager/)」
+ 「[AWS データベース移行サービスの移行タスクのトラブルシューティング](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Troubleshooting.html#CHAP_Troubleshooting.Oracle.RecordsMissing)」
+ 「[AWS Database Migration Service ベストプラクティス](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)」

## 追加情報
<a name="migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms-additional"></a>

Amazon S3 を使用してファイルを転送する

Amazon S3 にファイルを転送するには、AWS CLI 、ｍたは (CLI)、 Amazon S3 コンソールを使用できます。ファイルを Amazon S3 に転送したら、Amazon RDS for Oracle インスタンスを使用して Amazon S3 からデータポンプファイルをインポートできます。

代替方法として Amazon S3 統合を使用してダンプファイルを転送することを選択した場合は、次の手順を実行します。

1. S3 バケットを作成する。

1. Oracle データパンプを使用して、ソースデータベースからデータをエクスポートします。

1. S3 バケットにデータパンプファイルをアップロードします。

1. S3 バケットから、ターゲットの Amazon RDS for Oracle Database にデータポンプファイルをダウンロードします。

1. Data Pump ファイルを使用してインポートを実行します。

**注記**  
S3 インスタンスと RDS インスタンス間で大きなデータファイルを転送するには、[Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html) 機能を使用することをお勧めします。

# AWS DMS を使用して Oracle PeopleSoft データベースを AWS に移行する
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms"></a>

*Amazon Web Services、Sampath Kathirvel*

## 概要
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-summary"></a>

「[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/)」は、企業全体のプロセスを対象とするエンタープライズリソースプランニング (ERP) ソリューションです。PeopleSoft のアーキテクチャは、クライアント、アプリケーション、データベースの 3 層構造です。PeopleSoft は 「[Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」で実行できます。

Oracle データベースを Amazon RDS に移行すると、Amazon Web Services (AWS) がバックアップタスクと高可用性セットアップを処理するので、お客様は PeopleSoft アプリケーションとその機能のメンテナンスに集中できます。移行プロセス中に考慮すべき主な要因の包括的なリストについては、AWS 規範ガイダンス の「[Oracle データベースの移行戦略](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html)」を参照してください。

このパターンは、AWS Database [Migration Service (AWS DMS) とその変更データキャプチャ (CDC) 特徴量を備えた Oracle Data Pump を使用して、オンプレミスの Oracle データベースを Amazon RDS](https://aws.amazon.com/dms) for Oracle に移行するためのソリューションを提供します。

Oracle PeopleSoft などの重要な ERP アプリケーションを移行する際には、ダウンタイムを最小限に抑えることが重要です。AWS DMS では、ソースデータベースからターゲットデータベースへのフルロードと連続レプリケーションの両方をサポートすることで、ダウンタイムを最小限に抑えます。AWS DMS では、移行のリアルタイムモニタリングとログ記録も提供されるため、ダウンタイムの原因となる問題を特定して解決することを支援します。

AWS DMS で変更を複製する場合、AWS DMS がデータベースログから変更を読み取るための開始点として、時刻またはシステム変更番号 (SCN) を指定する必要があります。AWS DMS がこれらの変更にアクセスすることを保証するには、指定された期間でサーバーでこれらのログにアクセスできるようにしておくことが重要です。

## 前提条件と制限
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-prereqs"></a>

**前提条件**
+ ターゲットデータベースとして AWS クラウド環境内の Amazon RDS for Oracle データベースをプロビジョニングしました。
+ オンプレミスまたは AWS クラウドの Amazon Elastic Compute Cloud (Amazon EC2) 上で稼働している Oracle PeopleSoft データベース。
**注記**  
このパターンは、オンプレミスから AWS への移行のために設計されましたが、Amazon EC2 インスタンスの Oracle データベースを使用してテストされています。オンプレミスから移行するには、適切なネットワーク接続を設定する必要があります。
+ スキーマの詳細です。Oracle PeopleSoft アプリケーションを Amazon RDS for Oracle に移行する場合、移行する Oracle データベーススキーマ (`SYSADM` など) を特定する必要があります。移行プロセスを開始する前に、スキーマに関する以下の詳細情報を収集します。
  + サイズ
  + オブジェクトタイプごとのオブジェクトの数
  + 無効なオブジェクトの数。

  この情報は移行プロセスに役立ちます。

**制限事項**
+ このシナリオは PeopleSoft DEMO データベースでのみテストされています。大規模なデータセットではテストされていません。

## アーキテクチャ
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-architecture"></a>

次の図表では、ソースデータベースとして Oracle データベースを実行するインスタンス、及び ターゲットデータベースとして Amazon RDS for Oracle を実行するインスタンスを示しています。データは、Oracle Data Pump を使用してソース Oracle データベースからターゲット Amazon RDS for Oracle データベースにエクスポートおよびインポートされ、AWS DMS を使用して CDC が変更された場合にレプリケートされます。

![\[オンプレミスの DB インスタンスから Amazon RDS までの 5 ステップのプロセス。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/c8ec3789-f80e-4f3a-a3f4-72a4541316b0/images/4e3e3477-2fe0-4a5d-b95e-05a8aafe8b68.png)


1. 最初のステップでは、Oracle Data Pump を使用してソースデータベースからデータを抽出し、そのデータを Amazon RDS for Oracle データベースターゲットに送信します。

1. データは、ソースデータベースから AWS DMS のソースエンドポイントに送信されます。

1. ソースエンドポイントから AWS DMS レプリケーションインスタンスにデータが送信され、そこでレプリケーションタスクが実行されます。

1. レプリケーションタスクが完了する後、データが AWS DMS のターゲットエンドポイントに送信されます。

1. ターゲットエンドポイントから、データは Amazon RDS for Oracle データベースインスタンスに送信されます。

## ツール
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-tools"></a>

AWS サービス
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ 「[OracleのAmazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)」 によって、AWS クラウドで Oracleリレーショナルデータベースをセットアップ、運用、スケーリングができます。

**その他のサービス**
+ 「[Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm)」 を使用すると、データやメタデータを一つのデータベースから別のデータベースに高速に移動することを支援します。

## ベストプラクティス
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-best-practices"></a>

LOB への移行

ソースデータベースに、ターゲットデータベースに移行する必要のあるラージバイナリオブジェクト (LOB) が含まれている場合、AWS DMS には次のオプションがあります。
+ **フル LOB モード** – サイズにかかわらず、AWS DMS はすべての LOB をソースからターゲットに移行します。移行が遅くなりますが、データが切り捨てられないという利点があります。パフォーマンスを向上させるには、新しいレプリケーションインスタンスに別のタスクを作成して、LOB が数メガバイトを超えるテーブルを移行できます。
+ **制限付き LOB モード** – LOB 列データの最大サイズを指定します。これにより、AWS DMS はリソースを事前に割り当て、LOB を一括適用できます。LOB 列のサイズがタスクで指定されたサイズを超える場合、AWS DMS はデータを切り捨てて AWS DMS ログファイルに警告を送信します。LOB データサイズが制限された LOB サイズ内にある場合、制限付き LOB モードを使用することでパフォーマンスを向上させることができます。
+ **インライン LOB モード** – 小さい LOB と大きな LOB の両方をレプリケートすることで、データを切り捨てたり、タスクのパフォーマンスを低下させたりすることなく LOB を移行できます。まず、InlineLobMaxSize パラメーターの値を指定します。このパラメーターは、フル LOB モードが true に設定されている場合にのみ使用できます。AWS DMS タスクでは、小さな LOB をインラインで転送するため、効率が向上します。AWS DMS では、ソーステーブルからルックアップを実行して、大きな LOB を移行します。ただし、インライン LOB モードは全ロードフェーズでのみ機能します。

シーケンス値の生成

AWS DMS による変更データキャプチャプロセスでは、増分シーケンス番号はソースデータベースから複製されないことに注意します。シーケンス値の不一致を避けるには、すべてのシーケンスのソースから最新のシーケンス値を生成し、それをターゲット Amazon RDS for Oracle データベースに適用する必要があります。

認証情報管理

AWS リソースを保護するために、AWS Identity and Access Management (IAM) の「[ベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」に従うことをお勧めします。

## エピック
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-epics"></a>

### ソースとターゲットのエンドポイントで AWS DMS レプリケーションインスタンスをプロビジョニングします
<a name="provision-an-aws-dms-replication-instance-with-the-source-and-target-endpoints"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テンプレートをダウンロードする。 | 「[DMS\$1Instance.yaml](https://aws-database-blog.s3.amazonaws.com/artifacts/Migrating_oracle_using_DMS/DMS_Instance.yaml)」AWS CloudFormation テンプレートをダウンロードして、AWS DMS レプリケーションインスタンスとそのソースエンドポイントとターゲットエンドポイントをプロビジョニングします。 | クラウド管理者、DBA | 
| スタックの作成を開始します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html) | クラウド管理者、DBA | 
| パラメータを指定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html) | クラウド管理者、DBA | 
| スタックを作成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html)プロビジョニングは約 5 ～ 10 分で完了します。[AWS CloudFormation スタック] ページに **CREATE\$1COMPLETE** と表示されたら完了です。 | クラウド管理者、DBA | 
| エンドポイントをセットアップします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html) | クラウド管理者、DBA | 
| 接続をテストします。 | ソースエンドポイントとターゲットエンドポイントのステータスにアクティブになったら、接続をテストします。各エンドポイント (ソースとターゲット) で **[テストの実行]** を選択し、ステータスが成功と表示されることを確認します。 | クラウド管理者、DBA | 

### Oracle データポンプを使用して、オンプレミスの Oracle データベースから PeopleSoft スキーマをエクスポートします。
<a name="export-the-peoplesoft-schema-from-the-on-premises-oracle-database-by-using-oracle-data-pump"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SCN を生成します。 | ソースデータベースがアクティブでアプリケーションで使用中になったら、Oracle Data Pump でデータエクスポートを開始します。まず、Oracle Data Pump によるエクスポート時のデータ整合性を保つため、また AWS DMS の変更データの開始点として、ソースデータベースからシステム変更番号 (SCN) を生成する必要があります。ソースデータベースから現在の SCN を生成するには、次の SQL ステートメントを入力します。<pre>SQL> select name from v$database;<br />SQL> select name from v$database;<br />NAME<br />---------<br />PSFTDMO<br />SQL> SELECT current_scn FROM v$database;<br />CURRENT_SCN<br />-----------<br />23792008</pre>生成された SCN を保存して、データをエクスポートしたり、AWS DMS レプリケーションタスクを作成したりするときに使用します。 | DBA | 
| パラメータファイルを作成します。 | スキーマをエクスポートするためのパラメータファイルを作成するには、次のコードを使用できます。<pre>$ cat exp_datapmp.par<br />userid=system/*******<br />directory=DATA_PUMP_DIR<br />logfile=export_dms_sample_user.log<br />dumpfile=export_dms_sample_data_%U.dmp<br />schemas=SYSADM<br />flashback_scn=23792008</pre>要件に応じて、以下のコマンドを使用して，独自の `DATA_PUMP_DIR` を定義することもできます。<pre>SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/opt/oracle/product/19c/dbhome_1/dmsdump/';<br />Directory created.<br />SQL> GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO system;<br />Grant succeeded.<br />SQL><br />SQL> SELECT owner, directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR';<br />OWNER DIRECTORY_NAME DIRECTORY_PATH<br />------------------------------------------------------------------------------------------------------------------<br />SYS DATA_PUMP_DIR /opt/oracle/product/19c/dbhome_1/dmsdump/</pre> | DBA | 
| スキーマをエクスポートします。 | エクスポートを実行するには、`expdp` ユーティリティを使用します。<pre>$ expdp parfile=exp_datapmp.par<br />.......................<br />Transferring the dump file with DBMS_FILE_TRANSFER to Target:<br />. . exported "SYSADM"."PS_XML_TEMPLT_LNG" 6.320 KB 0 rows<br />. . exported "SYSADM"."PS_XML_TEMPLT_LNK" 6.328 KB 0 rows<br />. . exported "SYSADM"."PS_XML_XLATDEF_LNG" 6.320 KB 0 rows<br />. . exported "SYSADM"."PS_XML_XLATITM_LNG" 7.171 KB 0 rows<br />. . exported "SYSADM"."PS_XPQRYRUNCNTL" 7.601 KB 0 rows<br />. . exported "SYSADM"."PS_XPQRYRUNPARM" 7.210 KB 0 rows<br />. . exported "SYSADM"."PS_YE_AMOUNTS" 9.351 KB 0 rows<br />. . exported "SYSADM"."PS_YE_DATA" 16.58 KB 0 rows<br />. . exported "SYSADM"."PS_YE_EE" 6.75 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2CP_AMOUNTS" 9.414 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2CP_DATA" 20.94 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2C_AMOUNTS" 10.27 KB 0 rows<br />. . exported "SYSADM"."PS_YE_W2C_DATA" 20.95 KB 0 rows<br />. . exported "SYSADM"."PS_ZBD_JOBCODE_TBL" 14.60 KB 0 rows<br />. . exported "SYSADM"."PTGRANTTBL" 5.468 KB 0 rows<br />Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded<br />**<br />Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:<br />/opt/oracle/product/19c/dbhome_1/dmsdump/export_dms_sample_data_01.dmp<br />Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Dec 19 20:13:57 2022 elapsed 0 00:38:22</pre> | DBA | 

### Oracle Data Pump を使用して PeopleSoft スキーマを Amazon RDS for Oracle データベースにインポートします
<a name="import-the-peoplesoft-schema-into-the-amazon-rds-for-oracle-database-by-using-oracle-data-pump"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ダンプファイルを、ターゲットインスタンスに転送します。 | `DBMS_FILE_TRANSFER` を使用してファイルを転送するには、ソースデータベースから Amazon RDS for Oracle インスタンスへのデータベースリンクを作成する必要があります。リンクが確立されたら、ユーティリティを使用して Data Pump ファイルを RDS インスタンスに直接転送できます。または、Data Pump ファイルを「[Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/)」に転送し、Amazon RDS for Oracle インスタンスにインポートできます。このオプションの詳細については、「追加情報」 セクションを参照してください。ターゲットの DB インスタンスの Amazon RDS マスターユーザーに接続する `ORARDSDB` というデータベースリンクを作成するには、ソースデータベースで次のコマンドを実行します。<pre>$sqlplus / as sysdba<br />$ SQL> create database link orardsdb connect to admin identified by "*****" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = testpsft.*******.us-west-2.rds.amazonaws.com)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))';<br />Database link created.</pre> | DBA | 
| データベースリンクをテストします。 | データベースリンクをテストして、sqlplus を使用して Amazon RDS for Oracle のターゲットデータベースに接続できることを確認します。<pre>SQL><br />SQL> select name from v$database@orardsdb;<br />NAME<br />---------<br />ORCL<br />SQL></pre> | DBA | 
| ダンプファイルをターゲットデータベースに転送します。 | ダンプファイルを Amazon RDS for Oracle データベースにコピーするには、`DATA_PUMP_DIR` デフォルトのディレクトリを使用するか、次のコードを使用して独自のディレクトリを作成できます。<pre>exec rdsadmin.rdsadmin_util.create_directory(p_directory_name => ‘TARGET_PUMP_DIR’);</pre>次のスクリプトでは、ソースのインスタンスから `export_dms_sample_data_01.dmp` という名前のダンプファイルを、 `orardsdb` という名前のデータベースリンクを使用して、ターゲット Amazon RDS for Oracle Database にコピーします。<pre>$ sqlplus / as sysdba<br />SQL><br />BEGIN<br />DBMS_FILE_TRANSFER.PUT_FILE(<br />source_directory_object => 'DATA_PUMP_DIR',<br />source_file_name => 'export_dms_sample_data_01.dmp',<br />destination_directory_object => 'TARGET_PUMP_DIR’',<br />destination_file_name => 'export_dms_sample_data_01.dmp',<br />destination_database => 'orardsdb'<br />);<br />END;<br />/<br />PL/SQL procedure successfully completed.</pre> | DBA | 
| ターゲットデータベース内のダンプファイルを一覧表示します。 | PL/SQL プロシージャが完了したら、次のコードを使用して Amazon RDS for Oracle データベースにデータダンプファイルを一覧表示できます。<pre>SQL> select * from table (rdsadmin.rds_file_util.listdir(p_directory => ‘TARGET_PUMP_DIR’));</pre> | DBA | 
| ターゲットデータベースでインポートを開始します。 | インポートプロセスを開始する前に、データダンプファイルを使用して、ターゲット Amazon RDS for Oracle データベースにロール、スキーマ、テーブルスペースを設定します。インポートを実行するには、Amazon RDS マスターユーザーアカウントでターゲットデータベースにアクセスし、Amazon RDS for Oracle Database `tns-entry` を含む `tnsnames.ora` ファイル内の接続文字列名を使用します。必要に応じて、データダンプファイルを別のテーブルスペースまたは別のスキーマ名でインポートする再マップオプションを含めることができます。インポートを開始するには、次のコードを使用します。<pre>impdp admin@orardsdb directory=TARGET_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp</pre>インポートを正常に完了させるには、インポートログファイルにエラーがないかどうかを確認し、オブジェクト数、行数、無効なオブジェクトなどの詳細を確認します。無効なオブジェクトがある場合は、それらを再コンパイルします。さらに、ソースとターゲットのデータベースオブジェクトを比較して、一致することを確認します。 | DBA | 

### CDC を使用して AWS DMS レプリケーションタスクを作成し、ライブレプリケーションを実行する
<a name="create-an-aws-dms-replication-task-using-cdc-to-perform-live-replication"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションタスクを作成します。 | 次のステップを使用して AWS DMS レプリケーションタスクを作成します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.html)タスクを作成する後、CDC スタートモードで提供した SCN から Amazon RDS for Oracle データベースインスタンスに CDC を移行します。CloudWatch ログを確認して確認することもできます。 | クラウド管理者、DBA | 

### ターゲットの Amazon RDS for Oracle Database でデータベーススキーマを検証
<a name="validate-the-database-schema-on-the-target-amazon-rds-for-oracle-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データ転送を検証します。 | AWS DMS タスクが開始されたら、**タスク**ページの**テーブル統計**タブをチェックして、データに加えられた変更を確認できます。進行中のレプリケーションのステータスは、コンソールの **[データベース移行タスク]** ページでモニタリングできます。詳細については、「[ AWS DMS データの検証](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)」 を参照してください。 | クラウド管理者、DBA | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| レプリケーションを開始します。 | レプリケーション手順を中止し、ソースアプリケーションサービスを停止します。 | クラウド管理者、DBA | 
| PeopleSoft ミドルティアを起動します。 | ターゲットの PeopleSoft ミドルティアアプリケーションを AWS で起動し、最近移行した Amazon RDS for Oracle データベースに転送します。アプリケーションにアクセスすると、すべてのアプリケーション接続が Amazon RDS for Oracle データベースと確立されていることに気付くはずです。 | データベース管理者、PeopleSoft 管理者 | 
| ソースデータベースをオフにします。 | ソースデータベースへの接続がなくなったことを確認したら、オフにできます。 | DBA | 

## 関連リソース
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-resources"></a>
+ [AWS Database Migration Service の使用開始](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ 「[AWS Database Migration Service ベストプラクティス](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_BestPractices.html)」
+ 「[AWS クラウドへの Oracle データベースの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)」

## 追加情報
<a name="migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms-additional"></a>

Amazon S3 を使用してファイルを転送する

Amazon S3 にファイルを転送するには、AWS CLI 、ｍたは (CLI)、 Amazon S3 コンソールを使用できます。ファイルを Amazon S3 に転送したら、Amazon RDS for Oracle インスタンスを使用して Amazon S3 からデータポンプファイルをインポートできます。

代替方法として Amazon S3 統合を使用してダンプファイルを転送することを選択した場合は、次の手順を実行します。

1. S3 バケットを作成する。

1. Oracle データパンプを使用して、ソースデータベースからデータをエクスポートします。

1. S3 バケットにデータパンプファイルをアップロードします。

1. S3 バケットから、ターゲットの Amazon RDS for Oracle Database にデータポンプファイルをダウンロードします。

1. Data Pump ファイルを使用してインポートを実行します。

**注記**  
S3 インスタンスと RDS インスタンス間で大きなデータファイルを転送するには、Amazon S3 Transfer Acceleration 機能を使用することをお勧めします。

補足ロギングを有効にする

継続的なレプリケーションのソースデータベースで「[追加ロギング](https://docs.oracle.com/database/121/SUTIL/GUID-D2DDD67C-E1CC-45A6-A2A7-198E4C142FA3.htm#SUTIL1583)」 を有効にする警告メッセージが表示された場合、下記のステップを使用します。

```
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
```

# オンプレミス MySQL データベースを Amazon RDS for MySQL に移行する
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql"></a>

*Amazon Web Services、Lorenzo Mota*

## 概要
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-summary"></a>

このパターンでは、オンプレミス MySQL データベースを Amazon Relational Database Service (Amazon RDS) for MySQL に移行するガイダンスを提供します。このパターンでは、完全なデータベース移行のための AWS Database Migration Service (AWS DMS) または **mysqldump** などのネイティブ MySQL ツールの使用について説明します。このパターンは主に DBA とソリューションアーキテクトを対象としています。小規模または大規模プロジェクトで、テスト手順 (少なくとも 1 回のテストサイクルを推奨) として、または最終的な移行手順として使用できます。

## 前提条件と制限
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターの MySQL ソースデータベース

**制限**
+ データベースサイズの上限: [64 TB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)

**製品バージョン**
+ MySQL バージョン 5.5、5.6、5.7、8.0 サポートされているバージョンの最新リストについては、 AWS ドキュメントの[「Amazon RDS での MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html)」を参照してください。を使用している場合は AWS DMS、「現在 [でサポートされている for MySQL バージョンのターゲットとして MySQL 互換データベースを使用する AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) 」も参照してください AWS DMS。 MySQL 

## アーキテクチャ
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス MySQL データベース

**ターゲットテクノロジースタック**
+ MySQL を実行中の Amazon RDS DB インスタンス

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

次の図は、移行後の Amazon RDS for MySQL のターゲット実装を示しています。

![\[カットオーバー後のターゲット Amazon RDS for MySQL 実装。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/2e10114e-e389-4d24-9b6a-fa56beee5369.png)


**AWS データ移行アーキテクチャ**

**の使用 AWS DMS:**

次の図は、 AWS DMS を使用してカットオーバーまで完全変更と増分変更を送信する場合のデータ移行アーキテクチャを示しています。オンプレミスから へのネットワーク接続は要件 AWS に応じて異なり、このパターンの対象外です。

![\[AWS DMS を使用する場合の AWS へのデータ移行アーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/ecc9b282-1897-4971-99ed-83223b17000d.png)


**ネイティブ MySQL ツールを使用する**:

次の図は、ネイティブ MySQL ツールを使用する場合のデータ移行アーキテクチャを示しています。エクスポートダンプファイルは Amazon Simple Storage Service (Amazon S3) にコピーされ、カットオーバー AWS 前に の Amazon RDS for MySQL データベースにインポートされます。オンプレミスから へのネットワーク接続は要件 AWS に応じて異なり、このパターンの対象外です。

 

![\[ネイティブ MySQL ツールを使用する場合の AWS アーキテクチャへのデータ移行。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/3bbec989-c3eb-473e-ba4a-032d6a4271c5.png)


**注意**:
+ ダウンタイムの要件とデータベースのサイズに応じて、 AWS DMS または 変更データキャプチャ (CDC) ツールを使用すると、カットオーバー時間が最小限に抑えられます。 AWS DMS は、新しいターゲットへのカットオーバー時間を最小 (通常は分) に短縮できます。データベースのサイズとネットワークレイテンシーが短い場合は、**mysqldump ** を使用したオフライン戦略で十分です。(おおよその時間を把握するためにテストすることをお勧めします。)
+ 通常、 などの CDC 戦略では、オフラインオプションよりも多くのモニタリングと複雑さ AWS DMS が必要です。

## ツール
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-tools"></a>
+ **AWS のサービス**: [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) は、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行するのに役立ちます。でサポートされている MySQL ソースデータベースと ターゲットデータベースの詳細については AWS DMS、 [MySQL 互換データベースの への移行 AWS](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MySQL.html)」を参照してください。ソースデータベースが でサポートされていない場合は AWS DMS、別の方法を選択してデータを移行する必要があります。
+ **ネイティブ MySQL ツール**: [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
+ **サードパーティー製ツール**: [Percona XtraBackup](https://www.percona.com/software/mysql-database/percona-xtrabackup)

## エピック
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベースのバージョンを検証します。 | ソースとターゲットデータベースのバージョンを検証します。 | DBA | 
| ハードウェア要件を特定します。 | ターゲットサーバーのハードウェア要件を特定します。 | DBA、システム管理者 | 
| ストレージ要件を特定します。 | ターゲットデータベースのストレージ要件 (ストレージタイプ、容量など) を特定します。 | DBA、システム管理者 | 
| インスタンスタイプを選択します。 | 容量、ストレージ機能、ネットワーク機能に基づいてターゲットインスタンスのタイプを選択します。 | DBA、システム管理者 | 
| ネットワークアクセス要件を特定します。 | ソースとターゲットデータベースのネットワークアクセスのセキュリティ要件を特定します。 | DBA、システム管理者 | 
| サポートされていないオブジェクトを特定します。 | サポートされていないオブジェクト (ある場合) を特定し、移行作業を決定します。 | DBA | 
| 依存関係を特定します。 | リモートデータベースへの依存関係を特定します。 | DBA | 
| アプリケーション移行戦略を決定します。 | クライアントアプリケーションの移行戦略を決定します。 | DBA、アプリ所有者、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 | ルートテーブル、インターネットゲートウェイ、NAT ゲートウェイ、サブネットを設定します。詳細については、Amazon RDS ドキュメントの [VPC および Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) を参照してください。 | システム管理者 | 
| セキュリティグループを作成します。 | 要件に応じて、ポートと CIDR 範囲、または特定の IP を設定します。MySQL のデフォルトポートは 3306 です。詳細については、Amazon RDS ドキュメントの[セキュリティグループでアクセスをコントロールする](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)を参照してください。 | システム管理者 | 
| Amazon RDS for MySQL DB インスタンスを設定して起動します。 | 手順については、Amazon RDS ドキュメントの [Amazon RDS DB インスタンスを作成する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateInstance.html)を参照してください。サポートされているバージョンを確認します。 | システム管理者 | 

### データを移行する – オプション 1 (ネイティブツールを使用)
<a name="migrate-data-option-1-using-native-tools"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ネイティブ MySQL ツールまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 | 手順については、[mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)、[Percona XtraBackup](https://www.percona.com/software/mysql-database/percona-xtrabackup) (物理的な移行の場合) などの MySQL ツールのドキュメントを参照してください。オプションの詳細については、ブログ投稿 [MySQL 用の Amazon RDS for MySQL または Amazon Aurora MySQL への移行オプション](https://aws.amazon.com/blogs/database/migration-options-for-mysql-to-amazon-rds-for-mysql-or-amazon-aurora-mysql/)を参照してください。 | DBA | 

### データの移行 ‒ オプション 2 (使用 AWS DMS)
<a name="migrate-data-option-2-using-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| でデータを移行します AWS DMS。 | 手順については、[AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)を参照してください。 | DBA | 

### カットオーバー前に予備タスクを実行する
<a name="perform-preliminary-tasks-before-cutover"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オブジェクト数の不一致を修正します。 | ソースデータベースと新しいターゲットデータベースからオブジェクト数を収集します。ターゲットデータベースの不一致を修正します。 | DBA | 
| 依存関係を確認します。 | 他のデータベース間の依存関係 (リンク) が有効で、予想どおりに機能しているかどうかを確認します。 | DBA | 
| テストを実行します。 | テストサイクルの場合は、クエリテストを実行し、メトリクスを収集し、問題を修正します。 | DBA | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースに切り替えます。 | クライアントアプリケーションを新しいインフラストラクチャに切り替ます。 | DBA、アプリ所有者、システム管理者 | 
| テストサポートを提供します。 | 機能アプリケーションテストをサポートします。 | DBA | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをシャットダウンします。 | 移行用に作成した一時 AWS リソースをシャットダウンします。 | DBA、システム管理者 | 
| プロジェクト文書を検証します。 | プロジェクト文書を確認して検証する。 | DBA、アプリ所有者、システム管理者 | 
| メトリクスを収集します。 | 移行の所要時間、手動作業と自動作業の割合、コスト削減などのメトリクスを収集します。 | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを終了します。 | プロジェクトを終了し、フィードバックを提供します。 | DBA、アプリ所有者、システム管理者 | 
| ソースデータベースを運用停止します。 | 移行タスクとカットオーバータスクがすべて完了したら、オンプレミスデータベースの使用を停止します。 | DBA、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-resources"></a>

**リファレンス**
+ [リレーショナルデータベースの移行戦略](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/welcome.html)
+ [AWS DMS website](https://aws.amazon.com/dms/)
+ [AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/)
+ 「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/rds/)」
+ [Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/)
+ [Amazon VPC と Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)
+ 「[Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/)」
+ [Percona XtraBackup、Amazon EFS、Amazon S3 を使用してオンプレミス MySQL データベースを Aurora MySQL に移行する](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.html)
+ [Amazon RDS DB インスタンスストレージ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)

**チュートリアル**
+ [の開始方法 AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」

# オンプレミス Microsoft SQL Server データベースを Amazon RDS for SQL Server に移行する
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server"></a>

*Amazon Web Services、Henrique Lobao、Jonathan Pereira Cruz、Vishal Singh*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-summary"></a>

このパターンは、オンプレミス Microsoft SQL Server データベースから Amazon Relational Database Service (Amazon RDS) for SQL Server に移行するガイダンスを提供します。移行の 2 つのオプションについて説明します。AWS データ移行サービス (AWS DMS) を使用か、またはデータベースコピーウィザードなどのネイティブ Microsoft SQL Server ツールを使用します。

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターにあるソース Microsoft SQL Server データベース

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

**製品バージョン**
+ サポートされているバージョンと機能の最新リストについては、AWS ドキュメントの [Amazon RDS 上の Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport) を参照してください。AWS DMS を使用中の場合、AWS DMS でサポートされている SQL Server バージョンについては、[AWS DMS のターゲットとして Microsoft SQL Server データベースを 使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.SQLServer.html)も参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス Microsoft SQL Server データベース

**ターゲットテクノロジースタック**
+ Amazon RDS for SQL Server DB インスタンス 

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

AWS DMS を使用する:

![\[AWS DMS を使用してオンプレミス SQL サーバーから Amazon RDS に移行するアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/27942833-c294-405c-90e6-32cc197e36ee/images/69b9877c-2d56-4d64-8475-a3dae789c5de.png)


*ネイティブ SQL Server ツールの使用*:

![\[SQL Server ツールを使用してオンプレミス SQL サーバーから Amazon RDS に移行するアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/27942833-c294-405c-90e6-32cc197e36ee/images/45ee14e4-3c7e-4b35-a2c9-3e8e3c7e6cee.png)


## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) は、数タイプのソースデータベースとターゲットデータベースをサポートしています。詳細については、[AWS DMS の段階的手順](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)を参照してください。AWS DMS がソースデータベースをサポートしていない場合は、データを移行する別の方法を選択します。 
+ Microsoft SQL Serverのネイティブツールには、バックアップと復元、データベースコピーウィザード、データベースのコピーとアタッチが含まれます。

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンとエンジンを検証します。 |  | DBA | 
| ターゲットサーバーインスタンスのハードウェア要件を識別します。 |  | DBA、システム管理者 | 
| ストレージ要件 (ストレージタイプと容量) を識別します。 |  | DBA、システム管理者 | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、システム管理者 | 
| ソースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定します。 |  | DBA、システム管理者 | 
| アプリケーション移行戦略を特定します。 |  | DBA、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 |  | システム管理者 | 
| セキュリティグループを作成します。 |  | システム管理者 | 
| Amazon RDS DB インスタンスを設定して起動します。 |  | DBA、システム管理者 | 

### データ移行 — オプション 1
<a name="migrate-data---option-1"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ネイティブ SAP ASE ツールまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 |  | DBA | 

### データ移行 — オプション 2
<a name="migrate-data---option-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS でデータを移行します。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 |  | DBA、アプリ所有者、システム管理者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替ます。 |  | DBA、アプリ所有者、システム管理者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、システム管理者 | 
| プロジェクト文書を確認して検証する。 |  | DBA、アプリ所有者、システム管理者 | 
| 移行の所要時間、手動タスクと自動タスクの割合、コスト削減などのメトリクスを収集します。 |  | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  | DBA、アプリ所有者、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-resources"></a>

**リファレンス**
+ [Amazon Web Services に Microsoft SQL Server をデプロイする](https://d1.awsstatic.com/whitepapers/RDS/Deploying_SQLServer_on_AWS.pdf) 
+ [AWS DMS ウェブサイト](https://aws.amazon.com/dms/)
+ [Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/)
+ [AWS 上のMicrosoft 製品](https://aws.amazon.com/windows/products/)
+ [AWS 上の Microsoft ライセンシング](https://aws.amazon.com/windows/resources/licensing/)
+ [AWS 上の Microsoft SQL Server](https://aws.amazon.com/windows/products/sql/)
+ [Microsoft SQL Server DB インスタンスでの Windows 認証の使用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_SQLServerWinAuth.html)
+ 「[Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/)」

**チュートリアルと動画**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)
+ [ DMS (ビデオ)](https://www.youtube.com/watch?v=zb4GcjEdl8U) 
+ [Amazon RDS (ビデオ)](https://www.youtube.com/watch?v=igRfulrrYCo)  

# Rclone を使用して Microsoft Azure Blob から Amazon S3 にデータを移行する
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone"></a>

*Amazon Web Services、Suhas Basavaraj、Aidan Keane、Corey Lane*

## 概要
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-summary"></a>

このパターンでは、[Rclone](https://rclone.org/) を使用して Microsoft Azure Blob オブジェクトストレージから Amazon Simple Storage Service (Amazon S3) バケットにデータを移行する方法を説明します。このパターンを使用すると、1 回限りの移行や継続的なデータの同期を行うことができます。Rclone は Go で記述されたコマンドラインプログラムです。クラウドプロバイダーのさまざまなストレージテクノロジー間でデータを移動するために使用されます。

## 前提条件と制限事項
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Azure Blob コンテナサービスに保存されているデータ

## アーキテクチャ
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-architecture"></a>

**ソーステクノロジースタック**
+ Azure Blob ストレージコンテナ

**ターゲットテクノロジースタック**
+ Amazon S3 バケット
+ Amazon Elastic Compute Cloud (Amazon EC2) インスタンス

**アーキテクチャ**

![\[Microsoft Azure から Amazon S3 へのデータ移行\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6ead815d-7768-4726-b27d-97a70cd21081/images/abe69eee-632f-4ca2-abf6-3223f3f3ec94.png)


## ツール
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [Rclone](https://rclone.org/) は、**rsync** にインスパイアされたオープンソースのコマンドラインプログラムです。多くのクラウドストレージプラットフォームで、ファイルを管理するために使用できます。

## ベストプラクティス
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-best-practices"></a>

Azure から Amazon S3 にデータを移行する場合、不必要なコストや転送速度の低下を避けるため、以下の事項に注意してください。
+ AWS インフラストラクチャは、AWS リージョン `us-east-1` (北バージニア)や Azure リージョン `East US` など、Azure ストレージアカウントや Blob コンテナと同じ地域に作成します。
+ NAT ゲートウェイは、入口帯域幅と出口帯域幅の両方でデータ転送コストが発生するため、可能な限り使用しないでください。
+ [Amazon S3 用の VPC ゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) を使用すると、パフォーマンスが向上します。
+ Intel x86 インスタンスよりも低コストで高いパフォーマンスを実現するためには、AWS Graviton2 (ARM) プロセッサベースの EC2 インスタンスの使用を検討してください。Rcloneは 何度もクロスコンパイルされており、プリコンパイルされた ARM バイナリを提供します。

## エピック
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-epics"></a>

### AWS と Azure のクラウドリソースを準備する
<a name="prepare-aws-and-azure-cloud-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 送信先の S3 バケットを準備します。 | 適切な AWS リージョンに[新しい S3 バケットを作成するか](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)、移行するデータの宛先として既存のバケットを選択します。 | AWS 管理者 | 
| Amazon EC2 用の IAM インスタンスロールを作成します。 | [Amazon EC2 用の新しい AWS Identity and Access Management (IAM) ロールを作成します](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#working-with-iam-roles)。このロールは、送信先の S3 バケットへの書き込みアクセス権を EC2 インスタンスに与えます。 | AWS 管理者 | 
| IAM インスタンスロールをポリシーにアタッチする | IAM コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して、送信先の S3 バケットへの書き込みアクセスを許可する EC2インスタンスロールのインラインポリシーを作成します。ポリシーの例については、「[追加情報](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional)」セクションを参照してください。 | AWS 管理者 | 
| EC2 インスタンスの起動 | 新規作成した IAM サービスロールを使用するように設定された Amazon Linux EC2 インスタンスを起動します。このインスタンスは、インターネット経由で Azure パブリック API エンドポイントにアクセスする必要があります。 コストを削減するには、[AWS Graviton ベースの EC2 インスタンス](https://docs.aws.amazon.com/compute-optimizer/latest/ug/graviton-recommendations.html)の使用を検討してください。Rclone は ARM がコンパイルされたバイナリを提供します。 | AWS 管理者 | 
| Azure AD サービスプリンシパルを作成します。 | Azure CLI を使用して、ソース Azure Blob ストレージコンテナへの読み取り専用アクセス権がある Azure Active Directory (Azure AD) サービスプリンシパルを作成します。手順については、「[追加情報](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional)」セクションを参照してください。これらの認証情報を EC2 インスタンス上の場所 `~/azure-principal.json` に格納します。 | クラウド管理者 | 

### Rclone のインストールと設定
<a name="install-and-configure-rclone"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rclone をダウンロードしてインストールします。 | Rclone コマンドラインプログラムをダウンロードしてインストールします。インストール手順については、[Rclone インストールのドキュメント](https://rclone.org/install/)を参照してください。 | AWS 全般、クラウド管理者 | 
| Rclone を設定します。 | 次の `rclone.conf` サンプルファイルをコピーします。`AZStorageAccount` を Azure Storage アカウント名に置き換え、`us-east-1` をS3バケットのある AWS リージョンに置き換えます。このファイルを EC2 インスタンス上の場所 `~/.config/rclone/rclone.conf` に保存します。<pre>[AZStorageAccount]<br />type = azureblob<br />account = AZStorageAccount<br />service_principal_file = azure-principal.json<br /><br />[s3]<br />type = s3<br />provider = AWS<br />env_auth = true<br />region = us-east-1</pre> | AWS 全般、クラウド管理者 | 
| Rclone の設定を確認してください。 | Rclone が設定され、権限が正しく機能していることを確認するには、Rclone がプロファイルを解析し、Azure Blob コンテナと S3 バケット内のオブジェクトにアクセスできることを確認します。検証コマンドの例については、以下を参照してください。　[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.html) | AWS 全般、クラウド管理者 | 

### Rclone を使用してデータを移行します。　
<a name="migrate-data-using-rclone"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| コンテナからデータを移行します。　 | Rclone [コピー](https://rclone.org/commands/rclone_copy/)または[同期](https://rclone.org/commands/rclone_sync/)コマンドを実行します。 **例: コピー**このコマンドは、コピー元の Azure Blob コンテナから、送信先 S3 バケットにデータをコピーします。　<pre>rclone copy AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>**例: 同期**このコマンドは、ソースの Azure Blob コンテナと移行先の S3 バケット間でデータを同期します。** **<pre>rclone sync AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>**sync** コマンドを使用すると、ソースコンテナに存在しないデータは移行先の S3 バケットから削除されます。 | AWS 全般、クラウド管理者 | 
| コンテナを同期します  | 最初のコピーが完了したら、Rclone **同期**コマンドを実行して継続的な移行を実行し、移行先の S3 バケットにない新規ファイルのみをコピーします。 | AWS 全般、クラウド管理者 | 
| データが正常に移行されたことを確認します。 | データが移行先の S3 バケットに正常にコピーされたことを確認するには、Rclone [lsd](https://rclone.org/commands/rclone_lsd/) コマンドと [ls](https://rclone.org/commands/rclone_ls/) コマンドを実行します。 | AWS 全般、クラウド管理者 | 

## 関連リソース
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-resources"></a>
+ [「Amazon S3 ユーザーガイド」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) (AWS ドキュメント)
+ [「Amazon EC2 の IAM ロール」](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) (Amazon EC2 ドキュメント)
+ [「Microsoft Azure Blob コンテナの作成」](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) (Microsoft Azure ドキュメント)
+ [「Rclone コマンド」](https://rclone.org/commands/) (Rclone ドキュメント)

## 追加情報
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional"></a>

**EC2 インスタンスのロールポリシーの例**

このポリシーは、アカウント内の特定のバケットへの読み取り/書き込みアクセスを EC2 インスタンスに提供します。バケットでサーバー側の暗号化にカスタマーマネージドキーを使用する場合、ポリシーには AWS Key Management Service (AWS KMS) への追加アクセスが必要となる場合があります。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        }    
    ]
}
```

**読み取り専用の Azure AD サービスプリンシパルの作成**

Azure サービスプリンシパルは、顧客のアプリケーション、サービス、自動化ツールが特定の Azure リソースにアクセスするためのセキュリティ ID です。これは、特定のロールを持ち、リソースへのアクセスが厳密に制御されているユーザー ID (ログイン名とパスワードまたは証明書) と考えることができます。最小特権の権限に従い、Azure 内のデータを誤って削除されないように保護する読み取り専用のサービスプリンシパルを作成するには、次の手順に従います。

1. Microsoft Azure クラウドアカウントポータルにログインし、PowerShell でクラウドシェルを起動するか、ワークステーションで Azure コマンドラインインターフェイス (CLI) を使用します。

1. サービスプリンシパルを作成し、Azure Blob ストレージアカウントへの「[読み取り専用](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#storage-blob-data-reader)」アクセス権限を持つように設定します。このコマンドの JSON 出力を `azure-principal.json` というローカルファイルに保存します。ファイルは EC2 インスタンスにアップロードされます。　 括弧 (`{` と `}`) で示されているプレースホルダー変数を Azure サブスクリプション ID、リソースグループ名、ストレージアカウント名で置き換えます。　

   ```
   az ad sp create-for-rbac `
   --name AWS-Rclone-Reader `
   --role "Storage Blob Data Reader" `
   --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}
   ```

# カウチベースサーバーから AWS 上のカウチベースカペラへの移行
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws"></a>

*Amazon Web Services、Battulga Purevragchaa、Saurabh Shanbhag*

*Mark Gamble*

## 概要
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-summary"></a>

Couchbase Capella は、ミッションクリティカルなアプリケーション (ユーザープロファイル、オンラインカタログ、在庫管理など) 向けのフルマネージド型の NoSQL データベース・アズ・ア・サービス (DBaaS) です。Couchbase Capella は、Couchbase が管理する Amazon Web Services (AWS) アカウントで DBaaS ワークロードを管理します。Capellaを使用すると、複数のクラスター、複数の AWS リージョン、マルチクラウド、ハイブリッドクラウドのレプリケーションを単一のインターフェイスで簡単に実行および管理できます。

Couchbase Capella を使用すると、Couchbase Server アプリケーションを瞬時にスケーリングできるため、マルチノードクラスターを数分で作成できます。Couchbase Capella は、「[SQL\$1\$1](https://www.couchbase.com/products/n1ql)」、「[全文検索](https://www.couchbase.com/products/full-text-search)」、「[イベントサービス](https://docs.couchbase.com/server/current/eventing/eventing-overview.html)」、「[分析サービス](https://www.couchbase.com/products/analytics)」 など、Couchbase サーバーのすべての機能をサポートしています。また、インストール、アップグレード、バックアップ、一般的なデータベースメンテナンスを管理する必要もありません。 

このパターンでは、自己管理型の 「[Couchbase Server](https://www.couchbase.com/products/server)」 環境を AWS クラウドに移行するための手順とベストプラクティスを説明しています。このパターンは、オンプレミスでもクラウドでも稼働している Couchbase Server クラスターから Couchbase Capella にデータとインデックスを移行するための反復可能なプロセスを提供します。これらの手順を使用すると、移行中の問題を回避し、移行プロセス全体をスピードアップできます。

このパターンには次の 2 つの移行オプションがあります。
+ **オプション 1** は、移行するインデックスが 50 個未満の場合に適しています。 
+ **オプション 2** は、移行するインデックスが 50 個を超える場合に適しています。 

自己管理型の Couchbase Server に「[サンプルデータを設定して](https://docs.couchbase.com/server/current/manage/manage-settings/install-sample-buckets.html)」、移行ガイドに従うこともできます。

移行**オプション 2** を選択した場合や、デフォルト値以外のスコープやコレクションを使用する場合は、*追加情報*セクションにあるサンプル設定ファイルを使用する必要があります。

## 前提条件と制限事項
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-prereqs"></a>

**前提条件**
+ 既存の Couchbase Capella 有料アカウント。また、「[AWS で Couchbase Capella アカウント](https://aws.amazon.com/marketplace/pp/prodview-xrhx5zgue5c26)」を作成し、Couchbase Capella の無料トライアルを使用してから、有料アカウントにアップグレードしてクラスターを移行用に設定することもできます。試用版から始めるには、「[Couchbase Capella スタートガイド](https://docs.couchbase.com/cloud/get-started/create-account.html)」の指示に従ってください。
+ オンプレミスまたはクラウドサービスプロバイダーにデプロイされた既存の自己管理型の Couchbase Server 環境。 
+ 移行オプション 2 の場合は、Couchbase シェルと設定ファイル。設定ファイルを作成するには、*追加情報*セクションにあるサンプルファイルを使用できます。
+ Couchbase サーバーと Couchbase Capella の管理に精通していること。
+ コマンドラインインターフェイス (CLI) で TCP ポートを開いてコマンドを実行する方法

移行プロセスには、次の表に示す役割と専門知識も必要です。


| 
| 
| ロール  | 専門知識 | 責任 | 
| --- |--- |--- |
| Couchbase 管理者 | カウチベースサーバーとカウチベースカペラに精通していることコマンドラインに関する基本的な知識は役に立ちますが、必須ではありません。 | Couchbase サーバーと Capella 固有のタスク | 
| システム管理者、IT 管理者 | 自己管理型の Couchbase Server システム環境と管理に精通していること | 自己管理型の Couchbase Server クラスターノードでポートを開き、IP アドレスを決定する | 

 

**制限事項**
+ このパターンは、データ、インデックス、および 「[Couchbase 全文検索インデックスを Couchbase](https://docs.couchbase.com/server/current/fts/full-text-intro.html)」サーバーから AWS 上の Couchbase Capella に移行するために使用されます。このパターンは「[Couchbase イベントサービス](https://docs.couchbase.com/server/current/eventing/eventing-overview.html)」の移行や「[Couchbase Analytics](https://docs.couchbase.com/server/current/analytics/introduction.html)」の移行には適用されません。
+ カウチベースカペラは複数の AWS リージョンで利用できます。Capella がサポートするリージョンの最新情報については、Couchbase ドキュメントの「[Amazon Web Services](https://docs.couchbase.com/cloud/reference/aws.html)」を参照してください。

**製品バージョン**
+ 「[Couchbase サーバー (コミュニティまたはエンタープライズ) エディションバージョン 5.x 以降](https://docs.couchbase.com/server/current/release-notes/relnotes.html)」

## アーキテクチャ
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-architecture"></a>

**ソーステクノロジースタック**
+ カウチベースサーバー

**ターゲットテクノロジースタック**
+ カウチベース・カペラ

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

![\[AWS の Capella データプレーンで Couchbase Capella を Couchbase クラスターに移行する際は、4 つのステップで行います。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/14ac5a81-eade-4708-9335-f5602fa07824/images/95cd7f33-742e-4d10-8e2c-37c7b4d9df45.png)


1. Couchbase Capella にアクセスする際は **Capella コントロールプレーン**を使用します。 Capella コントロールプレーンを使用して、次のことを行うことができます。
   + アカウントを管理および監視します。
   + クラスターとデータ、インデックス、ユーザーとグループ、アクセス許可、監視、イベントを管理します。

1. クラスターが作成されました。

1. **Capella データプレーン**は Couchbase が管理する AWS アカウント内にあります。新しいクラスターを作成すると、Couchbase Capella は選択した AWS リージョンの複数のアベイラビリティーゾーンにクラスターをデプロイします。

1. Couchbase アプリケーションは、AWS アカウントの VPC で開発およびデプロイできます。通常、この VPC は 「[VPC ピアリング](https://docs.couchbase.com/cloud/clouds/private-network.html)」を通じて Capella データプレーンにアクセスします。

## ツール
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-tools"></a>
+ 「[Couchbase クロスデータセンターレプリケーション (XDCR)](https://docs.couchbase.com/cloud/current/clusters/xdcr/xdcr.html)」は、さまざまなクラウドプロバイダーやさまざまなデータセンターにあるクラスター間でデータを複製するのに役立ちます。自己管理型の Couchbase サーバー・クラスターから Couchbase Capella にデータを移行するために使用されます。
**注記**  
Couchbase Server コミュニティエディションで XDCR を使用して Couchbase Capella に移行することはできません。代わりに 「[cbexport](https://docs.couchbase.com/server/current/tools/cbexport.html)」を使用できます。詳しくは「*コミュニティエディションからのデータの移行*」をご確認ください。
+ 「[Couchbase Shell](https://couchbase.sh/docs/)」は Couchbase サーバーと Couchbase Capella 用のコマンドラインシェルで、ローカルおよびリモートの Couchbase クラスターにアクセスできます。このパターンでは、Couchbase シェルを使用してインデックスを移行します。
+ 「[cbexport](https://docs.couchbase.com/server/current/tools/cbexport.html)」は Couchbase クラスターからデータをエクスポートするための Couchbase ユーティリティです。「[カウチベースサーバーの CLI ツール](https://docs.couchbase.com/server/current/cli/cli-intro.html)」に含まれています。

## エピック
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-epics"></a>

### 移行の準備をする
<a name="prepare-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セルフマネージドの Couchbase Server クラスターのサイズを評価します。 | Couchbase サーバー用の [Couchbase Web コンソール](https://docs.couchbase.com/server/current/manage/manage-ui/manage-ui.html) にログインし、自己管理型クラスターのノードとバケットを評価します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)Couchbase Capella でターゲットクラスターのサイズ設定と設定を行う際の一般的なガイドとして、自己管理型の Couchbase Server クラスター設定を使用します。Couchbase Capella のサイジングに関するより詳細な情報が必要な場合は、「[Couchbase](https://www.couchbase.com/contact)」にお問い合わせください。 | Couchbase 管理者 | 
| 自己管理型の Couchbase サーバークラスターに Couchbase サービスのディストリビューションを記録します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 
| セルフマネージドの Couchbase Server クラスターノードの IP アドレスを記録します。 | (コミュニティエディションを使用する場合、このステップは無視します。) クラスター内の各ノードの IP アドレスを記録します。これらは後で Couchbase Capella クラスターの許可リストに追加されます。 | Couchbase 管理者、システム管理者 | 

### Couchbase Capella にリソースをデプロイして設定する
<a name="deploy-and-configure-resources-on-couchbase-capella"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| テンプレートの選択 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 
| ノードを選択して設定します。 | ノード数、サービス分布、コンピュートまたは RAM、ストレージなど、自己管理型の Couchbase Server クラスター環境に合わせてノードを選択し、設定します。Couchbase Capella は 「[多次元スケーリング](https://docs.couchbase.com/cloud/clusters/scale-cluster.html#scale-a-cluster)」のベストプラクティスを採用しています。サービスとノードは、デプロイメントのベストプラクティスに従ってのみ選択できます。つまり、自己管理型の Couchbase Server クラスターの設定と完全に一致させることはできないということかもしれません。 | Couchbase 管理者 | 
| クラスターをデプロイします。 | サポートゾーンとサポートパッケージを選択し、クラスターをデプロイします。詳細な手順と手順については、Couchbase「[ドキュメントの「クラスターの作成](https://docs.couchbase.com/cloud/clusters/create-cluster.html)」を参照してください。Couchbase Capella の無料トライアルを使用している場合は、移行を開始する前に有料アカウントに変換する必要があります。アカウントを変換するには、Couchbase Capella コントロールプレーンの **[請求]** セクションから **[アクティベーション ID を追加]** を選択してください。アクティベーション ID は、Couchbase Sales との購入契約を完了した後、または 「[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-xrhx5zgue5c26)」を通じて購入を行った後に、請求連絡先のメールアドレスに送信されます。 | Couchbase 管理者 | 
| データベース認証情報ユーザーを作成します。 | データベース認証情報はクラスター固有のもので、ユーザー名、パスワード、およびバケット権限セットで構成されます。このユーザーは、バケットの作成とバケットデータへのアクセスに必要です。 Couchbase Capella コントロールプレーンで、Couchbase Capella ドキュメントの「[データベース認証情報の設定](https://docs.couchbase.com/cloud/clusters/manage-database-users.html)」の指示に従って、新しいクラスターのデータベース認証情報を作成します。特定のクラスターのバケットデータにリモートまたは Couchbase Capella UI を通じてアクセスする場合、組織ユーザーに割り当てられた組織ロール認証情報が必要です。これは、アプリやインテグレーションで一般的に使用されるデータベース認証情報とは異なります。組織ユーザーを作成すると、Couchbase Capella クラスターにターゲットバケットを作成して管理できます。 | Couchbase 管理者 | 
| マイグレーションオプション 2 を使用している場合は、Couchbase シェルをインストールします。 | Couchbase シェルは、自己管理型の Couchbase サーバーと Couchbase Capella クラスターの両方にネットワークアクセスできる任意のシステムにインストールできます。詳細については、Couchbase シェルのドキュメンテーションの「[Couchbase シェルのバージョン 1.0.0-beta.5 のインストール](https://couchbase.sh/docs/#_installation)」を参照してください。コマンドラインターミナルで「[セルフマネージドクラスターへの接続をテストして](https://couchbase.sh/docs/#_connecting_to_a_cluster)」、Couchbase シェルがインストールされていることを確認します。 | Couchbase 管理者、システム管理者 | 
| IP アドレスを許可します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)許可される IP アドレスの詳細については、Couchbase ドキュメントの「[許可される IP アドレスの設定](https://docs.couchbase.com/cloud/get-started/configure-cluster-access.html#allow-ip-address)」を参照してください。 | Couchbase 管理者、システム管理者 | 
| 証明書の設定 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者、システム管理者 | 
| Couchbase シェルの設定ファイルを作成します。 | Couchbase シェルインストールのホームディレクトリ (例:`/<HOME_DIRECTORY>/.cbsh/config`) に設定ドットファイルを作成します。詳細については、Couchbase ドキュメントの「[Config dotfiles](https://couchbase.sh/docs/#_the_config_dotfiles)」を参照してください。ソースクラスターとターゲットクラスターの接続プロパティを設定ファイルに追加します。*[追加情報]* セクションからサンプルファイルを使用して、クラスター設定を編集できます。 `.cbsh` 更新した設定を含む設定ファイルをフォルダ (例:`/<HOME_DIRECTORY>/.cbsh/config`) に保存します。 | Couchbase 管理者、システム管理者 | 
| ターゲットバケットを作成する。 | Couchbase ドキュメントの「バケットの作成」の指示に従って、ソースバケットごとに Couchbase Capella クラスターに 1 つの「[ターゲットバケット](https://docs.couchbase.com/cloud/clusters/data-service/manage-buckets.html#add-bucket)」を作成します。ターゲット・バケット設定は、自己管理型の Couchbase Server クラスターのバケットのバケット名、メモリ設定、およびコンフリクト解決設定と一致する必要があります。 | Couchbase 管理者 | 
| スコープとコレクションを作成する。 | すべてのバケットには、`_default._default` キースペースを含むデフォルトのスコープとコレクションが含まれています。スコープとコレクションに他のキースペースを使用している場合は、ターゲット Capella クラスターに同一のキースペースを作成する必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)<pre>scopes --clusters "On-Prem-Cluster" --bucket <BUCKET_NAME> | select scope | where scope != "_default" | each { |it| scopes create $it.scope --clusters "Capella-Cluster" }<br />collections --clusters "On-Prem-Cluster" --bucket <BUCKET_NAME> | select scope collection | where $it.scope != "_default" | where $it.collection != "_default" | each { |it| collections create $it.collection --clusters "Capella-Cluster" --bucket <BUCKET_NAME> --scope $it.scope }</pre> | Couchbase 管理者 | 

### エンタープライズエディションからのデータの移行
<a name="migrate-the-data-from-enterprise-edition"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 自己管理型の Couchbase サーバー・クラスター・ノードで TCP ポートを開きます。 | 自己管理型の Couchbase Server クラスターのノードで XDCR 通信用の適切なポートが開いていることを確認します。詳細については、「[Couchbase サーバーポートドキュメント](https://docs.couchbase.com/server/current/install/install-ports.html#ports-listed-by-communication-path)」を参照してください。 | Couchbase 管理者、システム管理者 | 
| Couchbase Server Enterprise Edition を使用している場合は、Couchbase XDCR をセットアップします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 
| カウチベース XDCR を起動します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 

### オプション 1 を使用してインデックスを移行します。
<a name="migrate-the-indexes-by-using-option-1"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セルフマネージド・クラスター・インデックスを Couchbase Capella に移行します。 | 移行するインデックスが 50 個未満の場合は、このプロセスをお勧めします。移行するインデックスが 50 個以上ある場合は、移行オプション 2 を使用することをお勧めします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者、システム管理者 | 

### オプション 2 を使用してインデックスを移行します。
<a name="migrate-the-indexes-by-using-option-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| インデックス定義を移行します。 | 移行するインデックスが 50 個を超える場合は、このプロセスをお勧めします。移行するインデックスが 50 個未満の場合は、移行オプション 1 を使用することをお勧めします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者、システム管理者 | 
| インデックス定義を構築します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者、システム管理者 | 

### フルテキスト検索インデックスの移行
<a name="migrate-full-text-search-indexes"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 自己管理型クラスターの全文検索インデックスを Couchbase Capella に移行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 

### Couchbase コミュニティエディションからのデータの移行
<a name="migrate-data-from-couchbase-community-edition"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セルフマネージドの Couchbase Server コミュニティエディションからデータをエクスポートします。 | 暗号化された XDCR は Couchbase コミュニティエディションでは使用できません。Couchbase コミュニティエディションからデータをエクスポートし、そのデータを Couchbase Capella に手動でインポートできます。ソースバケットからデータをエクスポートするには、`cbexport` コマンドラインで使用します。次のコマンドが例として提供されます。<pre>cbexport json \<br />--cluster localhost \<br />--bucket <SOURCE BUCKET NAME> \<br />--format lines \<br />--username <USERNAME> \<br />--password <PASSWORD> \<br />--include-key cbkey \<br />--scope-field cbscope \<br />--collection-field cbcoll \<br />--output cbexported_data.json</pre>`cbkey`、`cbscope`、`cbcoll`、`cbexported_data.json` は任意のラベルであることに注意してください。これらはプロセスの後半で参照されるため、別の名前を付ける場合は、書き留めておいてください。 | Couchbase 管理者 | 
| データをカウチベースカペラにインポートします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html)大きなファイルの場合、Couchbase Capella は cURL を使ったコマンドラインインポートをサポートしています。インポートオプションの詳細については、Couchbase Capella ドキュメントの「[データのインポート](https://docs.couchbase.com/cloud/clusters/data-service/import-data-documents.html)」を参照してください。 | Couchbase 管理者 | 

### 移行のテストと検証
<a name="test-and-verify-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データ移行の確認。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 
| インデックスの移行を検証します。 | Couchbase Capella コントロールプレーンのターゲットクラスターの **[ツール]** ドロップダウンリストで、**[インデックス]** を選択します。インデックスが移行され、構築されていることを確認します。 | Couchbase 管理者 | 
| クエリ結果を検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 
| 全文検索結果を検証します (FTS インデックスを移行した場合に適用)。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-couchbase-server-to-couchbase-capella-on-aws.html) | Couchbase 管理者 | 

## 関連リソース
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-resources"></a>

**移行の準備をする**
+ 「[カウチベース・カペラの無料トライアルを始めましょう。](https://cloud.couchbase.com/sign-up)」
+ 「[カウチベースカペラのクラウドプロバイダー要件](https://docs.couchbase.com/cloud/reference/aws.html)」
+ 「[カウチベース・カペラのサイジング・ガイドライン](https://docs.couchbase.com/cloud/clusters/sizing.html)」

データとインデックスを移行してください。
+ 「[カウチベース XDCR](https://docs.couchbase.com/cloud/clusters/xdcr/xdcr.html)」
+ 「[カウチベース、シェル、ドキュメンテーション](https://couchbase.sh/docs/)」

カウチベース・カペラ SLA とサポート
+ 「[カウチベースカペラサービスレベルアグリーメント (SLA](https://www.couchbase.com/capellasla)」)
+ 「[カウチベース・カペラ・サービス・サポート・ポリシー](https://www.couchbase.com/support-policy/cloud)」

## 追加情報
<a name="migrate-from-couchbase-server-to-couchbase-capella-on-aws-additional"></a>

次のコード例は、「[Couchbase Shell の設定ファイル](https://couchbase.sh/docs/#_the_config_dotfiles)」です。 

```
Version = 1
 
[[clusters]]
identifier = "On-Prem-Cluster"
hostnames = ["<SELF_MANAGED_COUCHBASE_CLUSTER>"]
default-bucket = "travel-sample"
username = "<SELF_MANAGED_ADMIN>"
password = "<SELF_MANAGED_ADMIN_PWD>"
tls-cert-path = "/<ABSOLUTE_PATH_TO_SELF_MANAGED_ROOT_CERT>"
data-timeout = "2500ms"
connect-timeout = "7500ms"
query-timeout = "75s"
 
[[clusters]]
identifier = "Capella-Cluster"
hostnames = ["<COUCHBASE_CAPELLA_ENDPOINT>"]
default-bucket = "travel-sample"
username = "<CAPELLA_DATABASE_USER>"
password = "<CAPELLA_DATABASE_USER_PWD>"
tls-cert-path = "/<ABSOLUTE_PATH_TO_COUCHBASE_CAPELLA_ROOT_CERT>"
data-timeout = "2500ms"
connect-timeout = "7500ms"
query-timeout = "75s"
```

設定ファイルを保存する前に、以下の表を参照して、独自のソースとターゲットのクラスター情報を追加したことを確認します。

 


|  |  | 
| --- |--- |
| <SELF\$1MANAGED\$1COUCHBASE\$1CLUSTER> | セルフマネージドの Couchbase サーバークラスターの IP アドレスを使用します。 | 
| <SELF\$1MANAGED\$1ADMIN> | セルフマネージドの Couchbase サーバークラスターの管理者ユーザーを使用します。 | 
| <ABSOLUTE\$1PATH\$1TO\$1SELF\$1MANAGED\$1ROOT\$1CERT> | 自己管理型の Couchbase Server クラスターに保存されているルート証明書ファイルへの絶対パスを使用してください。 | 
| <COUCHBASE\$1CAPELLA\$1ENDPOINT> | Couchbase Capella クラスターの接続エンドポイントを使用します。 | 
| <CAPELLA\$1DATABASE\$1USER> | Couchbase Capella クラスターにはデータベースユーザーを使用します。 | 
| <CAPELLA\$1DATABASE\$1USER\$1PWD> | Couchbase Capella クラスターのユーザーパスワードを使用します。 | 
| <ABSOLUTE\$1PATH\$1TO\$1COUCHBASE\$1CAPELLA\$1ROOT\$1CERT> | Couchbase Server クラスターに対して、保存されたルート証明書ファイルの絶対パスを使用します。 | 

# IBM WebSphere アプリケーションサーバーから Amazon EC2 の Apache Tomcat に移行
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2"></a>

*Amazon Web Services、Neal Ardeljan、Afroz Khan*

## 概要
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-summary"></a>

このパターンでは、IBM WebSphere アプリケーションサーバー (WAS) を実行しているオンプレミスの Red Hat Enterprise Linux (RHEL) 6.9 以降のシステムから、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Apache Tomcat を実行している RHEL 8 に移行する手順を段階的に説明します。 

このパターンは、以下のソースバージョンとターゲットバージョンに適用されます： 
+ WebSphere アプリケーションサーバー 7.x から Apache Tomcat 8 (Java 7 以降搭載) 
+ WebSphere アプリケーションサーバー 8.x から Apache Tomcat 8 (Java 7 以降搭載) 
+ WebSphere アプリケーションサーバー 8.5.5.x から Apache Tomcat 9 (Java 8 以降搭載) 
+ WebSphere アプリケーションサーバー 8.5.5.x から Apache Tomcat 10 (Java 8 以降搭載) 

## 前提条件と制限事項
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ ソース Java コード、以下を前提とします：
  + Java 7 以降の Java 開発キット (JDK) バージョンを使用 
  + Spring または Apache Struts フレームワークを使用 
  + エンタープライズ Java Beans (EJB) フレームワークや、Tomcat ですぐに利用できないその他の WebSphere サーバー機能は使用しないでください。
  + 主にサーブレットまたは Java サーバーページ (JSP) を使用 
  + Java データベース接続性 (JDBC) コネクタを使用してデータベースに接続します  
+ ソース IBM WebSphere アプリケーションサーバーのバージョン 7.x 以降 
+ Apache Tomcat バージョン 8.5 以降がターゲット  

## アーキテクチャ
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-architecture"></a>

** ****ソーステクノロジースタック**
+ Apache Struts モデルビューコントローラー (MVC) フレームワークを使用して構築されたウェブアプリケーション 
+ IBM WebSphere アプリケーションサーバーバージョン 7.x または 8.x 上で動作するウェブアプリケーション
+ Lightweight Directory Access Protocol (LDAP) コネクタを使用して、 LDAP ディレクトリ (iPlanet/eTrust) に接続するウェブアプリケーション 
+ IBM Tivoli アクセスマネージャー(TAM) 接続を使用して TAM ユーザーパスワードを更新するアプリケーション (現在の実装では、アプリケーションは PD.jar を使用しています)

** ****オンプレミスのデータベース**
+ Oracle Database 21c (21.0.0.0)
+ Oracle Database 19c (19.0.0.0)
+ Oracle Database 12c Release 2 (12.2.0.1)
+ Oracle Database 12c Release 1 (12.1.0.2)

**ターゲットテクノロジースタック**
+ EC2 インスタンスの RHEL 上で実行されている Apache Tomcat バージョン 8 (またはそれ以降)
+ Oracle 向け PostgreSQLのAmazon Relational Database Service (Amazon RDS)¹

Amazon RDS でサポートされている Oracle のバージョンの詳細については、「[Amazon RDS for Oracle](https://aws.amazon.com/rds/oracle/)」 のウェブサイトを参照してください。

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

![\[IBM WebSphere から Amazon EC2 の Apache Tomcat に移行するためのアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/96f91201-e0a6-4d3f-a94e-7bd68a59cc4e/images/11afe7c0-b400-423b-9dfe-02a915fe47ff.png)


## ツール
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-tools"></a>
+ アプリケーション層: Java アプリケーションを WAR ファイルに再構築します。
+ データベース層: Oracle のネイティブバックアップおよび復元。
+ Jakarta EE 向けの Apache Tomcat 移行ツール。このツールは、Apache Tomcat 9 上で動作する Java EE 8 用に作成されたウェブアプリケーションを、Jakarta EE 9 を実装している Apache Tomcat 10 上で動作するように自動的に変換します。

## エピック
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション検出、現在の状態フットプリント、パフォーマンスベースラインを完了します。 |  | BA、移行リーダー | 
| ソースとターゲットデータベースのバージョンを検証します。 |  | DBA | 
| ターゲットサーバーの EC2 インスタンスのハードウェア要件を識別します。 |  | DBA、SysAdmin | 
| ストレージ要件 (ストレージタイプと容量) を特定します。 |  | DBA、SysAdmin | 
| 容量、ストレージ特徴量、ネットワーク特徴量に基づいて適切な EC2 インスタンスタイプを選択します。 |  | DBA、SysAdmin | 
| ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。 |  | DBA、SysAdmin | 
| アプリケーション移行戦略とツールを識別します。 |  | DBA、移行リーダー | 
| アプリケーションの移行設計と移行ガイドを完成させます。 |  | ビルドリード、移行リード | 
| アプリケーション移行ランブックを完成させます。 |  | ビルドリード、カットオーバーリード、テストリード、移行リード | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 |  | SysAdmin | 
| セキュリティグループを作成します。 |  | SysAdmin | 
| Amazon RDS for Oracle を設定し、起動します。 |  | DBA、SysAdmin | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベースバックアップファイルを取得するためのエンドポイントを作成するか、エンドポイントのアクセスを取得します。 |  | DBA | 
| ネイティブデータベースエンジンまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 | 詳細については、「*追加情報*」セクションの「データベースオブジェクトとデータの移行」を参照してください。 | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行のための変更要求 (CR) を提出します。 |  | カットオーバーリード | 
| 移行のCR の承認を取得します。 |  | カットオーバーリード | 
| アプリケーション移行ランブックのアプリケーション移行戦略に従います。 | 詳細については、「*追加情報*」セクションの「アプリケーション層の設定」を参照してください。 | DBA、移行エンジニア、アプリ所有者 | 
| アプリケーションをアップグレードします (必要な場合)。 |  | DBA、移行エンジニア、アプリ所有者 | 
| 機能テスト、非機能テスト、データ検証テスト、SLAテスト、パフォーマンステストを完了します。 |  | テストリード、アプリオーナー、アプリユーザー | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリ所有者またはビジネスオーナーから承認を取得します。 |  | カットオーバーリード | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 |  | DBA、移行エンジニア、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、移行エンジニア、SysAdmin | 
| プロジェクト文書を確認して検証する。 |  | 移行リード | 
| 移行の所要時間、手動タスクと自動タスクの割合、コスト削減などのメトリクスを収集します。 |  | 移行リード | 
| プロジェクトを終了し、フィードバックを提供します。 |  | 移行リーダー、アプリ所有者 | 

## 関連リソース
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-resources"></a>

**リファレンス**
+ 「[Apache Tomcat 10.0 ドキュメント](https://tomcat.apache.org/tomcat-10.0-doc/index.html)」
+ 「[Apache Tomcat 9.0 ドキュメント](https://tomcat.apache.org/tomcat-9.0-doc/index.html)」
+ 「[Apache Tomcat 8.0 ドキュメント](https://tomcat.apache.org/tomcat-8.0-doc)」
+ 「[Apache Tomcat 8.0 インストールガイド](https://tomcat.apache.org/tomcat-8.0-doc/setup.html)」
+ [Apache Tomcat JNDI ドキュメント](https://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html)
+ 「[Amazon RDS for Oracle ウェブサイト](https://aws.amazon.com/rds/oracle/)」 
+ 「[Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/)」 
+ 「[OracleとAmazon Web Services](https://aws.amazon.com/oracle/)」 
+ [Amazon RDS 上の Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ [Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/) 

**チュートリアルと動画**
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」 

## 追加情報
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-additional"></a>

「**データベースオブジェクトとデータの移行**」

例えば、Oracle のネイティブバックアップ/リストアユーティリティを使用する場合:

1. Amazon Simple Storage Service (Amazon S3) のバックアップを作成します (オプション)。

1. Oracle DB データをネットワーク共有フォルダにバックアップします。

1. 移行ステージングサーバーにログインして、ネットワーク共有フォルダをマップします。

1. ネットワーク共有フォルダからデータを S3 バケットにコピーします。

1. Amazon RDS マルチ AZ 配置をリクエストします。

1. オンプレミスデータベースのバックアップを Amazon RDS for Oracle に復元します。

**アプリケーション層をセットアップします**

1. Apache Tomcat のウェブサイトから Tomcat 8 (または 9/10) をインストールします。

1. アプリケーションと共有ライブラリーを WAR ファイルにパッケージ化します。

1. WAR ファイルを Tomcat にデプロイします。

1. WebSphere から見つからない共有ライブラリーを `Linux cat` するために、開始ログを監視します。

1. いずれかのWebSphere 固有のデプロイ記述子拡張を `Linux cat` するために、開始レコードを監視します。

1. 見つからない依存 Java ライブラリーを WebSphere サーバーから収集します。

1. WebSphere 固有のデプロイ記述子要素を Tomcat と互換性のある同等の要素で修正します。

1. 依存する Java ライブラリーと更新済みのデプロイ記述子を使用して、WAR ファイルをリビルドします。

1. LDAP 設定、データベース設定、テスト接続を更新します (Apache Tomcat ドキュメントの「[レルム設定のハウツー](https://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html)」 と「[JNDI データソースのハウツー](https://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html)」を参照)。

1. インストールされたアプリケーションを、復元された Amazon RDS for Oracle データベース に対しテストします。

1. EC2 インスタンスからLinux用の新しい Amazon マシンイメージ (AMI) を作成します。

1. 完成したアーキテクチャを、Application Load Balancer と Auto Scaling グループで起動します。

1. Application Load Balancer を指し示すように、URL を更新します (WebSEAL ジャンクションを使用して) 。

1. 構成管理データベース (CMDB) を更新します。

# IBM WebSphere アプリケーションサーバーから Amazon EC2 上の Apache Tomcat への自動スケーリングによる移行
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling"></a>

*Amazon Web Services、Kevin Yung、Afroz Khan*

## 概要
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-summary"></a>

このパターンは、Amazon EC2 Auto Scaling が有効になっている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Java アプリケーションを IBM WebSphere アプリケーションサーバーから Apache Tomcat に移行するためのガイダンスを提供します。 

このパターンを使用すると、以下を実現できます。
+ IBM のライセンスコストの削減
+ 高可用性を重視したマルチ AZ 配置
+ Amazon EC2 Auto Scaling によるアプリケーションの耐障害性の向上

## 前提条件と制限事項
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-prerequisites-and-limitations"></a>

**前提条件**
+ Java アプリケーション (バージョン 7.*x* または8.*x*) は LAMP スタックで開発する必要があります。
+ ターゲット状態は、Linux ホストで Java アプリケーションをホストすることです。このパターンは Red Hat Enterprise Linux (RHEL) 7 環境で正常に実装されました。他の Linux ディストリビューションでもこのパターンに従うことができますが、Apache Tomcat ディストリビューションの構成を参照する必要があります。
+ Java アプリケーションの依存関係を理解しておく必要があります。
+ 変更を加えるには、Java アプリケーションのソースコードへのアクセスが必要です。

**制限事項とリプラットフォームに関する変更**
+ エンタープライズアーカイブ (EAR) コンポーネントについて理解し、すべてのライブラリがウェブコンポーネント WAR ファイルにパッケージ化されていることを確認してください。[Apache Maven WAR プラグイン](https://maven.apache.org/plugins/maven-war-plugin/)を構成し、WAR ファイルのアーティファクトを生成する必要があります。
+ Apache Tomcat 8 を使用する場合、servlet-api.jar とアプリケーションパッケージの組み込み jar ファイルとの間に競合が発生することが知られています。この問題を解決するには、アプリケーションパッケージから servlet-api.jar を削除します。
+ [Apache Tomcat 構成](https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html)の*クラスパス*にある WEB-INF/リソースを構成する必要があります。デフォルトでは、JAR ライブラリはディレクトリにロードされません。または、すべてのリソースを src/main/resources の下にデプロイすることもできます*。*
+ Java アプリケーション内にハードコーディングされたコンテキストルートがあるかどうかを確認し、[Apache Tomcat の新しいコンテキストルート](https://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Defining_a_context)を更新します。
+ JVM ランタイムオプションを構成するには、Apache Tomcat の bin フォルダに JAVA\$1OPTS、JAVA\$1HOME ****などの構成ファイル setenv.sh を作成します。 
+ 認証はコンテナレベルで構成され、Apache Tomcat 構成のレルムとしてセットアップされます。認証は次の 3 つのレルムのいずれかで確立されます。 
  + [JDBC データベースレルム](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm)は、JDBC ドライバーがアクセスするリレーショナルデータベース内のユーザーを検索します。
  + [DataSource データベースレルム](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm)は、JNDI がアクセスするデータベース内のユーザーを検索します。
  + [JNDI ディレクトリレルム](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm)は、JNDI プロバイダーがアクセスする Lightweight Directory Access Protocol (LDAP) ディレクトリ内のユーザーを検索します。検索には以下が必要です。 
    + LDAP 接続の詳細: ユーザー検索ベース、検索フィルター、ロールベース、ロールフィルター 
    + 主要な JNDI ディレクトリレルム: LDAP に接続し、ユーザーを認証し、ユーザーがメンバーとなっているすべてのグループを取得します。
+ 権限: web.xml 内の権限制約をチェックするロールベースの権限を持つコンテナの場合、ウェブリソースを定義し、制約で定義されたロールと比較する必要があります。LDAP にグループロールマッピングがない場合は、web.xml で属性 <security-role-ref> を設定してグループロールマッピングを行う必要があります。構成ドキュメントの例については、[Oracle ドキュメント](https://docs.oracle.com/cd/E19226-01/820-7627/bncav/index.html)を参照してください。 
+ データベース接続: Amazon Relational Database Service (Amazon RDS) のエンドポイント URL と接続の詳細を使用して Apache Tomcat でリソース定義を作成します。JNDI 検索を使用して DataSource を参照するようにアプリケーションコードを更新します。WebSphere で定義されている既存の DB 接続は、WebSphere の JNDI 名を使用するため機能しません。JNDI 名と DataSource タイプの定義を含む <resource-ref> エントリを web.xml に追加できます。サンプル構成ドキュメントを見るには、[Apache Tomcat ドキュメント](https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html#JDBC_Data_Sources)を参照してください。
+ ロギング: デフォルトでは、Apache Tomcat はコンソールまたはログファイルにログを記録します。*logging.properties* を更新することでレルムレベルのトレースを有効にできます (「[Tomcat でロギングする](https://tomcat.apache.org/tomcat-8.0-doc/logging.html)」を参照)。Apache Log4j を使用してログをファイルに追加する場合は、tomcat-juli をダウンロードして*クラスパス*に追加する必要があります。
+ セッション管理: アプリケーションの負荷分散とセッション管理用に IBM WebSEAL をそのまま使用する場合は、変更は必要ありません。AWS の Application Load Balancer または Network Load Balancer を使用して IBM WebSEAL コンポーネントを置き換える場合は、Memcached クラスターで Amazon ElastiCache インスタンスを使用してセッション管理を設定し、[オープンソースのセッション管理](https://github.com/magro/memcached-session-manager)を使用できるように Apache Tomcat をセットアップする必要があります。 
+ IBM WebSEAL フォワードプロキシを使用している場合は、AWS に新しい Network Load Balancer をセットアップする必要があります。WebSEAL ジャンクション構成には、Network Load Balancer が提供する IP を使用してください。
+ SSL 構成: エンドツーエンドの通信にはセキュアソケットレイヤー (SSL) を使用することをお勧めします。Apache Tomcat で SSL サーバー構成をセットアップするには、[Apache Tomcat ドキュメント](https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html)に記載されている指示に従ってください。 

## アーキテクチャ
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-architecture"></a>

**ソーステクノロジースタック**
+ IBM WebSphere アプリケーション

 

**ターゲットテクノロジースタック**
+ [アーキテクチャは Elastic Load Balancing (バージョン 2](https://docs.aws.amazon.com/elasticloadbalancing/)) を使用しています。アイデンティティ管理と負荷分散に IBM WebSEAL を使用している場合は、AWS 上のNetwork Load Balancer を選択して IBM WebSEAL リバースプロキシと統合できます。
+ Java アプリケーションは、[Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html) グループの EC2 インスタンスで実行されている Apache Tomcat アプリケーションサーバーにデプロイされます。CPU 使用率などの Amazon CloudWatch メトリクスに基づいて[スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/ec2/userguide/scaling_plan.html)を設定できます。 
+ 負荷分散のための IBM WebSEAL の使用を廃止する場合は、[Amazon ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) をセッション管理に使用できます。
+ バックエンドデータベースでは [High Availability (Multi-AZ) for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) をデプロイし、データベースエンジンタイプを選択できます。

 

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

![\[AWS クラウド architecture with VPC, two availability zones, load balancer, and database components.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/52b91dab-7b3b-4751-abe2-25e7c7cd8d89/images/25125023-9a81-452a-9ada-184e2416cc02.png)


## ツール
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-tools"></a>
+ [ CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
+ Apache Tomcat (バージョン 7.*x* または 8.*x*)
+ RHEL 7 or Centos 7
+ [Amazon RDS マルチ AZ デプロイ](https://aws.amazon.com/rds/details/multi-az/)
+ [Amazon ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) (オプション)

## エピック
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-epics"></a>

### VPC をセットアップする
<a name="set-up-the-vpc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 |  |  | 
| サブネットを作成します。 |  |  | 
| 必要に応じてルートテーブルを作成する。 |  |  | 
| ネットワークアクセスコントロールリスト (ACL) |  |  | 
| AWS Direct Connect または会社の VPN 接続をセットアップする。 |  |  | 

### アプリケーションをリプラットフォームする
<a name="replatform-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションビルド Maven 構成をリファクタリングして WAR アーティファクトを生成する。 |  |  | 
| Apache Tomcat のアプリケーション依存関係データソースをリファクタリングする。 |  |  | 
| Apache Tomcat の JNDI 名を使用するようにアプリケーションのソースコードをリファクタリングする。 |  |  | 
| WAR アーティファクトを Apache Tomcat にデプロイする。 |  |  | 
| アプリケーションの検証とテストを完了する。 |  |  | 

### ネットワークを構成する
<a name="configure-the-network"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 依存関係サービスへの接続を許可するように会社ファイアウォールを構成する。 |  |  | 
| エンドユーザーが AWS の Elastic Load Balancing にアクセスできるように企業ファイアウォールを構成する。 |  |  | 

### アプリケーションインフラストラクチャを作成する
<a name="create-the-application-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスにアプリケーションを作成してデプロイする。 |  |  | 
| セッション管理用の Amazon ElastiCache for Memcached クラスターを作成する。 |  |  | 
| バックエンドデータベース用の Amazon RDS マルチ AZ インスタンスを作成する。 |  |  | 
| AWS Certificate Manager (ACM) を使用して SSL 証明書を作成し、インポートします。 |  |  | 
| SSL 証明書をロードバランサーにインストールする。 |  |  | 
| SSL 証明書を Apache Tomcat サーバーにインストールする。 |  |  | 
| アプリケーションの検証とテストを完了する。 |  |  | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 既存のインフラストラクチャをシャットダウンする。 |  |  | 
| データベースを本番環境から Amazon RDS に復元する。。 |  |  | 
| DNS を変更してアプリケーションを切り離す。 |  |  | 

## 関連リソース
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-related-resources"></a>

**リファレンス**
+ [Apache Tomcat 7.0 ドキュメント](https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html)
+ [Apache Tomcat 7.0 インストールガイド](https://tomcat.apache.org/tomcat-7.0-doc/appdev/installation.html)
+ [Apache Tomcat JNDI ドキュメント](https://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html)
+ [Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/)
+ [Amazon ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html)

**チュートリアルと動画**
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」

# .NET アプリケーションを Microsoft Azure App Serviceから AWS Elastic Beanstalk に移行
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk"></a>

*Amazon Web Services、Raghavender Madamshitti*

## 概要
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-summary"></a>

このパターンでは、Microsoft Azure App Service でホストされた .NET ウェブアプリケーションを AWS Elastic Beanstalk に移行する方法を説明します。アプリケーションを Elastic Beanstalk に移行するには、次の 2 つの方法があります。
+ AWS Toolkit for Visual Studio を使用-Microsoft Visual Studio IDE 用のこのプラグインは、カスタム .NET アプリケーションを AWS にデプロイする最も簡単でわかりやすい方法を提供しています。この方法で、.NET コードを直接 AWS にデプロイし、SQL Server データベース用の Amazon Relational Database Service (Amazon RDS) などのサポートリソースを Visual Studio から直接作成できます。
+ Elastic Beanstalk へのアップロードとデプロイ-各 Azure App Service には、メモリダンプやデプロイログのキャプチャ、設定パラメータの表示、デプロイパッケージへのアクセスに便利な Kudu というバックグラウンドサービスが含まれています。Kudu コンソールで Azure App Serviceのコンテンツにアクセスし、デプロイパッケージを抽出し、Elastic Beanstalk コンソールのアップロードとデプロイオプションを使用してパッケージを Elastic Beanstalk にアップロードできます。

このパターンは、2 番目の方法 (Kudu 経由で Elastic Beanstalk にアプリケーションをアップロードする) を説明しています。このパターンは、AWS Elastic Beanstalk、Amazon Virtual Private Cloud (Amazon VPC)、Amazon CloudWatch、Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling、Amazon Simple Storage Service (Amazon S3) と Amazon Route 53 を含む AWS サービスも使用します。 

.NET ウェブアプリケーションは Amazon EC2 Auto Scaling Group で実行される AWS Elastic Beanstalk にデプロイされます。CPU 使用率などの Amazon CloudWatch メトリックスに基づき、スケーリングポリシーを設定できます。データベースの場合、アプリケーションとビジネス要件により、Multi-AZ 環境で Amazon RDS または Amazon DynamoDB を使用することができます。

## 前提条件と制限
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Azure App Service で実行される .NET ウェブアプリケーション
+ Azure App Service Kudu コンソールを使用する権限

**製品バージョン**
+ .NET Core (x64) 1.0.1、2.0.0 以降、または .NET Framework 4.x、3.5 (「[Windows Server の .NET プラットフォーム履歴](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-dotnet.html)」を参照)
+ Windows Server 2012 以降で実行されるInternet Information Services (IIS) バージョン 8.0 以降
+ .NET 2.0 または 4.0 ランタイム。

## アーキテクチャ
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-architecture"></a>

**ソーステクノロジースタック**
+  .NET Framework 3.5 以降、または.NET Core 1.0.1、2.0.0 以降を使用して開発され、Azure App Service (web app または API app) でホストされているアプリケーション

**ターゲットテクノロジースタック**
+ Amazon EC2 Auto Scaling グループで実行される AWS Elastic Beanstalk

移行アーキテクチャ

![\[Kudu は Azure App Service コンテンツにアクセスし、デプロイパッケージを取得して、Elastic Beanstalk にアップロードします。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/df606a2d-b0a8-4035-b377-0a760e7300c9/images/dd15f97b-9cf2-4bcc-af45-44df1c4ca4a5.png)


 

**デプロイのワークフロー**

![\[アプリケーションを作成し、起動環境に公開して、環境を管理するデプロイワークフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/df606a2d-b0a8-4035-b377-0a760e7300c9/images/accec77d-c753-4166-8f27-bd4932b3d884.png)


## ツール
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-tools"></a>

**ツール**
+ .NET Core or .NET Framework
+ C\$1
+ IIS
+ Kudu コンソール

AWS サービスと機能
+ 「[AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html)」— Elastic Beanstalk は、.NET ウェブアプリケーションをデプロイ、スケーリングするための使いやすいサービスです。Elastic Beanstalk は、キャパシティのプロビジョニング、ロードバランシング、自動スケーリングを自動的に管理します。
+ 「[Amazon EC2 Auto Scaling グループ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html)」 — Elastic Beanstalk には、環境内の Amazon EC2 インスタンスを管理する Auto Scaling グループが含まれています。単一インスタンス環境では、Auto Scaling グループは常に1 つのインスタンスが実行されているよう確認します。負荷分散される環境では、実行する範囲のグループを設定すると、Amazon EC2 Auto Scaling は、負荷に基づき、必要に応じてインスタンスを追加または削除します。
+ 「[Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)」 — AWS Elastic Beanstalk でロードバランスを有効にすると、環境内の EC2 インスタンス間でトラフィックを分散するロードバランサーが作成されます。
+ 「[Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)」 — Elastic Beanstalk は Amazon CloudWatch を自動的に使用して、アプリケーションや環境のリソースに関する情報を提供します。Amazon CloudWatch は、標準メトリックス、カスタムメトリックスおよびアラームをサポートしています。
+ 「[Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html)」— Amazon Route 53 は、可用性と拡張性の高いドメインネームシステム (DNS) のウェブサービスです。Route 53 エイリアスレコードで、カスタムドメイン名を AWS Elastic Beanstalk 環境にマッピングできます。

## エピック
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-epics"></a>

### VPC をセットアップする
<a name="set-up-a-vpc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を設定します。 | AWS アカウントで、必要な情報により VPC を作成します。 | システム管理者 | 
| サブネットを作成します。 | VPC 内に 2 つのサブネットを作成します。 | システム管理者 | 
| ルートテーブルを作成します。 | ご要件に基づいてルートテーブルを作成します。 | システム管理者 | 

### Elastic Beanstalk のセットアップ
<a name="set-up-elastic-beanstalk"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Azure App Service Kudu コンソールにアクセスします。 | Azure ポータルから Kudu にアクセスするには、App Service ダッシュボードに移動し、**[高度なツール]**、**[移動]** の順に選択します。または、以下のように Azure App Service URL を変更することもできます。`https://<appservicename>.scm.azurewebsites.net` | アプリ開発者、システム管理者 | 
| Kudu からデプロイパッケージをダウンロードします。 | **[DebugConsole]** オプションを選択して Windows PowerShell に移動します。これにより、Kudo コンソールが開きます。`wwwroot` フォルダに移動してダウンロードします。これにより、Azure App Service のデプロイパッケージが zip ファイルとしてダウンロードされます。例としては、添付ファイルを参照してください。 | アプリ開発者、システム管理者 | 
| Elastic Beanstalk 用のパッケージを作成します。 | Azure App Service からダウンロードしたデプロイパッケージを解凍します。`aws-windows-deployment-manifest.json` という名前の JSON ファイルを作成します (このファイルは .NET Core アプリケーションにのみ必要です)。`aws-windows-deployment-manifest.json` と Azure App Service デプロイパッケージファイルを含む zip ファイルを作成します。例としては、添付ファイルを参照してください。 | アプリ開発者、システム管理者 | 
| 新しい Elastic Beanstalk アプリケーションを作成します。 | Elastic Beanstalk コンソールで開きます。既存のアプリケーションを選択するか、新しいアプリケーションを作成します。 | アプリ開発者、システム管理者 | 
| 環境の作成 | Elastic Beanstalk コンソールの **[アクション]** メニューで、**[環境を作成]** を選択します。ウェブサーバー環境と.NET/IIS プラットフォームを選択します。アプリケーションコードについては、**[アップロード]** を選択します。Elastic Beanstalk 用に準備した zip ファイルをアップロードし、**[環境を作成]** を選択します。 | アプリ開発者、システム管理者 | 
| Amazon CloudWatch を設定します。 | デフォルトでは、基本的な CloudWatch モニタリングが有効です。設定を変更したい場合は、Elastic Beanstalk ウィザードで公開アプリケーションを選択し、次に **[モニタリング]** を選択します。 | システム管理者 | 
| デプロイパッケージが Amazon S3 にあることを確認します。 | アプリケーション環境が作成されると、S3 バケットにデプロイパッケージが表示されます。 | アプリ開発者、システム管理者 | 
| アプリケーションをテストします。 | 環境が作成されたら、Elastic Beanstalk コンソールの中の URL で、アプリケーションをテストします。 | システム管理者 | 

## 関連リソース
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-resources"></a>
+ 「[AWS Elastic Beanstack コンセプト](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.html)」(Elastic Beanstalk のドキュメント)
+ 「[Elastic Beanstalk での .NET の開始方法](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/dotnet-getstarted.html)」(Elastic Beanstalk のドキュメント)
+ 「[Kudu コンソール](https://github.com/projectkudu/kudu/wiki/Kudu-console)」(GitHub)
+ [［Kudu］を使って Azure Web Apps を管理する](https://www.gslab.com/blogs/kudu-azure-web-app/) (GS Lab の記事)
+ 「[カスタム ASP.NET Core Elastic Beanstalk デプロイ](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-beanstalk-custom-netcore.html)」(AWS Toolkit for Visual Studio ユーザーガイド)
+ 「[Elastic Load Balancing のドキュメント](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)」
+ 「[AWS Elastic Beanstalk がサポートするプラットフォーム](https://docs.amazonaws.cn/en_us/elasticbeanstalk/latest/platforms/platforms-supported.html)」(Elastic Beanstalk のドキュメント)
+ 「[AWS に Web Application をデプロイ](https://www.c-sharpcorner.com/article/deploying-a-web-application-to-aws/)」(C\$1 Corner の記事)
+ 「[Auto Scaling Groupのサイズのスケーリング](https://docs.aws.amazon.com/autoscaling/ec2/userguide/scaling_plan.html)」(Amazon EC2 のドキュメント)
+ 「[Amazon RDS での高可用性 (Multi-AZ)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html)」(Amazon RDS のドキュメント)

## 追加情報
<a name="migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk-additional"></a>

**Notes** (メモ)
+ オンプレミスまたは Azure SQL Server データベースを Amazon RDS に移行する場合は、データベース接続の詳細も更新する必要があります。 
+ テスト目的で、サンプルデモアプリケーションが添付されています。

## アタッチメント
<a name="attachments-df606a2d-b0a8-4035-b377-0a760e7300c9"></a>

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

# Amazon ECS で Oracle WebLogic から Apache Tomcat (ToMee) に移行する
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs"></a>

*Amazon Web Services、Anya Epishcheva and Harshad Gohil*

## 概要
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-summary"></a>

このパターンでは、Oracle WebLogic を実行しているオンプレミスの Oracle Solaris SPARC システムを、Amazon Elastic Container Service (Amazon ECS) で [Apache ToMee ](http://tomee.apache.org/)(コンテナサポートが追加された Apache Tomcat) を実行する Docker コンテナベースのインストールに移行する手順について説明します。

Oracle WebLogic から Tomcat に移行するアプリケーションに関連するデータベースを移行する方法については、このカタログのデータベース移行パターンを参照してください。 

**ベストプラクティス**

Java および Java Enterprise Edition (Java EE) ウェブアプリケーションを移行する手順は、アプリケーションが使用するコンテナ固有のリソースの数によって異なります。Spring ベースのアプリケーションは、デプロイメントコンテナへの依存関係が少ないため、通常は移行が容易です。これとは対照的に、Enterprise JavaBeans (EJB) や、スレッドプール、Java 認証認可サービス (JAAS)、Container-Managed Persistence (CMP) などのマネージドコンテナリソースを使用する Java EE アプリケーションはより多くの労力を要します。 

Oracle Application Server 向けに開発されたアプリケーションでは、Oracle Identity Management スイートがよく使用されます。オープンソースのアプリケーションサーバーに移行するお客様は、多くの場合、SAML ベースのフェデレーションを使用して ID 管理とアクセス管理を再実装することを選択します。また、Oracle Identity Management スイートからの移行が選択肢にない場合に Oracle HTTP Server Webgate を使用する企業もあります。 

Java および Java EE ウェブアプリケーションは、AWS Fargate や Amazon ECS などの Docker ベースの AWS サービスにデプロイするのに最適です。お客様はしばしば、ターゲットアプリケーションサーバーの最新バージョン (TomEEなど) と Java 開発キット (JDK) がプリインストールされた Docker イメージを選択します。ベースの Docker イメージの上にアプリケーションをインストールし、Amazon Elastic Container Registry (Amazon ECR) レジストリに公開し、それを使用して AWS Fargate または Amazon ECS にアプリケーションをスケーラブルにデプロイします。 

アプリケーションのデプロイには伸縮性があること、つまり、トラフィックやワークロードに応じてアプリケーションインスタンスの数をスケールインまたはスケールアウトできるのが理想的です。これは、需要に応じて容量を調整するためには、アプリケーションインスタンスをオンラインにするか終了する必要があることを意味します。 

Java アプリケーションを AWS に移行するときは、ステートレスにすることを検討してください。これは、コンテナ化を使用して水平スケーリングを可能にする AWS Well-Architected フレームワーク の主要なアーキテクチャ原則です。例えば、ほとんどの Java ベースのウェブアプリケーションはユーザーセッション情報をローカルに保存します。Amazon Elastic Compute Cloud (Amazon EC2) の自動スケーリングやその他の理由によるアプリケーションインスタンスの終了に備えて、ユーザーセッション情報をグローバルに保存する必要があるからです。これにより、ウェブアプリケーションユーザーは、ウェブアプリケーションに再接続したり再ログインしたりすることなく、シームレスかつ透過的に作業を続けることができます。このアプローチには、Amazon ElastiCache for Redis やグローバルデータベースへのセッション状態の保存など、いくつかのアーキテクチャオプションがあります。TomEE などのアプリケーションサーバーにはプラグインがあり、Redis、データベース、その他のグローバルデータストアを介してセッションの保存と管理を可能にします。

Amazon CloudWatch や AWS X-Ray と簡単に統合できる、共通の一元化されたログおよびデバッグツールを使用してください。移行は、アプリケーションのライフサイクル機能を向上させる機会となります。例えば、継続的な統合や継続的なデリバリー (CI/CD) パイプラインを使用して変更を簡単に行えるように、ビルドプロセスを自動化したい場合です。そのためには、ダウンタイムなしでデプロイできるようにアプリケーションを変更する必要があるかもしれません。 

## 前提条件と制限事項
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-prerequisites-and-limitations"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ ソース Java コードと JDK 
+ Oracle WebLogic で構築されたソースアプリケーション
+ アイデンティティ管理とアクセス管理のための定義済みソリューション (SAML または Oracle Webgate)
+ アプリケーションセッション管理のための定義済みソリューション (Amazon ElastiCache や同等の方法を使用するか、または必要に応じてアプリケーションをステートレスにする)
+ チームが Apache TomEE に移植できるように J2EE 固有のライブラリをリファクタリングする必要があるかどうかの理解 (Apache ウェブサイトの「[Java EE 7 実装状況](http://tomee.apache.org/javaee7-status.html)」を参照) 
+ セキュリティ要件に基づいて強化された TomEE イメージ
+ ターゲット TomEE がプリインストールされたコンテナイメージ 
+ アプリケーションの修正 (ログ、デバッグビルド、認証など) が合意され、必要に応じて実施されている

**製品バージョン**
+ Oracle WebLogic OC4J、9i、10g 
+ Tomcat 7 (Java 1.6 以降を搭載) 

## アーキテクチャ
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-architecture"></a>

 **ソーステクノロジースタック**
+ Oracle WebLogic を使用して構築されたウェブアプリケーション
+ Oracle Webgate または SAML 認証を使用するウェブアプリケーション
+ Oracle Database バージョン 10g 以降に接続されているウェブアプリケーション 

**ターゲットテクノロジースタック**
+ Amazon ECS 上で実行されている TomEE (コンテナサポートが追加された Apache Tomcat) (「[Deploying Java Web Applications](https://aws.amazon.com/answers/web-applications/aws-web-app-deployment-java/)」および 「[Java Microservices on Amazon ECS](https://aws.amazon.com/blogs/compute/deploying-java-microservices-on-amazon-ec2-container-service/)」も参照してください) 
+ Oracle 用の Amazon Relational Database Service (Amazon RDS)。Amazon RDS でサポートされている Oracle バージョンについては、[Amazon RDS for Oracle](https://aws.amazon.com/rds/oracle/) を参照してください****

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

![\[AWS クラウド architecture diagram showing VPC, application subnets, and shared services account components.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/d5e7b3fa-062f-4559-af56-aa6058f96755/images/762193cf-aa68-4195-b3c7-6541caee61c9.png)


 

## ツール
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-tools"></a>

TomEE で動作させるには、Java アプリケーションを .war ファイルに再構築する必要があります。TomEE 上でアプリケーションを操作するためにアプリケーションの変更が必要な場合があります。必要な構成オプションと環境プロパティが正しく定義されていることを確認してください。  

また、Java Naming and Directory Interface (JNDI) ルックアップと JavaServer ページ (JSP) 名前空間が正しく定義されている必要があります。組み込みの T ライブラリとの名前の衝突を避けるため、アプリケーションが使用するファイル名を確認することを検討してください。例えば、persistence.xml は Apache OpenJPA フレームワーク (TomEE では OpenEJB にバンドルされている) で構成目的で使用されるファイル名です。PUI の persistence.xml ファイルには Spring フレームワークの Bean 宣言が含まれています。  

TomEE バージョン 7.0.3 以降 (Tomcat 8.5.7 以降) は、特殊文字を含む未加工の (エンコードされていない) URL に対して HTTP 400 レスポンス (不正リクエスト) を返します。サーバーからの応答は、エンドユーザーには空白ページとして表示されます。旧バージョンの TomEE と Tomcat では、URL にエンコードされていない一部の特殊文字を使用できました。ただし、[CVE-2016-6816 ウェブサイト](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6816)に記載されているように、安全ではないと見なされています。URL エンコーディングの問題を解決するには、JavaScript を介してブラウザに直接渡される URL を、未加工の文字列として使用するのではなく **encodeURI()** メソッドでエンコードする必要があります。

.war ファイルを TomEE にデプロイした後、*Linux cat* の*起動ログ*をモニタリングして、見つからない共有ライブラリや Oracle 固有の拡張機能がないかを確認し、Tomcat ライブラリから不足しているコンポーネントを追加してください。 

 

**一般的な手順**
+ TomEE 上でアプリケーションを構成します。
+ アプリケーションサーバー固有の構成ファイルとリソースを特定し、ソースからターゲット形式まで再構成します。
+ JNDI リソースを特定して再構成します。
+ EJB 名前空間とルックアップを、ターゲットアプリケーションサーバーが必要とする形式に調整します (該当する場合)。
+ JAAS アプリケーションコンテナ固有のセキュリティロールとプリンシパルマッピング (該当する場合) を再構成します。
+ アプリケーションと共有ライブラリを.war ファイルにパッケージ化します。
+ 指定の Docker コンテナを使用して、.war ファイルを TomEE にデプロイします。
+ *開始ログ*をモニタリングして、見つからない共有ライブラリとデプロイメント記述子の拡張子がないか確認します。見つかった場合は、最初のタスクに戻ってください。
+ インストールしたアプリケーションを、復元された Amazon RDS データベースと照合してテストします。
+ 「[Docker コンテナのデプロイ](https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/)」の手順に従って、ロードバランサーと Amazon ECS クラスターを含むアーキテクチャ全体を起動します。
+ ロードバランサーを指すように URL を更新します。
+ 構成管理データベース (CMDB) を更新します。

## エピック
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションの検出 (現在の状態フットプリントとパフォーマンスベースライン) を行います。 |  | BA、移行リーダー | 
| ソースとターゲットのデータベースのバージョンとエンジンを検証します。 |  | DBA | 
| ソースとターゲットのアプリケーション設計 (ID とセッション管理) を検証します。 |  | DBA、移行エンジニア、アプリ所有者 | 
| ターゲットサーバーインスタンスのハードウェア要件とストレージ要件を特定します。 |  | DBA、SysAdmin | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、SysAdmin | 
| ソースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定します。 |  | DBA、SysAdmin | 
| アプリケーション移行戦略とツールを特定します。 |  | DBA、移行リーダー | 
| アプリケーションの移行設計と移行ガイドを完成させます。 |  | ビルドリード、移行リード | 
| アプリケーション移行ランブックを完成させます。 |  | ビルドリード、カットオーバーリード、テストリード、移行リード | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 |  | SysAdmin | 
| セキュリティグループを作成します。 |  | SysAdmin | 
| Amazon RDS DB インスタンスを構成および起動します。 |  | DBA、SysAdmin | 
| Amazon ECS デプロイを構成します。 |  | SysAdmin | 
| アプリケーションを Docker イメージとしてパッケージ化します。 |  | SysAdmin | 
| イメージを Amazon ECR レジストリにプッシュする (または、このステップをスキップして Amazon ECS クラスターにプッシュする)。 |  | SysAdmin | 
| アプリケーションと Amazon ECS サービスのオプションのタスク定義を構成します。 |  | SysAdmin | 
| クラスターを構成し、セキュリティ構成を確認し、AWS Identity and Access Management (IAM) ロールを構成します。 |  | SysAdmin | 
| セットアップを起動し、アプリケーション移行ランブックに従ってテストを実行します。 |  | SysAdmin | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セキュリティ保証チームの許可を得て、本番データを AWS に移行します。 |  | DBA、移行エンジニア、アプリ所有者 | 
| エンドポイントを作成してアクセスし、データベースのバックアップファイルを取得します。 |  | DBA | 
| ネイティブ データベースエンジンまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 |  | DBA | 
| アプリケーション移行ランブックから必要なテストを実行して、データ移行が成功したことを確認します。 |  | DBA、移行エンジニア、アプリ所有者 | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行用の変更リクエスト (CR) を作成します。 |  | カットオーバーリード | 
| 移行のためのCR 承認を得ます。 |  | カットオーバーリード | 
| アプリケーション移行ランブックに記載されているアプリケーション移行戦略に従います。 |  | DBA、移行エンジニア、アプリ所有者 | 
| アプリケーションをアップグレードします (必要な場合)。 |  | DBA、移行エンジニア、アプリ所有者 | 
| 機能テスト、非機能テスト、データ検証、SLA、パフォーマンステストを完了します。 |  | テストリード、アプリオーナー、アプリユーザー | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリ所有者またはビジネスオーナーから承認を得ます。 |  | カットオーバーリード | 
| テーブルトピックの演習を実施して、カットオーバーランブックのすべてのステップを順を追って説明します。 |  | DBA、移行エンジニア、アプリ所有者 | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 |  | DBA、移行エンジニア、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | DBA、移行エンジニア、SysAdmin | 
| プロジェクト文書を確認して検証する。 |  | 移行リード | 
| 移行の所要時間、手動とツールの比率、コスト削減などのメトリクスを収集します。 |  | 移行リード | 
| プロジェクトを終了し、フィードバックを提供します。 |  | 移行リーダー、アプリ所有者 | 

## 関連リソース
<a name="migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs-related-resources"></a>

**リファレンス**
+ [Apache Tomcat 7.0 ドキュメント](https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html) 
+ [Apache Tomcat 7.0 インストールガイド](https://tomcat.apache.org/tomcat-7.0-doc/appdev/installation.html) 
+ [Apache Tomcat JNDI ドキュメント](https://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html) 
+ [Apache TomE ドキュメント](http://tomee.apache.org/) 
+ 「[Amazon RDS for Oracle](https://aws.amazon.com/rds/oracle/)」 
+ [Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/) 
+ [Oracleと ](https://aws.amazon.com/oracle/) 
+ [Amazon RDS に関するOracleのドキュメンテト](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 
+ [Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/) 
+ [Amazon ECS の開始](https://aws.amazon.com/ecs/getting-started/)
+ [Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/) 

**チュートリアルと動画**
+ [Best Practices for Running Oracle Databases on Amazon RDS](https://www.youtube.com/watch?v=j2wqT0EPDbw) (re:Invent 2018 presentation) 

# AWS DMS を使用して Oracle データベースを Amazon EC2 から Amazon RDS for Oracle に移行する
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms"></a>

*Amazon Web Services、Chethan Gangadharaiah および Brian Motzer*

## 概要
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-summary"></a>

このパターンは、AWS Database Migration Service (AWS DMS) を使用して、Amazon Elastic Compute Cloud (Amazon EC2) 上の Oracle データベースを Oracle 用 Amazon Relational Database Service (Amazon RDS) に移行する手順を示しています。このパターンでは Oracle SQL Developer や SQL \$1Plus を使用して Oracle DB インスタンスに接続し、一部のタスクを自動化する AWS CloudFormation テンプレートも含まれています。

Amazon RDS for Oracle に移行すると、Amazon RDS がデータベースのプロビジョニング、バックアップとリカバリ、セキュリティパッチ、バージョンアップグレード、ストレージ管理などのデータベース管理タスクを引き受けながら、ビジネスとアプリケーションに集中できます。

## 前提条件と制限
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-prerequisites-and-limitations"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Amazon EC2 の Oracle Database 用の Amazon マシンイメージ (AMI)

**製品バージョン**
+ AWS DMS は、Enterprise、Standard、Standard One、および Standard Two エディションの Amazon RDS インスタンスデータベースの Oracle バージョン 11g (バージョン 11.2.0.3.v1 以降)、12c、および 18c をサポートします。サポートされているバージョンに関する最新情報については、AWS ドキュメントの「[Using an Oracle Database as a Target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html)」を参照してください。(添付されている AWS CloudFormation テンプレートは Oracle バージョン 12c をソースデータベースとして使用しています。)
+ Oracle SQL Developer 4.0.3

## アーキテクチャ
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-architecture"></a>

**ソースアーキテクチャ**
+ Oracle Database on Amazon EC2

**ターゲットアーキテクチャ**
+ Amazon RDS for Oracle

**移行アーキテクチャ**

![\[AWS クラウド architecture showing Oracle database migration from EC2 to RDS across availability zones.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/4db0c731-0897-4eb8-a06f-b648c3d94b2c/images/636c2a69-5a78-482d-ae81-55e9ec975ead.png)


## ツール
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-tools"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/index.html) – AWS Database Migration Service (AWS DMS) は、データベースを AWS に迅速かつ安全に移行するのに役立ちます。同種移行と異種移行の両方をサポートします。サポートされている Oracle データベースのバージョンとエディションについては、AWS ドキュメントの「[Using an Oracle Database as a Source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」および「[Using an Oracle Database as a Target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Oracle.html)」を参照してください。
+ **Oracle SQL Developer または SQL \$1Plus** – これらのツールを使用すると、Amazon RDS for Oracle DB インスタンスに接続できます。

## エピック
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-epics"></a>

### ターゲットデータベースのセットアップ
<a name="set-up-your-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS for Oracle DB インスタンスを作成します。 | AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。Oracle データベースの適切なエンジン、テンプレート、データベース認証情報設定、インスタンスタイプ、ストレージ、マルチ AZ 設定、仮想プライベートクラウド (VPC) と構成、ログイン認証情報、その他の設定を選択して Oracle DB インスタンスを作成します。手順については、「関連リソース」セクションのリンクを参照してください。または、添付ファイルの AWS CloudFormation テンプレート (Create\$1RDS.yaml) を使用して Amazon RDS for Oracle DB インスタンスを作成します。 | 開発者 | 
| Amazon RDS Connect し、Oracle ユーザーに権限を付与します。 | セキュリティグループを変更して、ローカルマシンと AWS DMS レプリケーションインスタンスから接続するための適切なポートを開きます。接続を構成するときは、VPC の外部からデータベースに接続できるように、「パブリックにアクセス可能」オプションが選択されていることを確認してください。ログイン認証情報を使用して Oracle SQL Developer または SQL \$1Plus で Amazon RDS Connect し、AWS DMS ユーザーを作成し、データベースを変更するために必要な権限を AWS DMS ユーザーに付与します。 | 開発者 | 

### ソース EC2 インスタンスのセキュリティグループを設定します。
<a name="configure-the-security-group-of-the-source-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle データベースが稼働しているかどうかを確認してください。 | Secure Shell (SSH) を使用して EC2 インスタンスに接続し、SQL \$1Plus を使用して Oracle データベースに接続してみます。 | 開発者 | 
| セキュリティグループを変更します。 | EC2 インスタンスのセキュリティグループを変更して適切なポートを開き、ローカルマシンと AWS DMS レプリケーションインスタンスから接続できるようにします。 | 開発者 | 

### AWS DMS のセットアップ
<a name="set-up-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS DMS レプリケーションインスタンスを作成します。 | AWS DMS では、Amazon RDS for Oracle DB インスタンスと同じ VPC にレプリケーションインスタンスを作成します。レプリケーションインスタンスの名前と説明を指定し、インスタンスクラスとレプリケーションエンジンのバージョンを選択し (デフォルトを使用)、Amazon RDS DB インスタンスを作成した VPC を選択し、必要に応じてマルチ AZ 設定を設定し、ストレージを割り当て、アベイラビリティゾーンを指定し、追加設定を行います。または、添付ファイルの AWS CloudFormation テンプレート (DMS.yaml) を使用してこのステップを実装することもできます。 | DBA | 
| ソースおよびターゲットデータベースエンドポイントに接続します。 | エンドポイント ID、エンジン、サーバー、ポート、ログイン認証情報、その他の接続属性を指定して、ソースデータベースエンドポイントとターゲットデータベースエンドポイントを作成します。ソースサーバーには、Oracle データベースをホストしている EC2 インスタンスのパブリック DNS を使用します。ターゲットサーバーには、Amazon RDS for Oracle のエンドポイントを使用してください。テストを実行して、ソース接続とターゲット接続が機能していることを確認します。または、添付ファイルの AWS CloudFormation テンプレート (DMS.yaml) を使用してこのステップを実装することもできます。 | DBA | 
| AWS DMS タスクを作成します。 | AWS DMS タスクを作成して、ソースエンドポイントからターゲットエンドポイントにデータを移行するか、ソースエンドポイントとターゲットエンドポイント間のレプリケーションをセットアップするか、あるいはその両方を行います。AWS DMS タスクを作成するときは、レプリケーションインスタンス、ソースエンドポイント、ターゲットエンドポイント、移行タイプ (データのみ、レプリケーションのみ、または両方)、テーブルマッピング、およびフィルタを指定します。AWS DMS タスクを実行し、タスクをモニタリングし、テーブル統計を確認し、Amazon CloudWatch でログをチェックします。または、添付ファイルの AWS CloudFormation テンプレート (DMS.yaml) を使用してこのステップを実装することもできます。 | DBA | 

## 関連リソース
<a name="migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms-related-resources"></a>
+ [Amazon RDS DB インスタンスの作成](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateOracleInstance.html)
+ [Oracle データベースエンジンを実行している DB インスタンスへの接続](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToOracleInstance.html)
+ [AWS DMS のドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS DMS Step-by-Step Walkthroughs](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ 「[AWS クラウドへの Oracle データベースの移行](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html)」

## アタッチメント
<a name="attachments-4db0c731-0897-4eb8-a06f-b648c3d94b2c"></a>

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

# Logstash を使用して、オンプレミス Oracle データベースを Amazon OpenSearch Service へ移行する
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash"></a>

*Amazon Web Services、Aditya Goteti*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-summary"></a>

このパターンは、Logstash を使用して、オンプレミス Oracle データベースから Amazon OpenSearch Service へデータを移動する方法について説明します。アーキテクチャ上の考慮事項、必要なスキルセットと推奨事項が含まれます。データは単一テーブル、または全文検索を実行する必要がある複数テーブルからのものです。 

OpenSearch サービスは、仮想プライベートクラウド (VPC) 内で設定、または IP ベースの制限で公開できます。このパターンは、OpenSearch サービスが VPC 内で設定されるシナリオを説明します。Logstash は Oracle データベースからデータを収集して JSON 形式に構文解析し、そのデータを OpenSearch サービスへのフィードに使用されます。 

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-prereqs"></a>

**前提条件**
+ アクティブなAWS アカウント
+ Java 8 (Logstash 6.4.3 で必要)
+ AWS 仮想プライベートネットワーク (AWS VPN) を使用して確立される、オンプレミスデータベースサーバーと VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンス間の接続性
+ データベースから OpenSearch Service にプッシュされる必要なデータを取得するクエリ
+ Java Database Connectivity (JDBC) ドライバー　

**制限**
+ Logstash はデータベースから物理削除されるレコードは識別できない 

**製品バージョン**
+ Oracle Database 12c
+ OpenSearch Service 6.3
+ Logstash 6.4.3

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース
+ オンプレミス AWS VPN

**ターゲットテクノロジースタック**
+ VPC
+ EC2 インスタンス
+ OpenSearch Service 
+ Logstash
+ NAT ゲートウェイ (EC2 インスタンスのオペレーティングシステムアップデート、Java 8、Logstash、プラグインのインストール用)

**データ移行アーキテクチャ**

![\[Logstash を使用して、オンプレミス Oracle データベースから Amazon OpenSearch Service へデータを移動する方法。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/09f6d2de-de2f-4ed6-af93-34b71b75a263/images/df6a61fb-09fb-49d4-a7e8-b04e88c003df.png)


## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-tools"></a>
+ Logstash 6.4.3
+ JDBC 入力プラグイン ([ダウンロードおよび詳細情報)](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html)
+ ログスタッシュ出力プラグイン ([logstash-output-amazon\$1es)](https://github.com/awslabs/logstash-output-amazon_es)
+ Oracle JDBC ドライバー

## エピック
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースのサイズを特定します。 | ソースデータのサイズは、インデックスに設定するシャードの数の決定に使用するパラメータの 1 つです。 | DBA、データベース開発者 | 
| 各列のデータ型と対応するデータを分析します。 | OpenSearch Service は、これまで見えていなかったフィールドがドキュメントに見つかると、データ型を動的にマッピングします。明示的に宣言する必要のある特定のデータ型または形式 (日付フィールドなど) がある場合は、インデックス作成時にフィールドを特定し、そのフィールドのマッピングを定義します。 | アプリ所有者、開発者、データベース開発者 | 
| プライマリーキーまたは一意キーがある列があるかどうかを確認します。 | 更新または挿入時に Amazon OpenSearch Service のレコードが重複しないようにするには、`amazon_es` プラグインの出力セクションで `document_id` 設定をする必要があります (たとえば、`customer_id` がプライマリキーの `document_id => "%{customer_id}"`)。 | アプリ所有者、開発者 | 
| 追加された新しいレコードの数と頻度を分析し、レコードがどのような頻度で削除されるかを確認します。 | このタスクは、ソースデータの増加率を把握するために必要です。データの読み取り量が多く、挿入がまれな場合は、1 つのインデックスにできます。新しいレコードが頻繁に挿入され、削除されない場合、シャードサイズは推奨最大サイズの 50 GB を簡単に超える可能性があります。この場合は、Logstash とエイリアスを使用してアクセスできるコードでインデックスパターンを設定することで、インデックスを動的に作成できます。 | アプリ所有者、開発者 | 
| 必要なレプリカの数を決定します。 |  | アプリ所有者、開発者 | 
| インデックスに設定するシャード数を決定します。 |  | アプリ所有者、開発者 | 
| 専用マスターノード、データノード、EC2 インスタンスのインスタンスタイプを特定します。 | 詳細については、[関連リソース](#migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources)セクションを参照してください。 | アプリ所有者、開発者 | 
| 必要な専用マスターノードとデータノード数を決定します。 | 詳細については、[関連リソース](#migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources)セクションを参照してください。 |  | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスの起動 | AWS VPN が接続されている VPC 内で EC2 インスタンスを起動します。 | Amazon VPC コンストラクト、AWS VPN | 
| EC2 インスタンスに Logstash をインストールします。 |  | 開発者 | 
| Logstash プラグインをインストールします。 | 必要な Logstash プラグイン `jdbc-input` と ` logstash-output-amazon_es` をインストールします。 | 開発者 | 
| Logstash を設定します。 | Logstashキーストアを作成して、AWS Secrets Manager キー、データベース認証情報などの機密情報を保存し、そのレファレンスを Logstash 設定ファイルに置きます。 | 開発者 | 
| デッドレターキューと永続キューを設定します。 | デフォルトで、データにマッピングエラーまたはその他の問題が含まれるために処理できないイベントが Logstash で遭遇すると、Logstash パイプラインは失敗したイベントをハングまたはドロップします。このような状況でデータ損失を防ぐため、失敗したイベントをドロップせずにデッドレターキューに書き込むように Logstash を設定できます。異常終了時のデータ損失に対して保護するために、Logstash にはメッセージキューをディスクに保存する永続キュー機能があります。永続キューは Logstash のデータに永続性を提供します。 | 開発者 | 
| Amazon OpenSearch Service ドメインを作成します。 | AWS Identity and Access Management (IAM) 認証情報でリクエストに署名する必要がないアクセスポリシーで Amazon OpenSearch Service ドメインを作成します。Amazon OpenSearch Service ドメインは、同じ VPC 内に作成する必要があります。また、分析に基づいてインスタンスタイプを選択し、専用ノードとマスターノードの数を設定する必要があります。 | 開発者 | 
| 必要な Amazon OpenSearch Service ログを設定します。 | 詳細については、[OpenSearch サービスドキュメント](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html)を参照してください。 |  | 
| インデックスを作成します。 |  | 開発者 | 
| Logstash を起動します。 | Logstash をバックグラウンドサービスとして実行します。Logstash は設定された SQL クエリを実行し、データを取得して JSON 形式に変換し、OpenSearch サービスに送ります。初回ロードの場合は、Logstash 設定ファイルでスケジューラーを設定しないでください。 | 開発者 | 
| ドキュメントを確認します。 | インデックスの文書数と、すべての文書がソースデータベースに存在するかどうかを確認します。初回ロード時にインデックスに追加され、Logstash の停止に使用されます。Logstashの設定を変更して、クライアントの要件に応じて一定の間隔で実行されるスケジューラーを追加し、Logstash を再起動します。Logstash は前回の実行後に更新または追加されたレコードのみを選択し、最終実行タイムスタンプは Logstash 設定ファイルの `last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run"` プロパティで設定したファイルに保存されます。 | 開発者 | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash-resources"></a>
+ [推奨される CloudWatch アラーム](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/cloudwatch-alarms.html) 
+ [Amazon OpenSearch Service の専用マスターノード](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains-dedicatedmasternodes.html) 
+ [Amazon OpenSearch Service ドメインのサイジング](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/sizing-domains.html) 
+ [Logstash ドキュメント](https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html) 
+ [JDBC 入力プラグイン](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html)
+ [Logstash 出力プラグイン](https://github.com/awslabs/logstash-output-amazon_es)
+ [Amazon OpenSearch Service](https://aws.amazon.com/elasticsearch-service/) 

# オンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle"></a>

*Amazon Web Services、Baji Shaik および Pavan Pusuluri*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-summary"></a>

このパターンでは、オンプレミスの Oracle データベースを Oracle 用の Amazon Relational Database Service (Amazon RDS) に移行する際の手順を説明しています。　 移行プロセスの一環として、移行計画を作成し、ソースデータベースに基づいてターゲットデータベースのインフラストラクチャに関する重要な要素を検討します。　 ビジネス要件とユースケースに基づいて、次の 2 つの移行オプションから 1 つ選択できます。
+ AWS Database Migration Service (AWS DMS) – AWS DMS を使用すると、データベースを迅速かつセキュアに AWS クラウドに移行することができます。移行中でもソースデータベースが完全に維持され、このデータベースを利用するアプリケーションのダウンタイムは最小限に抑えられます。[変更データキャプチャ (CDC)](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html) と呼ばれるプロセスを通じて最初の全ロード移行を完了した後に、AWS DMS を使用して進行中の変更をキャプチャするタスクを作成することで、移行時間を短縮できます。
+ ネイティブ Oracle ツール — [Oracle GoldenGate](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/introduction-oracle-goldengate.htm#GGCON-GUID-EF513E68-4237-4CB3-98B3-2E203A68CBD4) for CDC　 を使用した [Data Pump エクスポート](https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL200)および [Data Pump インポート](https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm#SUTIL300)などのネイティブ Oracle ツールを使用してデータベースを移行できます。オリジナルの[エクスポートユーティリティ](https://docs.oracle.com/cd/E11882_01/server.112/e22490/original_export.htm#SUTIL3634)や、オリジナルの[インポートユーティリティ](https://docs.oracle.com/cd/E11882_01/server.112/e22490/original_import.htm#SUTIL001)などの Oracle ネイティブツールを使用して、全ロード時間を短縮することもできます。

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスの Oracle データベース
+ Amazon RDS Oracle データベース (DB) インスタンス

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

**製品バージョン**
+ Oracle バージョン 11g (バージョン 11.2.0.3.v1 以降) および 12.2 および 18c。サポートされているバージョンとエディションの最新のリストについては、AWS ドキュメントの「[Amazon RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)」を参照してください。サポートされているバージョンの最新リストについては、AWS DMS ドキュメントの「[AWS DMS のソースとして Oracle データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)」を参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース

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

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

次の図は、AWS DMS を使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する方法を示しています。

![\[AWS DMS を使用して Oracle データベースを Amazon RDS for Oracle に移行するワークフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/25912997-0ac0-4303-9ce5-0621a7e12406/images/20f94a5c-1095-4182-b964-c379414c9a36.png)


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

1. 既存のデータベースユーザーを作成または使用し、そのユーザーに必要な [AWS DMS アクセス権限](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Self-Managed)を付与し、[ARCHIVELOG モード](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode)をオンにして、[補足のログ記録](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging)を設定します。

1. オンプレミスと AWS ネットワーク間のインターネットゲートウェイを設定します。　

1. AWS DMS で[ソースとターゲットのエンドポイント](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html) を設定します。

1. [AWS DMS レプリケーションタスク](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html)を設定して、ソースデータベースからターゲットデータベースにデータを移行します。

1. 移行後のアクティビティをターゲットデータベースで実行します。

次の図は、ネイティブ Oracle ツールを使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する方法を示しています。

![\[Oracle ツールを使用して Oracle データベースを Amazon RDS for Oracle に移行するワークフロー。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/25912997-0ac0-4303-9ce5-0621a7e12406/images/af8e0e1a-d4c8-4d99-9780-3e093ad9a257.png)


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

1. Oracle Export (`exp`) および Import (`imp`) ユーティリティを使用して Oracle データベースユーザーを作成または使用し、Oracle データベースをバックアップするために必要なアクセス権限を付与します。

1. オンプレミスと AWS ネットワーク間のインターネットゲートウェイを設定します。　

1. バックアップデータベースを使用するように [踏み台](https://www.oracle.com/security/cloud-security/bastion/)ホストの Oracle クライアントを設定します。

1. Amazon Simple Storage Service (Amazon S3) バケットにバックアップデータベースをアップロードします。

1. データベースバックアップを Amazon S3 から Amazon RDS for Oracle データベースに復元します。

1. Oracle GoldenGate for CDC を設定します。

1. 移行後のアクティビティをターゲットデータベースで実行します。

## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-tools"></a>
+ 「[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。
+ Oracle のネイティブツールを使用すると、同種の移行を実行できます。[Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) を使用して、ソースデータベースとターゲットデータベース間でデータを移行できます。このパターンでは、Oracle Data Pump を使用して、ソースデータベースからターゲットデータベースへのフルロードを実行します。
+ [Oracle GoldenGate](https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/introduction-oracle-goldengate.htm#GGCON-GUID-EF513E68-4237-4CB3-98B3-2E203A68CBD4) を使用すると、2 つ以上のデータベース間で論理レプリケーションを実行できます。　 このパターンでは、GoldenGate を使用して、初回ロード後に Oracle Data Pump を使用して変更の差分を複製します。

## エピック
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プロジェクト文書を作成し、データベースの詳細を記録します。 | [\[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-oracle.html) | DBA | 
| ストレージ要件を特定します。 | 以下の項目を含むストレージ要件を特定して文書化します。[\[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-oracle.html)[汎用 (gp2) SSD ボリューム](https://aws.amazon.com/ebs/volume-types/)では、1 GB のストレージあたり 3 IOPS が得られます。ソースデータベースの読み取りと書き込み IOPS の合計数を計算してストレージを割り当てます。 | DBA、SysAdmin | 
| コンピューティング要件に基づいて適切なインスタンスタイプを選択してください。　 | [\[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-oracle.html) | SysAdmin | 
| ネットワークアクセスのセキュリティ要件を特定します。 | [\[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-oracle.html) | DBA、SysAdmin | 
| アプリケーション移行戦略を特定します。 | [\[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-oracle.html) | DBA、SysAdmin、アプリ所有者 | 
| 移行リスクを特定します。 | データベースを評価し、移行に特有のリスクと軽減策を文書化します。例えば、次のようになります。[\[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-oracle.html) | DBA | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC を作成します。 | [ターゲットデータベースインスタンス用の新しい Amazon Virtual Private Cloud (Amazon VPC) を作成](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/gsg_create_vpc.html) します。 | SysAdmin | 
| セキュリティグループを作成します。 | 新しい VPC に[セキュリティグループを作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group)して、DB インスタンスへのインバウンド接続を許可します。 | SysAdmin | 
| Amazon RDS for Oracle DB インスタンスを作成します。 | 新しい VPC とセキュリティグループを使用してターゲットデータベースインスタンスを作成してから、[ターゲット DB インスタンスを作成します](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)。 | SysAdmin | 

### オプション 1 – ネイティブ Oracle またはサードパーティーのツールを使用してデータを移行する
<a name="option-1---use-native-oracle-or-third-party-tools-to-migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースを準備します。 | [\[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-oracle.html) | DBA、SysAdmin | 
| ターゲットデータベースを準備します。 | [\[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-oracle.html) | DBA、SysAdmin | 

### オプション 2 – AWS DMS を使用してデータを移行する
<a name="option-2---use-aws-dms-to-migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データを準備する | [\[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-oracle.html) | DBA | 
| データを移行します。 | [\[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-oracle.html) | DBA | 

### ターゲットデータベースにカットオーバーする
<a name="cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 | [\[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-oracle.html) | DBA、SysAdmin、アプリ所有者 | 
| ロールバックプランを実装します。 | [\[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-oracle.html) | DBA、アプリ所有者 | 

### 移行プロジェクトを閉じる
<a name="close-out-the-migration-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをクリーンアップします。 | AWS DMS レプリケーションインスタンスや S3 バケットなどの一時的な AWS リソースをシャットダウンまたは削除します。 | DBA、SysAdmin | 
| プロジェクト文書を確認します。 | 移行計画文書と目標を確認し、必要な移行手順がすべて完了したことを確認します。 | DBA、SysAdmin、アプリ所有者 | 
| メトリクスを収集します。 | 移行が完了するまでにかかった時間、手動タスクとツールベースのタスクとの割合、コストの削減、その他の関連メトリクスなど、移行に関する主要なメトリクスを記録します。 | DBA、SysAdmin、アプリ所有者 | 
| プロジェクトを終了します。 | 移行プロジェクトを終了し、その労力に関するフィードバックを集めます。 | DBA、SysAdmin、アプリ所有者 | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-resources"></a>

**リファレンス**
+ [Migrating Oracle databases to the AWS Cloud](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/welcome.html) (AWS 規範ガイダンス)
+ 「[AWS Database Migration Service](https://aws.amazon.com/dms/)」 (AWS DMS ドキュメント)
+ 「[Amazon RDS 料金表](https://aws.amazon.com/rds/pricing/)」 (Amazon RDS ドキュメント)

**チュートリアルと動画**
+ [AWS Database Migration Service の使用開始](https://aws.amazon.com/dms/getting-started/) (AWS DMSドキュメント)
+ 「[Amazon RDS リソース](https://aws.amazon.com/rds/getting-started/)」 (Amazon RDS ドキュメント)
+ 「[AWS Database Migration Service (DMS)](https://www.youtube.com/watch?v=zb4GcjEdl8U)」 (YouTube)

# Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump"></a>

*Amazon Web Services、Mohan Annam および Brian Motzer*

## 概要
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-summary"></a>

このパターンでは、Oracle Data Pump を使用して、Oracle データベースをオンプレミスのデータセンターから Amazon Relational Database Service (Amazon RDS) for Oracle DB インスタンスに移行する方法について説明します。 

このパターンでは、ソースデータベースからデータダンプ ファイルを作成し、そのファイルを Amazon Simple Storage Service (Amazon S3) バケットに保存してから、Amazon RDS for Oracle DB インスタンスにデータを復元します。このパターンは、移行に AWS Database Migration Service (AWS DMS) を使用すると制限が発生する場合に便利です。

## 前提条件と制限
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ AWS Identity and Access Management (IAM) でのロールの作成と Amazon S3 マルチパートアップロードに必要な権限
+ ソースデータベースからデータをエクスポートするのに必要な権限
+ AWS コマンドラインインターフェイス (AWS CLI) を[インストール済み](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)および[設定済み](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**製品バージョン**
+ Oracle Data Pump は、Oracle Database 10g リリース 1 (10.1) 以降のバージョンでのみ使用できます。

## アーキテクチャ
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの Oracle データベース

**ターゲットテクノロジースタック**
+ Amazon RDS for Oracle
+ SQL クライアント (Oracle SQL Developer)
+ S3 バケット

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

![\[Oracle Data Pump を使用して、オンプレミスの Oracle DB から Amazon RDS に Amazon S3 マルチパートアップロードを実行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/d8d6e00f-753e-4ecc-80e5-e60e279a699b/images/1bb6095a-0a95-4469-be0e-7b7bd59b35ae.png)


## ツール
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-tools"></a>

**AWS サービス**
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。このパターンでは、IAM を使用して Amazon S3 から Amazon RDS for Oracle にデータを移行するために必要なロールとポリシーを作成します。
+ 「[OracleのAmazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)」 によって、AWS クラウドで Oracleリレーショナルデータベースをセットアップ、運用、スケーリングができます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

**その他のツール**
+ [Oracle Data Pump](https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm) を使用すると、あるデータベースから別のデータベースにデータやメタデータを高速に移動できます。このパターンでは、Oracle Data Pump を使用してデータダンプ (.dmp) ファイルを Oracle サーバーにエクスポートし、データダンプ ファイルを Amazon RDS for Oracle にインポートします。詳細については、Amazon RDS ドキュメントの「[Amazon RDS の Oracle にデータをインポートする](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html#Oracle.Procedural.Importing.DataPump.S3)」を参照してください。
+ [Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html) は、従来のデプロイとクラウドデプロイの両方で Oracle Database の開発と管理を簡素化する統合開発環境です。オンプレミスの Oracle データベースと Amazon RDS for Oracle の両方と相互作用して、データのエクスポートとインポートに必要な SQL コマンドを実行します。

## エピック
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-epics"></a>

### S3 バケットを作成する
<a name="create-an-s3-bucket"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バケットを作成します。 | S3 バケットを作成するには、[AWS のドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)の手順に従います。 | AWS システム管理者 | 

### IAM ロールを作成してポリシーを割り当てる
<a name="create-the-iam-role-and-assign-policies"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| IAM 許可を設定します。 | 権限を設定するには、「[AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html#oracle-s3-integration.preparing)」の指示に従ってください。 | AWS システム管理者 | 

### ターゲットの Amazon RDS for Oracle DB インスタンスを作成し、Amazon S3 統合ロールを関連付ける
<a name="create-the-target-amazon-rds-for-oracle-db-instance-and-associate-the-amazon-s3-integration-role"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットの Amazon RDS for Oracle DB インスタンスを停止します。 | Amazon RDS for Oracle インスタンスを作成するには、「[AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html)」の指示に従ってください。 | AWS システム管理者 | 
| ロールを DB インスタンスに関連付けます。 | ロールをインスタンスに関連付けるには、「[AWS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html#oracle-s3-integration.preparing.instance)」の指示に従ってください。 | DBA | 

### ターゲットデータベースにデータベースユーザーを作成します。
<a name="create-the-database-user-on-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ユーザーを作成します。 | Oracle SQL Developer または SQL\$1Plus からターゲットの Amazon RDS for Oracle データベースに接続し、次の SQL コマンドを実行して、スキーマをインポートするユーザーを作成します。<pre>create user SAMPLE_SCHEMA identified by <PASSWORD>;<br />grant create session, resource to <USER NAME>;<br />alter user <USER NAME> quota 100M on users;</pre> | DBA | 

### ソース Oracle データベースからエクスポートファイルを作成する
<a name="create-the-export-file-from-the-source-oracle-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データダンプファイルを作成する。 | `DATA_PUMP_DIR` ディレクトリに `sample.dmp` というダンプファイルを作成して `SAMPLE_SCHEMA` ユーザーをエクスポートするには、次のスクリプトを使用します。<pre>DECLARE<br />    hdnl NUMBER;<br />BEGIN<br />    hdnl := dbms_datapump.open(operation => 'EXPORT', <br />                                job_mode => 'SCHEMA', <br />                                job_name => NULL);<br /><br />    dbms_datapump.add_file( handle => hdnl, <br />                            filename => 'sample.dmp', <br />                            directory => 'DATA_PUMP_DIR', <br />                            filetype => dbms_datapump.ku$_file_type_dump_file);<br /><br />    dbms_datapump.add_file(handle => hdnl, <br />                            filename => 'export.log', <br />                            directory => 'DATA_PUMP_DIR', <br />                            filetype => dbms_datapump.ku$_file_type_log_file);<br /><br />    dbms_datapump.metadata_filter(hdnl, 'SCHEMA_EXPR', 'IN (''SAMPLE_SCHEMA'')');  <br /><br />    dbms_datapump.start_job(hdnl);<br />END;<br />/</pre>ローカル `DATA_PUMP_DIR` ディレクトリにある `export.log` ファイルを参照して、エクスポートの詳細を確認します。 | DBA | 

### ダンプファイルを S3 バケットにアップロードします。
<a name="upload-the-dump-file-to-the-s3-bucket"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データダンプファイルをソースから S3 バケットにアップロードします。 | AWS CLI を使用して、次のコマンドを実行します。<pre>aws s3 cp sample.dmp s3://<bucket_created_epic_1>/</pre> | DBA | 

### S3 バケットから RDS インスタンスにエクスポートファイルをダウンロードします。
<a name="download-the-export-file-from-the-s3-bucket-to-the-rds-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データダンプファイルを Amazon RDS にダウンロードします。 | ダンプファイル `sample.dmp` を S3 バケットから Amazon RDS for Oracle データベースにコピーするには、次の SQL コマンドを実行します。この例では、`sample.dmp` ファイルが S3 バケット `my-s3-integration1` から Oracle ディレクトリ `DATA_PUMP_DIR` にダウンロードされます。RDS インスタンスには、データベースとエクスポートファイルの両方を収容するのに十分なディスクスペースが割り当てられていることを確認してください。<pre>-- If you want to download all the files in the S3 bucket remove the p_s3_prefix line.<br /><br />SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(<br />      p_bucket_name    =>  'my-s3-integration',    <br />      p_s3_prefix => 'sample.dmp',<br />      p_directory_name =>  'DATA_PUMP_DIR') <br />   AS TASK_ID FROM DUAL;</pre>前のコマンドはタスク ID を出力します。タスク ID のデータを確認してダウンロードのステータスを確認するには、以下のコマンドを実行します。<pre>SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));<br /><br /></pre>`DATA_PUMP_DIR` ディレクトリ内のファイルを確認するには、次のコマンドを実行します。<pre>SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp<br />FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;</pre> | AWS システム管理者 | 

### ターゲットデータベース内のダンプファイルをインポートする
<a name="import-the-dump-file-into-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スキーマとデータを Amazon RDS に復元します。 | ダンプファイルを `sample_schema` データベーススキーマにインポートするには、SQL Developer または SQL\$1Plus から次の SQL コマンドを実行します。<pre>DECLARE<br />hdnl NUMBER;<br />BEGIN<br /><br />hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);<br /><br />DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);<br /><br />DBMS_DATAPUMP.ADD_FILE( handle    => hdnl, filename  => 'import.log', directory => 'DATA_PUMP_DIR', filetype  => dbms_datapump.ku$_file_type_log_file);<br /><br />DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''SAMPLE_SCHEMA'')');<br /><br />DBMS_DATAPUMP.START_JOB(hdnl);<br /><br />END;<br />/</pre>インポートのログファイルを表示するには、以下のコマンドを実行します。<pre>SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','import.log'));</pre> | DBA | 

### DATA\$1PUMP\$1DIR ディレクトリからダンプファイルを削除します。
<a name="remove-the-dump-file-from-the-data_pump_dir-directory"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| エクスポートファイルを一覧表示してクリーンアップします。 | `DATA_PUMP_DIR` ディレクトリのエクスポートファイルを一覧表示して削除し、次のコマンドを実行します。<pre>-- List the files<br />SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;</pre><pre>-- Remove the files<br />EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample.dmp');<br />EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','import.log');</pre> | AWS システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump-resources"></a>
+ 「[Amazon S3 統合](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html#oracle-s3-integration.preparing)」
+ 「[DB インスタンスを作成する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateDBInstance.html)」
+ 「[Amazon RDS の Oracle にデータをインポートする](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html#Oracle.Procedural.Importing.DataPump.S3)」
+ 「[Amazon S3 ドキュメント](https://docs.aws.amazon.com/s3/index.html)」
+ 「[IAM ドキュメント](https://docs.aws.amazon.com/iam/index.html)」
+ 「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/rds/index.html)」
+ 「[Oracle Data Pump のドキュメント](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html)」
+ 「[Oracle SQL Developer](https://www.oracle.com/database/sqldeveloper/)」

# pglogic を使用して Amazon EC2 上の PostgreSQL から Amazon RDS for PostgreSQL に移行する
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical"></a>

*Amazon Web Services、Rajesh Madiwale*

## 概要
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-summary"></a>

このパターンは、PostgreSQLの **pglogical ** 拡張機能を使用して、PostgreSQL データベース (バージョン 9.5 以降) を Amazon Elastic Compute Cloud (Amazon EC2) から PostgreSQL 用 Amazon Relational Database Service (Amazon RDS) に移行する手順を概説しています。pglogical 拡張は、Amazon RDS の PostgreSQL バージョン 10 でサポートされています。

## 前提条件と制限事項
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-prereqs"></a>

**前提条件**
+ 適切なタイプの Amazon RDS インスタンスを選択します。詳細については、「[Amazon RDS のインスタンスタイプ](https://aws.amazon.com/rds/instance-types/)」を参照してください。
+ PostgreSQL のソースバージョンとターゲットバージョンが同じであることを確認します。  
+ Amazon EC2 で[**pglogical** extension with PostgreSQL](https://github.com/2ndQuadrant/pglogical)をインストールして統合します。

**製品バージョン**
+ Amazon RDS でサポートされている機能を備えた PostgreSQL バージョン 10 以降 (AWS ドキュメントの「[Amazon RDS 上の PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts)」を参照)。このパターンは、Amazon RDS 上の PostgreSQL 9.5 から PostgreSQL バージョン 10 への移行でテストされましたが、Amazon RDS 上のそれ以降のバージョンの PostgreSQL にも適用されます。

## アーキテクチャ
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-architecture"></a>

**データ移行アーキテクチャ**

![\[Amazon RDS 上の PostgreSQL 用データ移行アーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/29af3931-48de-499f-9c4b-e10a98e4bba5/images/5f5b906f-dc1a-49a5-ae3f-3e10ae854784.png)


## ツール
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-tools"></a>
+ [https://github.com/2ndQuadrant/pglogical](https://github.com/2ndQuadrant/pglogical) 拡張機能
+ PostgreSQL ネイティブユーティリティ: [https://www.postgresql.org/docs/9.5/app-pgdump.html](https://www.postgresql.org/docs/9.5/app-pgdump.html) と [https://www.postgresql.org/docs/9.6/app-pgrestore.html](https://www.postgresql.org/docs/9.6/app-pgrestore.html)

## エピック
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-epics"></a>

### pglogic 拡張機能を使用してデータを移行する。
<a name="migrate-data-by-using-the-pglogical-extension"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS PostgreSQL DB インスタンスを作成する。 | Amazon RDS で PostgreSQL DB インスタンスを設定します。手順については、[Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.PostgreSQL.html) ドキュメントを参照してください。 | DBA | 
| ソース PostgreSQL データベースからスキーマダンプを取得し、ターゲット PostgreSQL データベースで復元する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.html) | DBA | 
| 論理デコードを有効にする。 | Amazon RDS DB パラメータグループで、`rds.logical_replication` 静的パラメータを 1 に設定します。手順については、[Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalDecoding)を参照してください。 | DBA | 
| pglogical 拡張機能をソースデータベースとターゲットデータベースで作成する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.html) | DBA | 
| ソース PostgreSQL データベースにパブリッシャーを作成する。 | パブリッシャーを作成するには、以下を実行します。<pre>psql -d dbname -p 5432 <<EOF<br />SELECT pglogical.create_node( node_name := 'provider1', dsn := 'host=<ec2-endpoint> port=5432 dbname=source-dbname user=source-dbuser' );<br />EOF</pre> | DBA | 
| リプリケーションセットを作成し、テーブルとシーケンスを追加する。 | ソース PostgreSQL データベースにリプリケーションセットを作成し、そのリプリケーションセットにテーブルとシーケンスを追加するには、以下を実行します。<pre>psql -d dbname -p 5432 <<EOF<br />SELECT pglogical.replication_set_add_all_tables('default', '{public}'::text[],synchronize_data := true);<br />EOF</pre> | DBA | 
| サブスクライバーを作成します。 | ターゲット PostgreSQL データベースにサブスクライバーを作成するには、以下を実行します。<pre>psql -h <rds-endpoint> -d target-dbname -U target-dbuser  <<EOF<br />SELECT pglogical.create_node(<br />    node_name := 'subscriber1',<br />    dsn := 'host=<rds-endpoint> port=5432 dbname=target-dbname password=postgres user=target-dbuser'<br />);<br />EOF</pre> | DBA | 
| サブスクリプションを作成する。 | ターゲット PostgreSQL データベースにサブスクリプションを作成するには、以下を実行します。<pre>psql -h <rds-endpoint> -d target -U postgres  <<EOF<br />SELECT pglogical.create_subscription(<br /> subscription_name := 'subscription1',<br /> replication_sets := array['default'],<br />    provider_dsn := 'host=<ec2-endpoint> port=5432 dbname=<source-dbname> password=<password> user=source-dbuser'<br />);</pre> | DBA | 

### データを検証する
<a name="validate-your-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースとターゲットデータベースを確認します。 | ソースデータベースとターゲットデータベースをチェックして、データが正常に複製されていることを確認します。ソーステーブルとターゲットテーブルの `select count(1)` を使用して基本的な検証を実行できます。 | DBA | 

## 関連リソース
<a name="migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical-resources"></a>
+ 「[Amazon RDS](https://aws.amazon.com/rds/)」 
+ [Amazon RDS 上の PostgreSQL の論理レプリケーション](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication) (Amazon RDS ドキュメント)
+ [pglogical](https://github.com/2ndQuadrant/pglogical) (GitHub リポジトリ)
+ 「[pglogicalの制限事項](https://github.com/2ndQuadrant/pglogical#limitations-and-restrictions) 」(GitHub リポジトリの README ファイル) 
+ [ロジカルレプリケーションを使用して PostgreSQL をオンプレミスまたは Amazon EC2 から Amazon RDS に移行する](https://aws.amazon.com/blogs/database/migrating-postgresql-from-on-premises-or-amazon-ec2-to-amazon-rds-using-logical-replication/) (AWS データベースブログ)

# オンプレミス PostgreSQL データベースを Aurora PostgreSQL に移行する
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql"></a>

*Amazon Web Services、Baji Shaik および Jitender Kumar*

## 概要
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-summary"></a>

Amazon Aurora PostgreSQL 互換エディションは、ハイエンドの商用データベースのパフォーマンスと可用性と、オープンソースデータベースのシンプルさとコスト効率を組み合わせています。Aurora は、同じ AWS リージョン内の 3 つのアベイラビリティーゾーンにストレージをスケーリングすることでこれらの利点を実現しており、最大 15 のリードレプリカインスタンスをサポートして読み取りワークロードをスケールアウトし、1 つのリージョン内で高可用性を実現します。Aurora グローバルデータベースを使用すると、PostgreSQL データベースを最大 5 つのリージョンに複製して、リージョンに障害が発生した場合のリモート読み取りアクセスとディザスタリカバリができます。このパターンは、オンプレミス PostgreSQL ソースデータベースを Aurora PostgreSQL 互換データベースに移行する手順を説明します。このパターンには、AWS データ移行サービス (AWS DMS) を使用、またはネイティブ PostgreSQL ツール (「[pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html)」、「[pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html)」、「[psql](https://www.postgresql.org/docs/current/app-psql.html)」など) 、またはサードパーティツールを使用する 2 つの移行オプションが含まれます。 

このパターンで説明する手順は、 Amazon Relational Database Service (Amazon RDS) と Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをターゲットとする PostgreSQL データベースにも適用されます。

## 前提条件と制限
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターの SAP ASE ソースデータベース
+ [Aurora PostgreSQL 互換 DB インスタンス](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html)または[Amazon RDS for PostgreSQL DB インスタンス](https://aws.amazon.com/getting-started/hands-on/create-connect-postgresql-db/)

**制限**
+ データベースのサイズ制限は、Amazon RDS for PostgreSQL では 64 TB、Aurora PostgreSQL 互換では 128 TB です。
+ AWS DMS 移行オプションを使用している場合は、[PostgreSQL データベースをソースとして使用する場合の AWS DMS の制限](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.Limitations)を確認してください。

**製品バージョン**
+ Amazon RDS での PostgreSQL のメジャーバージョンとマイナーバージョンのサポートについては、Amazon RDS ドキュメントの[Amazon RDS for PostgreSQL の更新](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)を参照してください。
+ Aurora での PostgreSQL サポートについては、Aurora ドキュメントの[Amazon Aurora PostgreSQL の更新](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html)を参照してください。
+ AWS DMS 移行オプションを使用している場合は、AWS DMS ドキュメントの[サポートされている PostgreSQL バージョン](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html)を参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスの PostgreSQL データベース

**ターゲットテクノロジースタック**
+ Aurora PostgreSQL 互換 DB インスタンス

**ソースアーキテクチャ**

![\[オンプレミス PostgreSQL データベースのソースアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/a8621ad3-781b-45a9-86a8-d0b0ec5c79ea.png)


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

![\[Amazon Aurora 上の PostgreSQL データベースのターゲットアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/fc2ec0cb-7b9b-4cc0-b70c-40e47c2f4c45.png)


**データ移行アーキテクチャ**

AWS DMS の使用

![\[AWS DMS を使用してオンプレミスの PostgreSQL データベースを Aurora へ移行する\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/5336adb4-e9eb-47d0-a5b5-d149261b1638.png)


*ネイティブ PostgreSQL ツールの使用*

![\[pg_dump と pg_restore を使用してオンプレミス PostgreSQL データベースを Aurora へ移行する\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/82114165-8102-44a2-8b12-485ac9eb8989/images/3c6fb533-45ff-443e-bfb1-97e60cbdd583.png)


## ツール
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)は、データストアを AWS クラウドに移行、またはクラウドとオンプレミス設定の組み合わせ間で移行する際に役立ちます。このサービスは、さまざまなソースデータベースとターゲットデータベースをサポートしています。AWS DMS での使用がサポートされている PostgreSQL のソースデータベースとターゲットデータベースのバージョンとエディションを検証する方法については、[AWS DMS ソースとして PostgreSQL データベースを使用する](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html)を参照してください。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。
+ ネイティブ PostgreSQL ツールには、[pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html)、[pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html)、[psql](https://www.postgresql.org/docs/current/app-psql.html) が含まれます。

## エピック
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-epics"></a>

### 移行を分析する
<a name="analyze-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンを検証します。 | AWS DMS を使用している場合は、[サポートされているバージョンの PostgreSQL](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html)を使用していることを確認してください。 | DBA | 
| ストレージタイプと容量の要件を特定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA、システム管理者 | 
| 適切なインスタンスタイプ、容量、ストレージ機能、ネットワーク機能を選択します。 | ターゲットデータベースインスタンスのコンピュート要件を決定します。追加の注意が必要と思われる既知のパフォーマンス問題を確認します。以下の要素を考慮して適切なインスタンスタイプを決定してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html)詳細については、Aurora ドキュメントの [Aurora DB インスタンスクラス](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)を参照してください。 | DBA、システム管理者 | 
| ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。 | アプリケーションがデータベースと通信できるようにする適切なセキュリティグループを決定します。 | DBA、システム管理者 | 
| アプリケーション移行戦略を特定します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA、アプリ所有者、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| VPC を作成します。 | ターゲットデータベースインスタンス用の新しい仮想プライベートクラウド (VPC) を作成します。 | システム管理者 | 
| セキュリティグループを作成します。 | （前のエピックで決めたように）VPC 内にセキュリティグループを作成して、データベースインスタンスへのインバウンド接続を許可します。 | システム管理者 | 
| Aurora DB クラスターを構成して起動します。 | 新しい VPC とセキュリティグループを使用してターゲットデータベースインスタンスを作成し、インスタンスを起動します。 | システム管理者 | 

### データを移行する — オプション 1 (AWS DMS を使用)
<a name="migrate-data-option-1-using-aws-dms"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行前の手順を完了します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA | 
| 移行前の手順を完了します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA | 
| データを検証します。 | データがソースからターゲットに正確に移行されたことを確認するためには、AWS DMS ドキュメントの[データ検証手順](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Validating.html)に従います。 | DBA | 

### データを移行する ‒ オプション 2 (pg\$1dump と pg\$1restore を使用)
<a name="migrate-data-option-2-using-pg_dump-and-pg_restore"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースデータベースを準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html)詳細については、[pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html)ドキュメントと AWS DMS ドキュメントの[ウォークスルー](https://docs.aws.amazon.com/dms/latest/sbs/chap-manageddatabases.postgresql-rds-postgresql-full-load-pd_dump.html)を参照してください。 | DBA | 
| ターゲットデータベースを準備します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html)詳細については、[pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html)ドキュメントと AWS DMS ドキュメントの[ウォークスルー](https://docs.aws.amazon.com/dms/latest/sbs/chap-manageddatabases.postgresql-rds-postgresql-full-load-pd_dump.html)を参照してください。 | DBA | 
| データを検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 | 最初のエピックで作成したアプリケーション移行戦略を実装します。 | DBA、アプリ所有者、システム管理者 | 

### ターゲットデータベースにカットオーバーする
<a name="cut-over-to-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替えます。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA、アプリ所有者、システム管理者 | 
| 移行をロールバックする必要がある場合。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-postgresql-database-to-aurora-postgresql.html) | DBA、アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをシャットダウンします。 | 一時的な AWS リソースをシャットダウンします。 | DBA、システム管理者 | 
| ドキュメントを検証します。 | プロジェクト文書を確認して検証する。 | DBA、アプリ所有者、システム管理者 | 
| メトリクスを収集します。 | 移行の所要時間、手動とツールによるコスト削減の割合などのメトリクスを収集します。 | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを閉じます。 | プロジェクトを閉じて、フィードバックします。 | DBA、アプリ所有者、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-postgresql-database-to-aurora-postgresql-resources"></a>

**リファレンス**
+ [AWS Database Migration Service](https://aws.amazon.com/dms/)
+ [VPC とAmazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.html)
+ [Amazon Aurora の価格設定](https://aws.amazon.com/rds/aurora/pricing/)
+ [AWS DMS ソースとしての PostgreSQL データベースの使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html)
+ [AWS DMS レプリケーションインスタンスの作成方法](https://aws.amazon.com/premiumsupport/knowledge-center/create-aws-dms-replication-instance/)
+ [AWS DMS を使用したソースエンドポイントとターゲットエンドポイントの作成方法](https://aws.amazon.com/premiumsupport/knowledge-center/create-source-target-endpoints-aws-dms/)

**追加リソース**
+ [AWS DMS の使用開始](https://aws.amazon.com/dms/getting-started/)
+ [データ移行の段階的説明](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ [Amazon Aurora のリソース](https://aws.amazon.com/rds/aurora/getting-started/)

# オンプレミス Microsoft SQL Server データベースを、Linux を実行中の Amazon EC2 上の Microsoft SQL Server に移行する
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux"></a>

*Amazon Web Services、Tirumala Dasari*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-summary"></a>

このパターンでは、バックアップユーティリティと復元ユーティリティを使用して、Microsoft Windows で実行中のオンプレミス Microsoft SQL Server データベースから Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンス上の Microsoft SQL Server に移行する方法を説明します。

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Microsoft SQL Server を搭載した Amazon EC2 Linux AMI (Amazon マシンイメージ)
+ オンプレミス Windows と Linux EC2 インスタンス上の Microsoft SQL Server 間の AWS Direct Connect

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-architecture"></a>

**ソーステクノロジースタック**
+ Microsoft SQL Server データベースのオンプレミス版

**ターゲットテクノロジースタック**
+ Microsoft SQL Server データベースを搭載した Linux EC2 インスタンス

**データベース移行アーキテクチャ**

![\[オンプレミスの SQL Server データベースを Linux EC2 インスタンスに移行するためのアーキテクチャ図。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f331ad15-2d41-4087-a6d1-60e3443e2acf/images/f50a779a-ce5d-44b1-8d37-dedd6400a12c.png)


## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-tools"></a>
+ **WinSCP** — このツールを使用すると、Windows ユーザーは Linux ユーザーとファイルを簡単に共有できます。
+ **Sqlcmd** — このコマンドラインユーティリティを使用すると、T-SQL ステートメントまたはバッチを SQL Server のローカルインスタンスとリモートインスタンスに送信できます。このユーティリティは、バッチ処理またはユニットテストなどの反復的なデータベースタスクに非常に便利です。

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-epics"></a>

### SQL Server を搭載した EC2 Linux インスタンスを準備する
<a name="prepare-the-ec2-linux-instance-with-sql-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Linux オペレーティングシステムを提供し、Microsoft SQL Server を含む AMI を選択します。 |  | SysAdmin | 
| AMI を設定して EC2 インスタンスを作成します。 |  | SysAdmin | 
| セキュリティグループのインバウンドルールとアウトバウンドルールを作成します。 |  | SysAdmin | 
| Microsoft SQL Server データベースの Linux EC2 インスタンスを設定します。 |  | DBA | 
| ソースデータベースと同様にユーザーを作成し、権限を付与します。 |  | アプリ所有者、DBA | 
| Linux EC2 インスタンスに SQL Server ツールと sqlcmd ユーティリティをインストールします。 |  | DBA | 

### データベースをバックアップし、バックアップファイルを Linux EC2 インスタンスに移動する
<a name="back-up-the-database-and-move-backup-file-to-linux-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミス SQL Server データベースをバックアップします。 |  | DBA | 
| Microsoft SQL Server に WinSCP をインストールします。 |  | DBA | 
| Microsoft SQL Server を実行中の Linux EC2 インスタンスにバックアップファイルを移動します。 |  | DBA | 

### SQL Server を実行中の Linux EC2 インスタンスにデータベースを復元する
<a name="restore-the-database-on-linux-ec2-instance-running-sql-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| sqlcmd ユーティリティを使用して、データベースバックアップファイルからデータベースを復元します。 |  | DBA | 
| データベースオブジェクトとデータを検証します。 |  | 開発者、テストエンジニア | 

### Windows SQL サーバーから Linux EC2 インスタンスの Windows SQL サーバーへのカットオーバー
<a name="cut-over-from-windows-sql-server-to-windows-sql-server-on-linux-ec2-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| データベースオブジェクトとデータを検証します。 |  | 開発者、テストエンジニア | 
| オンプレミス Microsoft SQL Server データベースから、Microsoft SQL Server を実行中の Linux EC2 インスタンスへカットオーバーします。 |  | DBA | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux-resources"></a>
+ [Amazon Linux と Ubuntu AMI で SQL Server 2017 を設定する方法](https://aws.amazon.com/blogs/database/configuring-sql-server-2017-on-amazon-linux-2-and-ubuntu-amis/) 
+ [Linux インスタンスへの SQL ツールのインストール](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools?view=sql-server-2017#RHEL) 
+ [オンプレミス Microsoft SQL Server データベースから Linux EC2 インスタンス上の Microsoft SQL Server へのバックアップと復元](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-migrate-restore-database?view=sql-server-2017#create-a-backup-on-windows) 

# リンクされたサーバーを使用して、オンプレミス Microsoft SQL Server データベースを Amazon RDS for SQL Server に移行する
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers"></a>

*Amazon Web Services、Kevin Yung、Viqash Adwani、Vishal Singh*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-summary"></a>

リンクサーバーを使用すると、Microsoft SQL Server はデータベースサーバーの他のインスタンスで SQL ステートメントを実行できます。このパターンでは、オンプレミスの Microsoft SQL Server データベースを Microsoft SQL Server 用の Amazon Relational Database Service (Amazon RDS) に移行して、コスト削減と可用性の向上を実現する方法を説明します。現在、Amazon RDS for Microsoft SQL Server は、Amazon Virtual Private Cloud (Amazon VPC) ネットワーク外の接続をサポートしていません。 

このパターンを使用すると、以下の目的を達成できます。
+ リンクされたサーバーの機能を損なうことなく、Microsoft SQL Server を Amazon RDS for Microsoft SQL Server に移行すること。
+ リンクされたMicrosoft SQL Serverをさまざまな段階で優先順位付けして移行すること。

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-prerequisites-and-limitations"></a>

**前提条件**
+ 「[Amazon RDS での Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html)」 が、必要な特徴量をサポートしているかどうかを確認してください。
+ 「[Amazon RDS for Microsoft SQL Server をデフォルトの照合順序で使用するか](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.Collation.html)」、データベースレベルで照合順序を設定して使用できることを確認してください。 

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス データベース（Microsoft SQL サーバー）

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

ソースステートアーキテクチャ

![\[Diagram showing data replication between two data centers with primary and secondary SQL servers.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/95234758-cb8b-46e5-afd2-3d4aaf6ed668/images/776b453a-7fa0-43fd-b1ca-fb9e5cc21820.png)


 

 

 

 

 

 

 

 

 

 

 

 

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

ターゲットの状態では、リンクサーバーを使用して Amazon RDS for Microsoft SQL Server を Amazon RDS に移行します。このアーキテクチャでは、Network Load Balancer を使用して、Amazon RDS for Microsoft SQL Server からのトラフィックを Microsoft SQL Server を実行しているオンプレミスサーバーにプロキシします。次の図は、Network Load Balancer のリバースプロキシ機能を示しています。

![\[AWS クラウド architecture with RDS SQL Server instances in two availability zones and on-premises databases.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/95234758-cb8b-46e5-afd2-3d4aaf6ed668/images/6bdbdfbf-b048-4fbd-acef-0aeb826edb50.png)


 

## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-tools"></a>
+ AWS CloudFormation
+ Network Load Balancer 
+ Amazon RDS for SQL Server が、複数のアベイラビリティーゾーンにある (マルチ AZ)
+ AWS Database Migration Service (AWS DMS) 

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-epics"></a>

### ランディングゾーン VPC を作成
<a name="create-a-landing-zone-vpc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CIDR 割り当てを作成します。 |  | AWS SysAdmin | 
| 仮想プライベートクラウド (VPC) を作成します。 |  | AWS SysAdmin | 
| VPC サブネットを作成します。 |  | AWS SysAdmin | 
| サブネットアクセスコントロールリスト (ACL) の作成 |  | AWS SysAdmin | 
| サブネットルートテーブルを作成します。 |  | AWS SysAdmin | 
| AWS Direct Connect または 仮想プライベートネットワーク (VPN) を使用して接続を作成します。 |  | AWS SysAdmin | 

### データベースを Amazon RDS に移行します。
<a name="migrate-the-database-to-amazon-rds"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS for Microsoft SQL Server DB インスタンスを作成します。 |  | AWS SysAdmin | 
| AWS DMS レプリケーションインスタンスを作成します。 |  | AWS SysAdmin | 
| ソースデータベースとターゲットデータベースのエンドポイントを作成します。 |  | AWS SysAdmin | 
| 移行タスクを作成し、全ロード後に連続レプリケーションを ON に設定します。 |  | AWS SysAdmin | 
| Amazon RDS for Microsoft SQL Server がオンプレミスの SQL Server データベースにアクセスできるように、ファイアウォールの変更をリクエストしてください。 |  | AWS SysAdmin | 
| Network Load Balancer を作成します。 |  | AWS SysAdmin | 
| データセンターのデータベースサーバーをターゲットとするターゲットグループを作成します。 | データセンター (DC) のフェイルオーバーイベントを組み込むには、ターゲット設定でホスト名を使用することをおすすめします。 | AWS SysAdmin | 
| リンクサーバー設定用の SQL ステートメントを実行します。 | Microsoft SQL 管理ツールを使用して、リンクサーバーを追加するための SQL ステートメントを Amazon RDS for Microsoft SQL Server DB インスタンスに対して実行します。SQL ステートメントで、Network Load Balancer のホスト名を使用するように @datasrc を設定します。Amazon RDS for Microsoft SQL Server DB インスタンスに対して、Microsoft SQL 管理ツールを使用することで、リンクされたサーバーログイン認証情報を追加します。 | AWS SysAdmin | 
| SQL Server の機能をテストして検証します。 |  | AWS SysAdmin | 
| カットオーバーを作成します。 |  | AWS SysAdmin | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers-related-resources"></a>
+ 「[Amazon RDS の Microsoft SQL Server 用の一般的な管理タスク](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General)」 
+ 「[Microsoft SQL Server の照合順序と文字セット](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.CommonDBATasks.Collation.html)」  
+ 「[Network Load Balancer のドキュメント](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)」 
+ 「[Amazon RDS for Microsoft SQL Server でリンクされたサーバーを実装する（ブログ記事）](https://aws.amazon.com/blogs/database/implement-linked-servers-with-amazon-rds-for-microsoft-sql-server/)」 

# ネイティブバックアップと復元メソッドを使用して、オンプレミスの Microsoft SQL サーバーデータベースを Amazon RDS for SQL Server に移行
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods"></a>

*Amazon Web Services、Tirumala Dasari、David Queiroz、Vishal Singh*

## 概要
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-summary"></a>

このパターンは、オンプレミスの Microsoft SQL Server データベースを SQL Server DB インスタンスの Amazon Relational Database Service (Amazon RDS) に移行する方法 (同種移行) について説明しています。移行プロセスは SQL Server のネイティブバックアップと復元方法に基づいています。SQL Server Management Studio (SSMS) を使用してデータベースバックアップファイルを作成し、Amazon Simple Storage Service (Amazon S3) バケットを使用してバックアップファイルを保存してから、Amazon RDS for SQL Server にバックアップファイルを復元します。

## 前提条件と制限
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ S3 バケットと Amazon RDS for SQL Server DB インスタンスにアクセスするための AWS Identity and Access Management (IAM) ロールポリシー

**制限事項**
+ このパターンで説明されているプロセスでは、データベースのみを移行します。SQL ログインまたはデータベースユーザー (SQL Server エージェントジョブを含む) は、追加の手順が必要なため、移行されません。

**製品バージョン**
+ SQL Server 2017: サポートされているバージョンと特徴量の最新リストについては、AWS ドキュメントの「[Amazon RDS 上の Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport)」を参照してください。

## アーキテクチャ
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス Microsoft SQL Server データベース

**ターゲットテクノロジースタック**
+ Amazon RDS for SQL Server DB インスタンス

**データ移行****アーキテクチャ**

![\[オンプレミスの SQL Server DB を Amazon RDS for SQL Server DB インスタンスに移行するためのアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/c2dcd6ab-deb1-4d5e-b3c5-3bf48c02ca4e/images/29f90473-6dd4-4574-bfbd-5c6a0481c40e.png)


## ツール
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-tools"></a>
+ Microsoft SQL Server Management Studio (SSMS) は、SQL Server インフラストラクチャを管理するための統合環境です。SQL Server とやり取りする豊富なスクリプトエディターを備えたユーザーインターフェイスとツールグループを備えています。

## エピック
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-epics"></a>

### Amazon RDS for SQL Server DB インスタンスを作成
<a name="create-an-amazon-rds-for-sql-server-db-instance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon RDS for SQL Server でデータベースエンジンとして SQL Server を選択します。 |  | DBA | 
| SQL Server Express Editionを選択します。 |  | DBA | 
| データベースの詳細を指定します。 | DB を作成する詳細情報について、「[Amazon RDS のドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)」を参照してください。 | DBA、アプリ所有者 | 

### オンプレミスの SQL Server データベースからバックアップファイルを作成
<a name="create-a-backup-file-from-the-on-premises-sql-server-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SSMS を使用してオンプレミスの SQL Server データベースConnect。 |  | DBA | 
| データベースのバックアップを作成します。 | 手順については、「[SSMS ドキュメント](https://learn.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms)」を参照してください。 | DBA、アプリ所有者 | 

### Amazon S3 にバックアップファイルをアップロードします。
<a name="upload-the-backup-file-to-amazon-s3"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon S3 にバケットを作成します。 | 詳細については、[Amazon S3 ドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)を参照してください。 | DBA | 
| バックアップファイルを S3 バケットにアップロードします。 | 詳細については、[Amazon S3 ドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)を参照してください。 | SysOps 管理者 | 

### Amazon RDS for SQL Server でデータベースを復元する
<a name="restore-the-database-in-amazon-rds-for-sql-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オプショングループを Amazon RDS に追加します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.html)詳細については、「 [Amazon RDS ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html)」を参照してください。 | SysOps 管理者 | 
| データベースを復元します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.html) | DBA | 

### ターゲットデータベースの検証
<a name="validate-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オブジェクトとデータを検証する。 | ソースデータベースと Amazon RDS for SQL Server の間のオブジェクトとデータを検証します。このタスクはデータベースのみを移行します。ログインとジョブは移行されません。 | アプリ所有者、DBA | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションのトラフィックをリダイレクトします。 | 検証後、アプリケーションのトラフィックを Amazon RDS for SQL Server DB インスタンスにリダイレクトします。 | アプリ所有者、DBA | 

## 関連リソース
<a name="migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods-resources"></a>
+ 「[Amazon RDS ドキュメント](https://docs.aws.amazon.com/s3/)」  
+ 「[Amazon RDS for SQL Server のドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html)」 
+ 「[Microsoft SQL Server データベースエンジンのオプション](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.html)」  

# AWS DMS と AWS SCT を使用して Microsoft SQL Server データベースを Aurora MySQL に移行
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct"></a>

*Amazon Web Services、Mark Szalkiewicz、Pavan Pusuluri*

## 概要
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-summary"></a>

このパターンは、オンプレミスまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにある Microsoft SQL Server データベースを Amazon Aurora MySQL Server インスタンスに移行する方法を示しています。このパターンでは AWS Database Migration Service (AWS DMS) と AWS Schema Conversion Tool (AWS SCT) を使用して、データ移行とスキーマ変換を行います。

## 前提条件と制限
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-prerequisites-and-limitations"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターまたは EC2 インスタンスにあるMicrosoft SQL Server データベース 
+ AWS SCT コネクタ用の Java データベース接続 (JDBC) ドライバー。ローカルマシンまたは AWS SCT がインストールされている EC2 インスタンスにインストールされます。 

 

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

**製品バージョン**
+ Enterprise、Standard、Workgroup と Developer エディションの Microsoft SQL Server 2008、2008R2、2012、2014、2016 と 2017。Web と Express エディションは AWS DMS にサポートされていません。サポートされているバージョンの最新リストについては、「[Microsoft SQL Server データベースの &DMS; のソースとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)」を参照してください。最も包括的なバージョンと機能サポートのため、AWS DMS の最新バージョンを使用することをお勧めします。AWS SCT でサポートされている Microsoft SQL Server のバージョンについては、「[AWS SCT のドキュメント](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」を参照してください。
+ MySQL バージョン 5.5、5.6、5.7. サポートされているバージョンの最新リストについては、「[MySQL 互換データベースの AWS DMS のターゲットとしての使用](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)」を参照してください。

## アーキテクチャ
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-architecture"></a>

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

次のいずれかです: 
+ オンプレミスの Microsoft SQL Server データベース
+ EC2 インスタンスにおける Microsoft SQL Server データベース。

**ターゲットテクノロジースタック**
+ Aurora MySQL

**データ移行アーキテクチャ**
+ AWS Cloud で実行されている Microsoft SQL Server データベースから 

![\[AWS クラウド architecture showing VPC with private subnet containing SQL Server and Aurora MySQL databases.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e2de4507-82a8-4bd6-b25b-1e830b197b9f/images/c675ada4-e92c-4ddb-b49f-69668f532504.png)

+ オンプレミスデータセンターで実行している Microsoft SQL Server データベースから

![\[AWS クラウド architecture diagram showing on-premises to cloud migration using AWS SCT, DMS, and Aurora MySQL.\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e2de4507-82a8-4bd6-b25b-1e830b197b9f/images/b6ce0199-fc56-4bf2-a8cc-67de161e3cf0.png)


## ツール
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-tools"></a>
+ **AWS DMS** - [AWS データ移行サービス](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html) (AWS DMS) は、Oracle、SQL Server、MySQL、PostgreSQL など、よく使用されている商用データベースやオープンソースデータベースとの間におけるデータを移行するのに役立ちます。AWS DMS を使用して、オンプレミスのインスタンス間 (AWS クラウドセットアップを使用)、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間で、AWS クラウドにデータを移行できます。
+ **AWS SCT** – 「[AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」(AWS SCT) は、ソースデータベーススキーマと大部分のカスタムコードをターゲットデータベースと互換性のある形式に自動的に変換し、異種データベースを簡単に移行できるようにします。

## エピック
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-epics"></a>

### 移行の準備をする
<a name="prepare-for-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットデータベースのバージョンとエンジンを検証します。 |  | DBA | 
| ソースデータベースとターゲットデータベース用のアウトバンドセキュリティグループを作成します。 |  | SysAdmin | 
| 必要に応じて AWS SCT の EC2 インスタンスを作成して設定します。 |  | DBA | 
| AWS SCT および関連ドライバーの最新バージョンをダウンロードします。 |  | DBA | 
| ソースデータベースに前提条件となるユーザーと権限を追加して検証します。 |  | DBA | 
| ワークロード用の AWS SCT プロジェクトを作成し、ソースデータベースに接続します。 |  | DBA | 
| 評価レポートを生成し、実現可能性を評価します。 |  | DBA | 

### ターゲットデータベースの準備
<a name="prepare-the-target-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon Aurora をデータベースエンジンとして使用して、ターゲット Amazon RDS DB インスタンスを作成します。 |  | DBA | 
| ソースからユーザ、ロール、権限のリストを抽出します。 |  | DBA | 
| 既存のデータベースユーザーを新しいデータベースユーザーにマッピングします。 |  | アプリ所有者 | 
| ターゲットデータベースにユーザーを作成します。 |  | DBA | 
| 前のステップのロールをターゲットデータベースに適用します。 |  | DBA | 
| ソースデータベースにおけるデータベースオプション、パラメーター、ネットワークファイル、データベースリンクを確認し、ターゲットデータベースへの適用性を評価します。 |  | DBA | 
| 関連する設定をターゲットに適用します。 |  | DBA | 

### オブジェクトを転送
<a name="transfer-objects"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットデータベースへの AWS SCT 接続を設定します。 |  | DBA | 
| AWS SCT を使用してスキーマを変換します。 | AWS SCT は、ソースデータベーススキーマとほとんどのカスタムコードをターゲットデータベースと互換性のある形式に自動的に変換します。任意のコードは、自動的に変換できないツールは明確にマークされるため、手動で変換できます。 | DBA | 
| 生成された SQL レポートを確認し、エラーと警告をすべて保存します。 |  | DBA | 
| 自動スキーマ変更をターゲットに適用するか、.sql ファイルとして保存します。 |  | DBA | 
| AWS SCT がターゲット上にオブジェクトを作成したことを確認します。 |  | DBA | 
| 自動的に変換できなかった項目は手動で書き換え、却下、または再設計します。 |  | DBA | 
| 生成されたロールとユーザー権限を適用し、例外がないか確認します。 |  | DBA | 

### データを移行する
<a name="migrate-the-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 移行方法を決定します。 |  | DBA | 
| AWS DMS コンソールからレプリケーションインスタンスを作成します。 | AWS DMS の使用方法の詳細については、「関連リソース」セクションのリンクを参照してください。 | DBA | 
| ソースおよびターゲットエンドポイントを作成します。 |  | DBA | 
| レプリケーションタスクを作成します。 |  | DBA | 
| レプリケーションタスクを開始し、ログをモニタリングします。 |  | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS SCT を使用して、アプリケーションコード内の SQL 項目を分析し、変換します。 | エンジン間でデータベーススキーマを変換するときは、古いデータベースエンジンの代わりに新しいデータベースエンジンとやり取りするように、アプリケーションの SQL コードを更新する必要があります。変換された SQL コードは表示、分析、編集、保存できます。AWS SCT の使用方法の詳細については、「関連リソース」セクションのリンクを参照してください。 | アプリ所有者 | 
| AWS に新しいアプリケーションサーバーを作成します。 |  | アプリ所有者 | 
| アプリケーションコードを新しいサーバーに移行します。 |  | アプリ所有者 | 
| ターゲットデータベースとドライバー用にアプリケーションサーバーを設定します。 |  | アプリ所有者 | 
| アプリケーションのソースデータベースエンジンに固有のコードを修正します。 |  | アプリ所有者 | 
| ターゲットエンジンに合わせてアプリケーションコードを最適化します。 |  | アプリ所有者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 新規ユーザー、権限、コード変更のいずれかをすべてターゲットに適用します。 |  | DBA | 
| 変更用にアプリケーションをロックします。 |  | アプリ所有者 | 
| すべての変更がターゲットデータベースに反映されたことを検証します。 |  | DBA | 
| 新しいターゲットデータベースを新しいアプリケーションにポイントします。 |  | アプリ所有者 | 
| すべて再チェックします。 |  | アプリ所有者 | 
| 本番稼働。 |  | アプリ所有者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| の一時的な AWS リソース(AWS DMS レプリケーションインスタンスや AWS SCT に使用される EC2 インスタンス) をシャットダウンします。 |  | DBA、アプリ所有者 | 
| 内部チーム向けの AWS DMS プロセスに関するフィードバックを更新します。 |  | DBA、アプリ所有者 | 
| AWS DMS プロセスを改訂し、必要に応じてテンプレートを改善します。 |  | DBA、アプリ所有者 | 
| プロジェクト文書を確認して検証する。 |  | DBA、アプリ所有者 | 
| 移行の所要時間、手動とツールによるコスト削減の割合などのメトリクスを収集します。 |  | DBA、アプリ所有者 | 
| プロジェクトを閉じて、フィードバックします。 |  | DBA、アプリ所有者 | 

## 関連リソース
<a name="migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct-related-resources"></a>

リファレンス
+ 「[AWS DMS ユーザーガイド](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」
+ 「[AWS SCT ユーザーガイド](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」  
+ 「[Amazon Aurora の料金](https://aws.amazon.com/rds/aurora/pricing/)］ 

**チュートリアルと動画**
+ [AWS Database Migration Service の使用開始](https://aws.amazon.com/dms/getting-started/)
+ 「[AWS Schema Conversion Tool の開始方法](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)」
+ 「[Amazon RDS のリソース](https://aws.amazon.com/rds/getting-started/)」
+ 「[AWS DMS のステップバイステップのチュートリアル](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)」 

# ネイティブツールを使用して オンプレミスの MariaDB Amazon RDS for MariaDB に移行する
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools"></a>

*Amazon Web Services、Shyam Sunder Rakhecha*

## 概要
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-summary"></a>

このパターンは、ネイティブツールを使用して オンプレミスの MariaDB 用の Amazon Relational Database Service (Amazon RDS) に移行するためのガイダンスを提供します。MySQL ツールがインストールされている場合は、**mysql** と **mysqldump** を使用できます。MariaDB ツールがインストールされている場合は、**mariadb** と **mariadb-dump** を使用できます。MySQL ツールと MariaDB ツールは同じオリジンですが、MariaDB バージョン 10.6 以降では若干の違いがあります。

## 前提条件と制限
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターの MariaDB ソースデータベース

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

**製品バージョン**
+ MariaDB バージョン 10.0-10.6 (サポートされているバージョンの最新リストについては、AWS ドキュメントの 「[Amazon RDS 上の MariaDB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)」 を参照してください)

## アーキテクチャ
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミスデータセンターの MariaDB データベース

**ターゲットテクノロジースタック**
+ Amazon RDS for MariaDB の DB インスタンス

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

![\[異なるアベイラビリティーゾーンにあるプライマリおよびスタンバイ RDS DB インスタンスを含むアーキテクチャ図。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7be644e0-da42-4515-87b7-04da7a054adb/images/eca8eb55-579a-42e2-96ce-9b14b097b4c9.png)


**データ移行アーキテクチャ**

![\[オンプレミスの MariaDB データベースを Amazon RDS に移行するアーキテクチャ図\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7be644e0-da42-4515-87b7-04da7a054adb/images/daba40e2-a2b1-44f8-8e69-31458206a823.png)


## ツール
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-tools"></a>
+ ネイティブ MySQL ツール: **mysql** と **mysqldump**
+ ネイティブ MariaDB ツール: **mariadb** と **mariadb-dump**

## エピック
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ソースとターゲットのデータベースのバージョンとエンジンを検証します。　 |  | DBA | 
| ターゲットサーバーインスタンスのハードウェア要件を特定します。 |  | DBA、システム管理者 | 
| ストレージ要件 (ストレージタイプと容量) を特定します。 |  | DBA、システム管理者 | 
| 容量、ストレージ機能、ネットワーク機能に基づき、適切なインスタンスタイプを選択します。 |  | DBA、システム管理者 | 
| ソースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定します。 |  | DBA、システム管理者 | 
| アプリケーション移行戦略を特定します。 |  | DBA、アプリ所有者、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 |  | システム管理者 | 
| セキュリティグループを作成します。 |  | システム管理者 | 
| MariaDB を実行する Amazon RDS DB インスタンスを設定し、起動します。 |  | システム管理者 | 

### データを移行する
<a name="migrate-data"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ネイティブツールを使用してデータベースオブジェクトとデータを移行します。 | ソースデータベースで、**mysqldump** または **mariadb-dump** を使用して、データベースオブジェクトとデータを含む出力ファイルを作成します。ターゲットデータベースで、**mysql** または **mariadb** を使用して、データを復元します。 | DBA | 
| データを検証します。 | ソースデータベースとターゲットデータベースをチェックして、データ移行が成功したことを確認します。 | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーション移行戦略に従います。 |  | DBA、アプリ所有者、システム管理者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを新しいインフラストラクチャに切り替ます。 |  | DBA、アプリ所有者、システム管理者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 一時的な AWS リソースをシャットダウンします。 |  | システム管理者 | 
| プロジェクト文書を確認して検証する。 |  | DBA、アプリ所有者、システム管理者 | 
| 移行までの時間、ツールによるコスト削減などに関する指標を収集します。 |  | DBA、アプリ所有者、システム管理者 | 
| プロジェクトを終了し、フィードバックを提供します。 |  | DBA、アプリ所有者、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools-resources"></a>

Amazon RDS リファレンス
+ [Amazon RDS for MariaDB](https://aws.amazon.com/rds/mariadb/)
+ 「[Amazon Virtual Private Cloud VPC および Amazon RDSAmazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)」
+ 「[Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/)」
+ 「[Amazon RDS の価格設定](https://aws.amazon.com/rds/pricing/)」

MySQL と MariaDB のリファレンス
+ 「[mariadb ダンプ/mysqldump](https://mariadb.com/kb/en/mariadb-dumpmysqldump/)」 
+ 「[mysql コマンドラインクライアント](https://mariadb.com/kb/en/mysql-command-line-client/)」 

**チュートリアルと動画**
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」

# オンプレミス MySQL データベースを Aurora MySQL に移行する
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql"></a>

*Amazon Web Services、Igor Obradovic*

## 概要
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-summary"></a>

このパターンでは、オンプレミス MySQL ソースデータベースを Amazon Aurora MySQL 互換エディションに移行する方法を説明します。移行の 2 つのオプションについて説明します。 AWS Database Migration Service (AWS DMS) を使用するか、**mysqldbcopy** や**mysqldump** などのネイティブ MySQL ツールを使用します。

## 前提条件と制限
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ オンプレミスデータセンターの MySQL ソースデータベース

**制限事項**
+ データベースサイズの上限:128 TB

**製品バージョン**
+ MySQL バージョン 8.0 (Aurora MySQL バージョン 3) は、標準サポートで利用できます。
+ MySQL バージョン 5.7 (Aurora MySQL バージョン 2) は、延長サポートで利用できます。追加料金が発生します。

サポートされているバージョンの最新リストについては、 AWS ドキュメントの[「Amazon Aurora バージョン](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.release-calendars.html)」を参照してください。を使用している場合は AWS DMS、 [でサポートされている for MySQL バージョンのターゲットとしての MySQL 互換データベース AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)の使用も参照してください AWS DMS。 MySQL 

## アーキテクチャ
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-architecture"></a>

**ソーステクノロジースタック**
+ オンプレミス MySQL データベース

**ターゲットテクノロジースタック**
+ Amazon Aurora MySQL 互換エディション 

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

Aurora のデータはクラスターボリュームに保存されます。これは、ソリッドステートドライブ (SSD) を使用する単一の仮想ボリュームです。クラスターボリュームは、単一の AWS リージョンの 3 つのアベイラビリティーゾーン間のデータのコピーで構成されます。データはアベイラビリティーゾーン間で自動的にレプリケートされるため、データ損失の可能性は低く、耐久性は非常に高くなります。

Aurora は、データベースボリュームを多数のディスクにまたがる 10 GB のセグメントに自動的に分割します。データベースボリュームの 10 GB ごとに、3 つのアベイラビリティーゾーン間で 6 方向にレプリケートされます。次の図は、Aurora DB クラスター内のクラスターボリューム、ライター DB インスタンス、リーダー DB インスタンス間の関係と、コンピューティングキャパシティとストレージの分離を示しています。このアーキテクチャの詳細については、[Aurora ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html)と「[よくある質問](https://aws.amazon.com/rds/aurora/faqs/#product-faqs)」を参照してください。

![\[AWS 上の Aurora MySQL DB インスタンスと共有ストレージボリューム。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/22729803-e4ff-45a2-ab5b-8ba2445e5e21/images/0d7d8ebd-e0f2-4bcf-b296-8bdfb2f12b64.png)


**データ移行アーキテクチャ**

*の使用 AWS DMS:*

次の図は、 AWS クラウドを使用したオンプレミス MySQL データベースの 内の Aurora MySQL 互換クラスターへの移行を示しています AWS DMS。

![\[AWS DMS を使用してオンプレミスの MySQL データベースを Aurora MySQL に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/22729803-e4ff-45a2-ab5b-8ba2445e5e21/images/e5d72ebd-d157-45d7-8844-d1011f1646c0.png)


*ネイティブ MySQL ツールを使用する*:

次の図は、**mysqldbcopy やmysqldump** ****などのネイティブ MySQL ツールを使用した AWS クラウド、 の Aurora MySQL 互換クラスターへのオンプレミス MySQL データベースの移行を示しています。

![\[mysqldbcopy と mysqldump を使用してオンプレミス MySQL データベースを Aurora MySQL に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/22729803-e4ff-45a2-ab5b-8ba2445e5e21/images/26258752-24f6-4241-a49f-59c15e946314.png)


 

## ツール
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) は、複数のソースデータベースエンジンとターゲットデータベースエンジンをサポートしています。でサポートされている MySQL ソースデータベースとターゲットデータベースの詳細については AWS DMS、[MySQL 互換データベースの移行 AWS](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MySQL.html)」を参照してください。最も包括的なバージョンと機能のサポート AWS DMS には、 の最新バージョンを使用することをお勧めします。
+ [mysqldbcopy](https://manpages.ubuntu.com/manpages/focal/man1/mysqldbcopy.1.html) は、単一のサーバー上またはサーバー間で MySQL データベースをコピーする MySQL ユーティリティです。
+ [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) は、バックアップまたは移行の目的で MySQL データベースからダンプファイルを作成する MySQL ユーティリティです。

## エピック
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-epics"></a>

### 移行を計画する
<a name="plan-the-migration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| バージョンとエンジンを検証します。 | ソースデータベースとターゲットデータベースのデータベースバージョンとエンジンを検証します。 | DBA | 
| ハードウェア要件を特定します。 | ターゲットサーバーインスタンスのハードウェア要件を特定します。 | DBA、システム管理者 | 
| ストレージ要件を特定します。 | ストレージ要件 (ストレージタイプと容量) を特定します。 | DBA、システム管理者 | 
| インスタンスタイプを選択します。 | コンピューティング要件、ストレージ要件、ネットワーク要件に基づいて適切なインスタンスタイプを選択します。 | DBA、システム管理者 | 
| ネットワークアクセスのセキュリティ要件を特定します。 | ソースデータベースとターゲットデータベースのネットワークアクセスセキュリティ要件を特定する。 | DBA、システム管理者 | 
| 戦略を特定します。 | アプリケーション移行戦略を特定します。 | DBA、アプリ所有者、システム管理者 | 

### インフラストラクチャを設定する
<a name="configure-the-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 | 手順については、Amazon Virtual Private Cloud (Amazon VPC) ドキュメントの「[VPC を作成する](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)」を参照してください。 | システム管理者 | 
| セキュリティグループを作成します。 | 手順については、Amazon VPC ドキュメントの「[VPC 用のセキュリティグループを作成するには](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)」を参照してください。 | システム管理者 | 
|  AWS アカウントで Aurora MySQL 互換 DB クラスターを設定して起動します。 | 手順については、Aurora ドキュメントの「[Amazon Aurora DB クラスターの作成](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html)」を参照してください。 | システム管理者 | 

### データ移行 - オプション 1
<a name="migrate-data---option-1"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ネイティブ MySQL ツールまたはサードパーティツールを使用して、データベースオブジェクトとデータを移行します。 | 手順については、[mysqldbcopy](https://manpages.ubuntu.com/manpages/focal/man1/mysqldbcopy.1.html)、[mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) などの MySQL ツールのドキュメントを参照してください。 | DBA | 

### データ移行 — オプション 2
<a name="migrate-data---option-2"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| でデータを移行します AWS DMS。 | 手順については、 AWS DMS ドキュメントの[「ソースとして MySQL 互換データベース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html)[を使用する」および「ターゲットとして MySQL 互換データベース](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)を使用する」を参照してください。 | DBA | 

### アプリケーションを移行する
<a name="migrate-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 戦略に従います。 | アプリケーション移行戦略に従います。 | DBA、アプリ所有者、システム管理者 | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションクライアントを切り替えます。 | アプリケーションクライアントを切り替えて、新しい Aurora クラスターエンドポイントに接続します。 | DBA、アプリ所有者、システム管理者 | 

### プロジェクトを閉じる
<a name="close-the-project"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをシャットダウンします。 | 一時 AWS リソースをシャットダウンします。 | DBA、システム管理者 | 
| ドキュメントを確認します。 | プロジェクト文書を確認して検証する。 | DBA、アプリ所有者、システム管理者 | 
| メトリクスを収集します。 | 移行の所要時間、手動ステップとツールの使用率、コスト削減などに関するメトリクスを収集します。 | DBA、アプリ所有者、システム管理者 | 
| 移行プロジェクトを完了します。 | プロジェクトを終了し、フィードバックを提供します。 | アプリ所有者、DBA、システム管理者 | 

## 関連リソース
<a name="migrate-an-on-premises-mysql-database-to-aurora-mysql-resources"></a>

**リファレンス**
+ [Amazon Aurora MySQL DB クラスターへのデータの移行](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.html)
+ [AWS DMS website](https://aws.amazon.com/dms/)
+ [AWS DMS ドキュメント](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ 「[Amazon Aurora の料金](https://aws.amazon.com/rds/aurora/pricing/)］
+ [Aurora MySQL DB クラスターの作成と接続](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.Aurora.html)
+ [Amazon VPC と Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)
+ 「[Amazon Aurora ドキュメント](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」

**チュートリアルと動画**
+ [の開始方法 AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Amazon Aurora の使用開始](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.html)

# Percona XtraBackup、Amazon EFS、Amazon S3 を使用してオンプレミスの MySQL データベースを Aurora MySQL に移行する
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3"></a>

*Amazon Web Services、Rohan Jamadagni、Udayasimha Theepireddy、sajith menon*

## 概要
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-summary"></a>

このパターンでは、Percona XtraBackup を使用して、大規模なオンプレミスの MySQL データベースを Amazon Aurora MySQL に効率的に移行する方法を説明します。Percona XtraBackup は、MySQL ベースのサーバー用のオープンソースのノンブロッキングバックアップユーティリティです。このパターンは、Amazon Elastic File System (Amazon EFS) を使用して Amazon Simple Storage Service (Amazon S3) にバックアップをアップロードする時間を短縮し、Amazon Aurora MySQL にバックアップを復元する方法を示しています。このパターンには、Percona のインクリメンタルバックアップを作成して、ターゲット Aurora MySQL データベースに適用されるバイナリログの数を最小限に抑える方法の詳細も記載されています。 

## 前提条件と制限事項
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。
+ AWS Identity and Access Management (IAM) ロールとポリシーの作成権限
+ オンプレミスの MySQL データベースと AWS 上の仮想プライベートクラウド (VPC) 間のネットワーク接続

**制限事項**
+ ソースサーバーは、ネットワークファイルシステム (NFS) クライアント (nfs-utils/nfs-common) をインストールできる Linux ベースのシステムである必要があります。
+ バックアップファイルのアップロードに使用する S3 バケットは、サーバー側の暗号化 (SSE-S3/SSE-KMS) のみをサポートしています。
+ Amazon S3 では、バックアップファイルのサイズが 5 TB に制限されます。バックアップファイルが 5 TB を超える場合は、それを複数の小さいファイルに分割できます。
+ S3 バケットにアップロードされるソースファイルの数は、百万ファイルを超えることはできません。
+ このパターンでは、Percona XtraBackup 完全バックアップと増分バックアップのみがサポートされます。`--tables`、`--tables-exclude`、`--tables-file`、`--databases`、`--databases-exclude`、または `--databases-file` を使用する部分バックアップはサポートされていません。
+ Aurora は、ユーザー、関数、ストアドプロシージャ、またはタイムゾーン情報をソース MySQL データベースから復元しません。

**製品バージョン**
+ ソースデータベースは MySQL バージョン 5.5、5.6、または 5.7 である必要があります。
+ MySQL 5.7 では、Percona XtraBackup 2.4 を使用する必要があります。
+ MySQL 5.6 と 5.6 では、Percona XtraBackup 2.3 または 2.4 を使用する必要があります。

## アーキテクチャ
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-architecture"></a>

**ソーステクノロジースタック**
+ Linux ベースのオペレーティングシステム。
+ MySQL サーバー
+ Percona XtraBackup

**ターゲットテクノロジースタック**
+ Amazon Aurora
+ Amazon S3
+ Amazon EFS

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

![\[Percona XtraBackup を使用して、大規模な MySQL データベースを Amazon Aurora MySQL に移行するためのアーキテクチャです。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/bf327776-bafd-484d-9ae2-a6f5c8af6edd/images/7a410539-1511-4106-90e2-8c0c8e95f92b.png)


## ツール
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-tools"></a>

*AWS サービス*
+ 「[Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.html)」はフルマネージドリレーショナルデータベースエンジンで、MySQL のデプロイを簡単に、コスト効率よく設定、操作、スケーリングすることができます。Aurora MySQL は MySQL のドロップイン代替品です。
+ 「[Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)」は、 AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。

その他のツール
+ 「[Percona XtraBackup](https://www.percona.com/doc/percona-xtrabackup/2.4/index.html)」は、データベースを中断したりブロックしたりすることなく、MySQLデータベースのストリーミング、圧縮、および増分バックアップを実行するオープンソースのユーティリティです。

## エピック
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-epics"></a>

### Amazon EFS ファイルシステムを作成する
<a name="create-an-amazon-efs-file-system"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon EFS マウントターゲットに関連付けるセキュリティグループを作成します。 | AWS Transit Gateway 経由でオンプレミスデータベースに VPN アタッチメントを設定したセキュリティグループを VPC に作成します。このストーリーやその他のストーリーで説明されているコマンドと手順の詳細については、このパターンの最後にある「関連リソース」セクションのリンクを参照してください。 | AWS DevOps/データベース管理者 | 
| セキュリティグループルールを編集します。 | NFS タイプ、ポート 2049、オンプレミスデータベースサーバーの IP 範囲をソースとして使用して、インバウンドルールを追加します。デフォルトでは、アウトバウンドルールはすべてのトラフィックの流出を許可します。そうでない場合は、NFS ポートへの接続を開くアウトバウンドルールを追加してください。さらに 2 つのインバウンドルールを追加します。ポート 2049 (ソース:同じセキュリティグループのセキュリティグループ ID) とポート 22 (ソース:EC2 インスタンスに接続する IP 範囲) です。 | AWS DevOps/データベース管理者 | 
| ファイルシステムを作成します。 | マウントターゲットでは、前の記事で作成した VPC とセキュリティグループを使用します。オンプレミスデータベースの I/O 要件に基づいてスループットモードとパフォーマンスを選択します。オプションで、保管時の暗号化を有効にします。 | AWS DevOps/データベース管理者 | 

### ファイルシステムをマウントします。
<a name="mount-the-file-system"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスに関連付ける IAM インスタンスプロファイルロールを作成します。 | Amazon S3 にオブジェクトをアップロードしてアクセスするためのアクセス許可を持つ IAM ロールを作成します。バックアップをポリシーリソースとして保存する S3 バケットを選択します。 | AWS DevOps | 
| EC2 インスタンスを作成します。 | Linux ベースの EC2 インスタンスを起動し、前のステップで作成した IAM インスタンスプロファイルロールと、前に作成したセキュリティグループをアタッチします。 | AWS DevOps | 
| NFS クライアントをインストールします。 | オンプレミスのデータベースサーバーと EC2 インスタンスに NFS クライアントをインストールします。インストール手順については、「追加情報」を参照してください。 | DevOps | 
| Amazon EFS ファイルシステムをマウントします。 | オンプレミスと EC2 インスタンスに、Amazon EFS ファイルシステムをマウントします。各サーバーで、バックアップを保存するディレクトリを作成し、マウントターゲットエンドポイントを使用してファイルシステムをマウントします。例については、「追加情報」を参照してください。 | DevOps | 

### MySQL ソースデータベースのバックアップの作成
<a name="make-a-backup-of-the-mysql-source-database"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Percona XtraBackup のインストール | Percona XtraBackup 2.3 または 2.4 (MySQL データベースのバージョンによって異なります) をオンプレミスのデータベースサーバーにインストールします。インストールリンクについては、「関連リソース」セクションを参照してください。 | データベース管理者 | 
| ソースデータベースのスキーマとテーブルの数を数えます。 | ソース MySQL データベース内のスキーマとオブジェクトの数を収集して書き留めます。これらの数を使用して、移行後に Aurora MySQL データベースを検証します。 | データベース管理者 | 
| (オプション) ソースデータベースの最新のバイナリログシーケンスを書き留めておきます。 | ダウンタイムを最小限に抑えるために、ソースデータベースと Aurora MySQL 間でバイナリログのレプリケーションを確立する場合は、このステップを実行します。log-bin を有効にし、server\$1id が一意である必要があります。バックアップを開始する直前に、ソースデータベースの現在のバイナリログシーケンスを書き留めておきます。完全バックアップのみを使用する場合は、完全バックアップの直前にこの手順を実行してください。完全バックアップの後に増分バックアップを行う予定の場合は、Aurora MySQL DB インスタンスで復元する最後の増分バックアップの直前にこのステップを実行してください。 | データベース管理者 | 
| ソース MySQL データベースのフルバックアップを開始します。 | Percona XtraBackup を使用して MySQL ソースデータベースの完全バックアップを作成します。フルバックアップと増分バックアップのコマンドの例については、「追加情報」セクションを参照してください。 | データベース管理者 | 
| (オプション) Percona XtraBackup を使用して増分バックアップを作成します。 | インクリメンタルバックアップを使用すると、ソースデータベースを Aurora MySQL と同期するために適用する必要があるバイナリログの量を減らすことができます。サイズが大きくてトランザクション量の多いデータベースでは、バックアップ中に大量のバイナリログが生成されることがあります。増分バックアップを作成して共有の Amazon EFS ファイルシステムに保存することで、データベースのバックアップとアップロードにかかる時間を大幅に短縮できます。詳細については、「追加情報」を参照してください。Aurora への移行プロセスを開始する準備が整うまで、引き続き増分バックアップを行います。 | データベース管理者 | 
| バックアップの作成 | このステップでは、バックアップ中に処理されていたトランザクションのトランザクションログがバックアップに適用されます。引き続き、各増分バックアップにトランザクションログ (--apply-log-only) を適用して、最後のバックアップを除いてバックアップをマージします。例については、「追加情報」セクションを参照してください。このステップの後、マージされた完全バックアップは「\$1/<efs\$1mount\$1name>/fullbackup」に保存されます。 | データベース管理者 | 
| 最後にマージされたバックアップを圧縮して分割します。 | 最終的な統合バックアップを準備したら、tar、zip、split コマンドを使用して、バックアップの小さな ZIP ファイルを作成します。例については、「追加情報」セクションを参照してください。 | データベース管理者 | 

### Aurora MySQL DB クラスターにバックアップを復元します。
<a name="restore-the-backup-to-an-aurora-mysql-db-cluster"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon S3 にバックアップファイルをアップロードします。 | バックアップファイルが保存されている Amazon EFS ファイルシステムは、オンプレミスデータベースと EC2 インスタンスの両方にマウントされるため、バックアップファイルは EC2 インスタンスですぐに使用できます。Secure Shell (SSH) を使用して EC2 インスタンスに接続し、圧縮されたバックアップファイルを新規または既存の S3 バケットにアップロードします。例: aws s3 sync \$1/<efs\$1mount\$1name>/fullbackup s3://<bucket\$1name>/fullbackup 詳細については、「関連リソース」セクションのリンクを参照してください。 | AWS DevOps | 
| Aurora が Amazon S3 にアクセスするためのサービスロールを作成します。 | 「rds.amazonaws.com」という信頼のある IAM ロールと、バックアップファイルが保存されている S3 バケットに Aurora がアクセスできるようにするポリシーを作成します。必要な権限は、ListBucket、GetObject、GetObjectVersion です。 | AWS DevOps | 
| Aurora のネットワーク設定を作成します。 | 少なくとも 2 つのアベイラビリティーゾーンと、ソースデータベースへのアウトバウンド接続を可能にするサブネットルートテーブル設定を含むクラスター DB サブネットグループを作成します。オンプレミスデータベースへのアウトバウンド接続を許可し、管理者が Aurora DB クラスターに接続できるようにするセキュリティグループを作成します。詳細については、「関連リソース」セクションのリンクを参照してください。 | AWS DevOps/データベース管理者 | 
| Aurora MySQL DB クラスターにバックアップを復元します。 | Amazon S3 にデータをアップロードしたバックアップから復元します。ソースデータベースの MySQL バージョンを指定し、バックアップファイルをアップロードした S3 バケット名とフォルダパスのプレフィックスを指定し (例えば、「追加情報」セクションの例では「フルバックアップ」)、Aurora に Amazon S3 へのアクセスを許可するために作成した IAM ロールを指定します。 | AWS DevOps/データベース管理者 | 
| Aurora MySQL データベースを検証します。 | 復元された Aurora DB クラスター内のスキーマとオブジェクトの数を、ソースデータベースから取得した数と照合して検証します。 | データベース管理者 | 
| バイナリログのレプリケーションを設定します。 | Aurora DB クラスターに復元された最後のバックアップを作成する前に、前にメモしたバイナリログシーケンスを使用してください。ソースデータベースにレプリケーションユーザーを作成し、「追加情報」セクションの指示に従って適切な権限を付与し、Aurora でのレプリケーションを有効にし、レプリケーションが同期されていることを確認します。 | AWS DevOps/データベース管理者 | 

## 関連リソース
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-resources"></a>

**Amazon EFS ファイルシステムの作成**
+ 「[セキュリティグループの作成](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups)」(Amazon VPC ドキュメント)
+ 「[トランジットゲートウェイ VPN アタッチメント](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpn-attachments.html)」(Amazon VPC ドキュメント)
+ 「[AWS Transit Gateway を使用した VPN スループットのスケーリング](https://aws.amazon.com/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/)」(ネットワーキングとコンテンツ配信に関するブログ)
+ 「[Amazon EFS ファイルシステムの作成](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step1-efs)」(Amazon EFS ドキュメント)
+ 「[マウントターゲットの作成](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)」(Amazon EFS ドキュメント)
+ 「[保管中のデータの暗号化](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html)」(Amazon EFS のドキュメント)

ファイルシステムのマウント
+ [Amazon EC2 の IAM ロール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) (Amazon EC2 のドキュメント)
+ 「[Amazon EC2 Linux インスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance)」(Amazon EC2 ドキュメント)
+ 「[NFS クライアントのインストール](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step4-install-nfs)」 (Amazon EFS ドキュメント)
+ 「[オンプレミスクライアントに Amazon EFS ファイルシステムをマウントする](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step3-connect)」(Amazon EFS ドキュメント)
+ 「[EFS ファイルシステムのマウント](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html)」(Amazon EFS ドキュメント)

MySQL ソースデータベースのバックアップの作成
+ 「[Percona XtraBackup 2.3 のインストール](https://www.percona.com/doc/percona-xtrabackup/2.3/installation.html)」(Percona XtraBackup ドキュメント)
+ 「[Percona XtraBackup 2.4 のインストール](https://www.percona.com/doc/percona-xtrabackup/2.4/installation.html)」(Percona XtraBackup ドキュメント) 
+ 「[レプリケーションマスター構成の設定](https://dev.mysql.com/doc/refman/5.7/en/replication-howto-masterbaseconfig.html)」(MySQL ドキュメント)
+ 「[外部 MySQL データベースから Aurora MySQL DB クラスターへのデータ移行](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html)」(Aurora ドキュメント)
+ 「[インクリメンタルバックアップ](https://www.percona.com/doc/percona-xtrabackup/2.4/backup_scenarios/incremental_backup.html)」(Percona XtraBackup ドキュメンテーション)

Amazon Aurora MySQL へのバックアップの復元
+ 「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#create-bucket-intro)」(Amazon S3 ドキュメント)
+ 「[SSH を使用した Linux インスタンスへの接続](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)」(Amazon EFS ドキュメント)
+ 「[AWS CLI の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」(AWS CLI ドキュメント)
+ 「[同期コマンド](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)」(AWS CLI コマンドリファレンス)
+ 「[Amazon S3 リソースにアクセスするための IAM ポリシーの作成](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.html)」(Aurora ドキュメント)
+ 「[DB クラスターの前提条件](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html#Aurora.CreateInstance.Prerequisites)」 (Aurora ドキュメント)
+ 「[DB サブネットグループの使用](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Subnets)」(Aurora ドキュメント)
+ 「[プライベート DB インスタンスの VPC セキュリティグループの作成](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Tutorials.WebServerDB.CreateVPC.html#CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupDB)」(Aurora ドキュメント)
+ 「[S3 バケットからの Aurora MySQL DB クラスターの復元](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html#AuroraMySQL.Migrating.ExtMySQL.S3.Restore)」(Aurora ドキュメント)
+ 「[MySQL または別の Aurora DB クラスターとのレプリケーションの設定](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.MySQL.html#AuroraMySQL.Replication.MySQL.SettingUp)」(Aurora ドキュメント)
+ 「[mysql.rds\$1set\$1external\$1master プロシージャ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_set_external_master.html)」(Amazon RDS 上の MySQL SQL リファレンス)
+ 「[mysql.rds\$1start\$1replication プロシージャ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_start_replication.html)」(Amazon RDS 上の MySQL SQL リファレンス)

その他のリファレンス
+ 「[外部 MySQL データベースから Aurora MySQL DB クラスターへのデータ移行](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html)」(Aurora ドキュメント)
+ 「[MySQL サーバーのダウンロード](https://downloads.mysql.com/archives/community/)」(Oracle ウェブサイト)

**チュートリアルと動画**
+  「[Amazon S3 を使用して MySQL データを Aurora MySQL DB クラスターに移行](https://aws.amazon.com/premiumsupport/knowledge-center/migrate-mysql-aurora-innobackup/)」(AWS ナレッジセンター)
+  「[Amazon EFS のセットアップとマウント](https://www.youtube.com/watch?v=NR8rVsSn_dY)」(ビデオ)

## 追加情報
<a name="migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3-additional"></a>

NFS クライアントのインストール
+ Red Hat または類似の Linux オペレーティングシステムを使用している場合は、以下のコマンドを使用してください。 

```
$ sudo yum -y install nfs-utils
```
+ Ubuntu または類似の Linux オペレーティングシステムを使用している場合は、以下のコマンドを使用してください。 

```
$ sudo apt-get -y install nfs-common
```

詳細については、Amazon EFS ドキュメント」の「[チュートリアル](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step4-install-nfs)」を参照してください。

Amazon EFS ファイルシステムのマウント

次のコマンドを使用してください。

```
mkdir ~/<efs_mount_name>
$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/ ~/<efs_mount_name>
```

詳細については、Amazon EFS ドキュメントの「[チュートリアル](https://docs.aws.amazon.com/efs/latest/ug/efs-onpremises.html#wt5-step3-connect)」と「[EFS ファイルシステムのマウント](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html)」を参照してください。

MySQL ソースデータベースのバックアップの作成

フルバックアップ

次のようなコマンドを使用して、バックアップを取って圧縮し、それぞれ 1 GB の小さなチャンクに分割します。

```
xtrabackup --backup --user=dbuser --password=<password> --binlog-info=AUTO --stream=tar --target-dir=~/<efs_mount_name>/fullbackup | gzip - | split -d --bytes=1024MB - ~/<efs_mount_name>/fullbackup/backup.tar.gz &
```

完全バックアップの後にインクリメンタルバックアップを行う予定がある場合は、バックアップを圧縮したり分割したりしないでください。代わりに、以下のようなコマンドを使用します。

```
xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/fullbackup/
```

増分バックアップ

`--incremental-basedir` パラメータにはフルバックアップパスを使用してください。例:

```
xtrabackup --backup --user=dbuser --password=<password> --target-dir=~/<efs_mount_name>/incremental/backupdate --incremental-basedir=~/<efs_mount_name>/fullbackup
```

この際、*[basedir]* はフルバックアップと「xtrabackup\$1checkpoints」ファイルへのパスとして機能します。

バックアップの詳細については、Aurora ドキュメントの「[外部の MySQL データベースから Amazon Aurora MySQL DB クラスターへのデータ移行](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html)」を参照してください。

バックアップの準備

フルバックアップを準備するには:

```
xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup
```

増分バックアップを準備するには:

```
xtrabackup --prepare --apply-log-only --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06062020
```

最終バックアップを準備するには:

```
xtrabackup --prepare --target-dir=~/<efs_mount_name>/fullbackup --incremental-dir=~/<efs_mount_name>/incremental/06072020
```

詳細については、Percona XtraBackup ドキュメントの「[インクリメンタルバックアップ](https://www.percona.com/doc/percona-xtrabackup/2.4/backup_scenarios/incremental_backup.html)」を参照してください。

マージしたバックアップを圧縮して分割する

統合したバックアップを「 \$1/<efs\$1mount\$1name>/fullbackup」に圧縮するには:

```
tar -zcvf <backupfilename.tar.gz> ~/<efs_mount_name>/fullbackup
```

バックアップを分割するには:

```
split -d -b1024M --verbose  <backupfilename.tar.gz> <backupfilename.tar.gz>
```

バイナリログのレプリケーションをセットアップする

ソースデータベースにレプリケーションユーザーを作成し、適切な権限を付与するには:

```
CREATE USER 'repl_user'@'' IDENTIFIED BY ''; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'';
```

Aurora DB クラスターに接続して Aurora でのレプリケーションを有効にするには、DB クラスターパラメータグループのバイナリログを有効にします。設定 `binlog_format = mixed` (混合モードを推奨)。この変更では、更新を適用するためにインスタンスを再起動する必要があります。

```
CALL mysql.rds_set_external_master ('sourcedbinstanceIP', sourcedbport, 'repl_user', '', 'binlog_file_name', binlog_file_position, 0); CALL mysql.rds_start_replication;
```

レプリケーションが同期していることを確認するには:

```
SHOW Slave Status \G;
```

「**マスターに対する遅れ秒数**」フィールドには、オンプレミスデータベースから Aurora がどれだけ遅れているかが示されます。

# AWS App2Container を使用したオンプレミスの Java プリケーションの AWS への移行
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container"></a>

*Amazon Web Services、Dhananjay Karanjkar*

## 概要
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-summary"></a>

AWS App2Container (A2C) は、コードを変更することなく、仮想マシンで実行されている既存のアプリケーションをコンテナに変換するのに役立つコマンドラインツールです。A2Cは、サーバーで実行されているアプリケーションを発見し、依存関係を特定し、Amazon Elastic Container Service (Amazon ECS) および Amazon Elastic Kubernetes Service (Amazon EKS) にシームレスにデプロイするための関連アーティファクトを生成する。

このパターンは、アプリケーションサーバーにデプロイされたオンプレミスの Java アプリケーションを、ワーカーマシンから App2Container を使用して AWS Fargate または Amazon EKS にリモート移行する手順を示しています。 

ワーカーマシンは、以下のユースケースにご使用いただけます。
+ Java アプリケーションが実行されているアプリケーションサーバーでは Docker のインストールは許可されていないか、使用できません。
+ 異なる物理サーバーまたは仮想サーバーにデプロイされた複数のアプリケーションの移行を管理する必要があります。

このパターンでは、AWS CodeCommit、 AWS CodePipeline、 を使用します AWS CodeBuild。

## 前提条件と制限事項
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-prereqs"></a>

**前提条件**
+ Linux サーバー上で Java アプリケーションを実行しているアプリケーションサーバー
+ Linux オペレーティングシステムを搭載したワーカーマシン
+ 20 GB 以上の空きディスク容量があるワーカーマシン

**制限事項**
+ すべてのアプリケーションに対応しているわけではありません。詳細については、「[Linux でサポートされるアプリケーション](https://docs.aws.amazon.com/app2container/latest/UserGuide/supported-applications.html)」を参照してください。

## アーキテクチャ
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-architecture"></a>

**ソーステクノロジースタック**
+ Linux サーバー上で実行されている Java アプリケーション

**ターゲットテクノロジースタック**
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS CodeDeploy
+ AWS CodePipeline
+ Amazon Elastic Container Registry
+ AWS Fargate

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

![\[AWS でのオンプレミス Java アプリケーションのアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/61ed65a0-fab2-4fc8-8531-18bfd56a25b3/images/602cde7b-ab0c-46a5-8c37-afe304adf061.png)


 

## ツール
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-tools"></a>

**ツール**
+ 「[AWS App2Container](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html)」— AWS App2Container (A2C) は、オンプレミスのデータセンターや仮想マシン上で動作するアプリケーションを、Amazon ECS や Amazon EKS で管理されるコンテナ内で動作するようにリフトとシフトするためのコマンドラインツールです。
+ 「[AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)」— AWS CodeBuild はクラウドの完全マネージド型のビルドサービスです。CodeBuild はソースコードをコンパイルし、ユニットテストを実行して、すぐにデプロイできるアーティファクトを作成します。
+ 「[AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)」— AWS CodeCommit は、Amazon Web Services がホスティングするバージョン管理サービスで、アセット（ドキュメント、ソースコード、バイナリファイルなど）をクラウド上に非公開で保存と管理するために使用できます。
+ 「[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)」— AWS CodePipeline は、ソフトウェアのリリースに必要な手順のモデル化、可視化、および自動化に使用できる継続的な配信サービスです。
+ 「[Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)」— Amazon Elastic Container Service (Amazon ECS) は、クラスターでコンテナの実行、停止、管理に使用される、高度にスケーラブルで高速のコンテナ管理サービスです。
+ 「[Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)」— Amazon Elastic Container Registry (Amazon ECR) は、セキュリティ、スケーラビリティ、信頼性を備えた AWS マネージドコンテナイメージレジストリサービスです。
+ 「[Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)」— Amazon Elastic Kubernetes Service (Amazon EKS) は、独自の Kubernetes コントロールプレーンやノードをインストール、運用、保守することなく、AWS 上で Kubernetes を実行するために使用できるマネージドサービスです。
+ 「[AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html)」— AWS Fargate は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのサーバーやクラスタを管理することなくコンテナを実行するために、Amazon ECS で使用できる技術です。Fargateを使用すると、コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要がありません。

## エピック
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-epics"></a>

### 認証情報の設定
<a name="set-up-credentials"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションサーバーにアクセスするためのシークレットを作成します。 | ワーカーマシンからリモートでアプリケーションサーバーにアクセスするには、AWS Secrets Manager でシークレットを作成します。シークレットには、SSH プライベートキー、または証明書と SSH プライベートキーを使用できます。詳しくは「[Manage secrets for AWS App2Container](https://docs.aws.amazon.com/app2container/latest/UserGuide/manage-secrets.html)」をご確認ください。 | DevOps、開発者 | 

### ワーカーマシンのセットアップ
<a name="set-up-the-worker-machine"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| tar ファイルをインストールします。 | `sudo yum install -y tar` を実行します。 | DevOps、開発者 | 
| AWS CLI をインストールします。 | Amazon コマンドラインインターフェイス (CLI) をインストールするには、`curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"` を実行します。 `awscliv2.zip` を解凍します。`sudo ./aws/install` を実行します。 | DevOps、開発者 | 
| App2 コンテナをインストールします。 | 以下の コマンドを実行します。`curl -o AWSApp2Container-installer-linux.tar.gz https://app2container-release-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz``sudo tar xvf AWSApp2Container-installer-linux.tar.gz``sudo ./install.sh` | DevOps、開発者 | 
| プロファイルを設定します。 | AWS のデフォルトプロファイルを設定するには、`sudo aws configure` を実行します。名前付きの AWS デフォルトプロファイルを設定するには、`sudo aws configure --profile <profile name>` を実行します。 | DevOps、開発者 | 
| Docker をインストールします。 | 以下のコマンドを実行します。`sudo yum install -y docker``sudo systemctl enable docker & sudo systemctl restart docker` |  | 
| App2 コンテナを初期化します。 | App2Container を初期化するには、次の情報が必要です。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)`sudo app2container init` を実行します。 | DevOps、開発者 | 

### ワーカーマシンの設定
<a name="configure-the-worker-machine"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションサーバーに App2Container コマンドをリモート接続して実行するようにワーカーマシンを設定します。 | ワーカーマシンを設定するには、以下の情報が必要です。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)`sudo app2container remote configure` を実行します。 | DevOps、開発者 | 

### ワーカーマシン上のアプリケーションの検出、分析、抽出
<a name="discover-analyze-and-extract-applications-on-the-worker-machine"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| オンプレミスの Java アプリケーションをご覧ください。 | アプリケーションサーバーで実行されているすべてのアプリケーションをリモートで検出するには、次のコマンドを実行します。`sudo app2container remote inventory --target <FQDN/IP of App server>`このコマンドは、`inventory.json` にデプロイされたアプリケーションのリストを生成します。 | 開発者、DevOps | 
| 検出されたアプリケーションを分析します。 | インベントリ段階で取得した application-id を使用して各アプリケーションをリモート分析するには、以下のコマンドを実行します。`sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>`これにより、ワークスペースの場所に `analysis.json` ファイルが生成されます。このファイルが生成されたら、必要に応じてコンテナ化パラメータを変更できます。 | 開発者、DevOps | 
| 分析したアプリケーションを抽出します。 | 分析したアプリケーションのアプリケーションアーカイブを生成するには、次のコマンドをリモートで実行します。これにより、ワークスペースの場所に tar バンドルを生成します。`sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>`抽出されたアーティファクトはローカルワーカーマシン上で生成できます。 | 開発者、DevOps | 

### 抽出したアーティファクトをワーカーマシンにコンテナ化します。
<a name="containerize-the-extracted-artifacts-on-the-worker-machine"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 抽出したアーティファクトをコンテナ化する。 | 次のコマンドを実行して、前のステップで抽出したアーティファクトをコンテナ化します。`sudo app2container containerize --input-archive <tar bundle location on worker machine>` | 開発者、DevOps | 
| ターゲットを確定する。 | ターゲットを確定するには、`containerize` コマンドの実行時に作成される `deployment.json` を開きます。AWS Fargate をターゲットとして指定するには、`createEcsArtifacts` を `true` に設定します。Amazon EKS をターゲットとして設定するには、`createEksArtifacts` を true に設定します。 | 開発者、DevOps | 

### AWS Artifact の生成とプロビジョニング
<a name="generate-and-provision-aws-artifacts"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ワーカーマシンに AWS デプロイアーティファクトを生成します。 | デプロイメントアーティファクトを生成するには、以下のコマンドを実行します。`sudo app2container generate app-deployment --application-id <application id>`これにより、ワークスペースに `ecs-master.yml` AWS CloudFormation テンプレートが生成されます。 | DevOps | 
| アーティファクトをプロビジョニングします。 | 生成されたアーティファクトをさらにプロビジョニングするには、次のコマンドを実行して AWS CloudFormation テンプレートをデプロイします。`aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS` | DevOps | 
| パイプラインを生成する。 | 前のストーリーで作成した `pipeline.json` を、必要に応じて変更します。次に、`generate pipeline` コマンドを実行してパイプラインデプロイアーティファクトを生成します。 | DevOps | 

## 関連リソース
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-resources"></a>
+ 「[App2Container とは?](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html)」
+ 「[AWS App2Container に関するブログ投稿](https://aws.amazon.com/blogs/aws/aws-app2container-a-new-containerizing-tool-for-java-and-asp-net-applications/)」
+ 「[AWS CLI 設定の基本](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)」
+ 「[Amazon ECS 用 Docker の基本](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)」
+ 「[Docker コマンド](https://docs.docker.com/engine/reference/commandline/cli/)」

# AWS 大規模な移行で共有ファイルシステムを移行する
<a name="migrate-shared-file-systems-in-an-aws-large-migration"></a>

*Amazon Web Services、Amit Rudraraju、Sam Apa、Bheemeswararao Balla、Wally Lu、Sanjeev Prakasam*

## 概要
<a name="migrate-shared-file-systems-in-an-aws-large-migration-summary"></a>

300 台以上のサーバを移行することは「*大規模な移行*」と見なされます。大規模な移行の目的は、既存のオンプレミスデータセンターから にワークロードを移行することです。これらのプロジェクトは通常 AWS クラウド、アプリケーションとデータベースのワークロードに焦点を当てています。ただし、共有ファイルシステムには細心の注意と個別の移行計画が必要です。このパターンは、共有ファイルシステムの移行プロセスを説明し、大規模な移行プロジェクトの一環としてそれらを正常に移行するためのベストプラクティスを提供します。

「*共有ファイルシステム*」(SFS) は、「*ネットワーク*」または「*クラスター*」ファイルシステムとも呼ばれ、複数のサーバーにマウントされるファイル共有です。共有ファイルシステムには、ネットワークファイルシステム (NFS)、共通インターネットファイルシステム (CIFS)、サーバーメッセージブロック (SMB) などのプロトコルでアクセスします。

これらのシステムは、移行されるホスト専用でもブロックデバイスとして表されていない AWS Application Migration Service ため、 などの標準移行ツールでは移行されません。ほとんどのホストの依存関係は透過的に移行されますが、依存ファイルシステムの調整と管理は個別に処理する必要があります。

共有ファイルシステムの移行は、検出、計画、準備、切り取り、検証というフェーズで行います。このパターンとアタッチされたワークブックを使用して、共有ファイルシステムを Amazon Elastic File System (Amazon EFS)、Amazon FSx for NetApp ONTAP、Amazon FSx for Windows File Server などの AWS ストレージサービスに移行します。ファイルシステムを転送するには、 AWS DataSync または NetApp SnapMirror などのサードパーティー製ツールを使用できます。

**注記**  
このパターンは、 への大規模な移行に関する AWS 規範ガイダンスシリーズの一部です。 [AWS クラウド](https://aws.amazon.com/prescriptive-guidance/large-migrations/)このパターンには、SFS をサーバーのウェーブプランに組み込むためのベストプラクティスと手順が含まれています。大規模な移行プロジェクトの外部で 1 つ以上の共有ファイルシステムを移行する場合は、[Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/trnsfr-data-using-datasync.html)、Amazon [FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/migrate-to-fsx.html)、[Amazon FSx for NetApp ONTAP ](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/migrating-fsx-ontap.html)の AWS ドキュメントのデータ転送手順を参照してください。

## 前提条件と制限
<a name="migrate-shared-file-systems-in-an-aws-large-migration-prereqs"></a>

**前提条件**

前提条件は、ソースとターゲットの共有ファイルシステム、およびユースケースによって異なる場合があります。次は、最も一般的な問題を示しています。
+ アクティブ AWS アカウント。
+ 大規模な移行プロジェクトのアプリケーションポートフォリオの発見が完了し、ウェーブプランの作成が開始されました。詳細については、[AWS 「大規模な移行用のポートフォリオプレイブック](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-portfolio-playbook/welcome.html)」を参照してください。
+ オンプレミスデータセンターと AWS 環境間の入出力トラフィックを許可する仮想プライベートクラウド (VPCs) とセキュリティグループ。詳細については、[「Network-to Amazon VPC connectivity options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) and [AWS DataSync network requirements](https://docs.aws.amazon.com/datasync/latest/userguide/datasync-network.html)」を参照してください。
+  AWS CloudFormation スタックを作成するアクセス許可、または Amazon EFS または Amazon FSx リソースを作成するアクセス許可。詳細については、「[CloudFormation ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)」、「[Amazon EFS ドキュメント](https://docs.aws.amazon.com/efs/latest/ug/security-iam.html)」、または「[Amazon FSx ドキュメント](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/security-iam.html)」を参照してください。
+  AWS DataSync を使用して移行を実行する場合は、次のアクセス許可が必要です。
  + Amazon CloudWatch Logs ロググループにログを送信する AWS DataSync のアクセス許可。詳細については、「[DataSync がログを CloudWatch ロググループにアップロードすることを許可する](https://docs.aws.amazon.com/datasync/latest/userguide/monitor-datasync.html#cloudwatchlogs)」を参照してください。
  + CloudWatch Logs ロググループにアクセスするアクセス許可。詳細については、「[CloudWatch イベントリソースへのアクセス許可の管理の概要](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html)」を参照してください。
  + DataSync でエージェントとタスクを作成するための権限。詳細については、[「 を使用するために必要な IAM アクセス許可 AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/permissions-requirements.html)」を参照してください。

**制限事項**
+ このパターンは、大規模な移行プロジェクトの一環として SFS を移行するように設計されています。アプリケーション移行のウェーブプランに SFS を組み込む際のベストプラクティスと手順が記載されています。大規模な移行プロジェクトの外部で 1 つ以上の共有ファイルシステムを移行する場合は、[Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/trnsfr-data-using-datasync.html)、Amazon [FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/migrate-to-fsx.html)、[Amazon FSx for NetApp ONTAP ](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/migrating-fsx-ontap.html)の AWS ドキュメントのデータ転送手順を参照してください。
+ このパターンは、一般的に使用されているアーキテクチャ、サービス、移行パターンに基づいています。ただし、大規模な移行プロジェクトや戦略は組織によって異なる場合があります。要件に基づいて、このソリューションまたは提供されているワークブックをカスタマイズする必要がある場合があります。

## アーキテクチャ
<a name="migrate-shared-file-systems-in-an-aws-large-migration-architecture"></a>

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

 次の 1 つ以上。
+ Linux (NFS) ファイルサーバー
+ Windows (SMB) ファイルサーバー
+ NetApp ストレージアレイ
+ Dell EMC Isilon ストレージアレイ

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

 次の 1 つ以上。
+ Amazon Elastic File System
+ Amazon FSx for NetApp ONTAP
+ Amazon FSx for Windows File Server

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

![\[AWS DataSync を使用してオンプレミスの共有ファイルシステムを AWS に移行するアーキテクチャ図\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/a30cf791-7a8a-4f71-8927-bc61f3b332f2/images/13232433-7d33-44c8-8998-b720f33f67b3.png)


図表に示す内容は以下のステップです。

1. オンプレミスデータセンターと 間の接続を確立するには、 AWS Direct Connect や AWS のサービス などの AWS クラウド を使用します AWS Site-to-Site VPN。

1. DataSync エージェントは、オンプレミスデータセンターでインストールします。

1. ウェーブプランに従って、DataSync を使用してソース共有ファイルシステムからターゲット AWS ファイル共有にデータをレプリケートします。

**移行フェーズ**

次の図は、大規模な移行プロジェクトで SFS を移行するためのフェーズと大まかな手順を示しています。

![\[共有ファイルシステムを AWS へ移行する際の各フェーズに対して検出、計画、準備、カットオーバー、検証を行います。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/a30cf791-7a8a-4f71-8927-bc61f3b332f2/images/f1e0c94d-0eea-46a8-bdec-3297b34c1d43.png)


このパターンの「[エピック](#migrate-shared-file-systems-in-an-aws-large-migration-epics)」セクションには、移行を完了して添付のワークブックを使用する方法の詳細な説明が記載されています。次に、この段階的アプローチの手順を示します。


| 
| 
| [Phase] (フェーズ) | Steps | 
| --- |--- |
| 検出 | 1. 検出ツールを使用して、サーバー、マウントポイント、IP アドレスなど、共有ファイルシステムに関するデータを収集します。2. 構成管理データベース (CMDB) または移行ツールを使用して、移行ウェーブ、環境、アプリケーション所有者、IT サービス管理 (ITSM) サービス名、組織単位、アプリケーション ID などのサーバーに関する詳細を収集します。 | 
| プラン | 3. 収集した SFS とサーバーに関する情報を使用して SFS ウェーブプランを作成します。4. ビルドワークシートの情報を使用して、SFS ごとにターゲット AWS のサービス と移行ツールを選択します。 | 
| 準備 | 5. Amazon EFS、Amazon FSx for NetApp ONTAP、Amazon FSx for Windows ファイルサーバー、Amazon FSx for Windows File Server でターゲットインフラストラクチャを設定します。6. DataSync などのデータ転送サービスを設定し、初期データ同期を開始します。初回の同期が完了したら、定期的な同期をスケジュールに従って実行するように設定できます。7. SFS ウェーブプランを IP アドレスやパスなどのターゲットファイル共有に関する情報で更新します。 | 
| カットオーバー | 8. ソース SFS にアクティブにアクセスしているアプリケーションを停止します。9. データ転送サービスで、最終的なデータ同期を行います。10. 同期が完了したら、CloudWatch Logs のログデータを確認して、同期が完全に正常に行われたことを確認します。 | 
| 検証 | 11. サーバーで、マウントポイントを新しい SFS パスに変更します。12. アプリケーションを再起動して検証します。 | 

## ツール
<a name="migrate-shared-file-systems-in-an-aws-large-migration-tools"></a>

**AWS のサービス**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) を使用すると、すべてのシステム、アプリケーション、および からのログを一元化 AWS のサービス できるため、ログをモニタリングして安全にアーカイブできます。
+ [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html) は、 AWS ストレージサービスとの間でファイルまたはオブジェクトデータを移動するのに役立つオンラインデータ転送および検出サービスです。
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) は、 AWS クラウドでの共有ファイルシステムの作成と設定に役立ちます。
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) は、業界標準の接続プロトコルをサポートし、 AWS リージョン全体で高い可用性とレプリケーションを提供するファイルシステムを提供します。

**その他のツール**
+ 「[SnapMirror](https://library.netapp.com/ecmdocs/ECMP1196991/html/GUID-BA1081BE-B2BB-4C6E-8A82-FB0F87AC514E.html)」は、指定されたソースボリュームまたは qtree からターゲットボリュームまたは「[qtree](https://library.netapp.com/ecmdocs/ECMP1154894/html/GUID-8F084F85-2AB8-4622-B4F3-2D9E68559292.html)」にそれぞれデータを複製するネットアップのデータ複製ツールです。このツールを使用して、NetApp ソースファイルシステムを Amazon FSx for NetApp ONTAP に移行できます。
+ 「[Robocopy](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy)」は、「*堅牢なファイルコピー*」の略で、Windows 用のコマンドラインディレクトリおよびコマンドです。このツールでは、Amazon FSx for Windows File Server に移行できます。

## ベストプラクティス
<a name="migrate-shared-file-systems-in-an-aws-large-migration-best-practices"></a>

**ウェーブプランニングアプローチ**

大規模な移行プロジェクトのウェーブを計画するときは、レイテンシーとアプリケーションパフォーマンスを考慮してください。SFS と依存アプリケーションがクラウドとオンプレミスのデータセンターなど、異なる場所で動作している場合、レイテンシーが増加し、アプリケーションのパフォーマンスに影響する可能性があります。ウェーブプランを作成する際に使用できるオプションは以下のとおりです。

1. **SFS とすべての依存サーバーを同じウェーブ内で移行** — この方法では、パフォーマンスの問題が回避され、マウントポイントを複数回再構成するなどのやり直しが最小限に抑えられます。アプリケーションと SFS 間のレイテンシーを非常に低く抑える必要がある場合に推奨されます。ただし、ウェーブプランニングは複雑で、その目的は通常、依存関係のグループから変数を削除することであり、追加することではありません。また、この方法は多数のサーバーが同じ SFS にアクセスする場合にはお勧めできません。ウェーブが大きくなりすぎるためです。

1. **最後に依存するサーバーを移行した後で SFS を移行** — 例えば、複数のサーバーが SFS にアクセスしていて、それらのサーバーが第 4 波、第 6 波、第 7 波に移行する予定の場合は、SFS を第 7 段階に移行するようにスケジュールします。

   多くの場合、この方法は大規模な移行には最も論理的であり、遅延の影響を受けやすいアプリケーションには推奨されます。これにより、データ転送に関連するコストが削減されます。また、高層アプリケーションは通常、開発アプリケーションと QA アプリケーションの後に最後に移行するようにスケジュールされているため、SFS と上位層 (本番環境など) アプリケーション間の遅延時間も最小限に抑えられます。

   ただし、このアプローチにはやはり検出、計画、俊敏性が必要です。早い段階で SFS を移行する必要があったかもしれません。最初の依存ウェーブから SFS を含むウェーブまでの間、アプリケーションが追加のレイテンシーに耐えられることを確認します。アプリ所有者とディスカバリーセッションを実施し、レイテンシーの影響を最も受けやすいアプリケーションと同じウェーブにアプリケーションを移行します。依存アプリケーションの移行後にパフォーマンスの問題が発見された場合は、SFS をできるだけ早く移行できるよう迅速に方向転換する準備をしてください。

1. **大規模な移行プロジェクトの終了時に SFS を移行** — SFS 内のデータへのアクセス頻度が低い場合や、アプリケーションのパフォーマンスにとって重要ではない場合など、遅延が要因ではない場合は、この方法が推奨されます。このアプローチにより、移行が効率化され、カットオーバー作業が簡単になります。

アプリケーションのレイテンシー感度に基づいて、これらの方法を組み合わせることができます。例えば、アプローチ 1 または 2 を使用してレイテンシーの影響を受けやすい SFS を移行し、方法 3 を使用して残りの SFS を移行できます。

** AWS ファイルシステムサービスの選択**

AWS では、ファイルストレージ用に複数のクラウドサービスを提供しています。パフォーマンス、スケール、アクセシビリティ、統合、コンプライアンス、コスト最適化について、それぞれに異なる利点と制限があります。論理的なデフォルトオプションがいくつかあります。例えば、現在のオンプレミスファイルシステムが Windows Server を運用している場合、Amazon FSx for Windows File Server がデフォルトの選択肢です。または、オンプレミスのファイルシステムがNetApp ONTAPを実行している場合は、Amazon FSx for NetApp ONTAPがデフォルトの選択肢です。ただし、アプリケーションの要件に基づいてターゲットサービスを選択したり、クラウド運用上のその他のメリットを実現したりすることもできます。詳細については、[「デプロイに適した AWS ファイルストレージサービスの選択](https://d1.awsstatic.com/events/Summits/awsnycsummit/Choosing_the_right_AWS_file_storage_service_for_your_deployment_STG302.pdf)」(AWS Summit presentation) を参照してください。

**移行ツールの選択**

Amazon EFS と Amazon FSx は、共有ファイルシステムを に移行 AWS DataSync するための の使用をサポートしています AWS クラウド。サポートされているストレージシステムとサービス、利点、ユースケースの詳細については、[「 とは AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)」を参照してください。DataSync を使用してファイルを転送するプロセスの概要については、[AWS DataSync 「転送の仕組み](https://docs.aws.amazon.com/datasync/latest/userguide/how-datasync-transfer-works.html)」を参照してください。

また、次のようなサードパーティー製ツールもいくつかあります。
+ Amazon FSx for NetApp ONTAPを選択した場合は、NetApp SnapMirror を使用してオンプレミスのデータセンターからクラウドにファイルを移行できます。SnapMirror はブロックレベルのレプリケーションを使用します。これは DataSync よりも高速で、データ転送プロセスの所要時間を短縮できます。詳細については、「[NetApp SnapMirror を使用した FSx for ONTAP への移行](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/migrating-fsx-ontap-snapmirror.html)」を参照してください。
+ Amazon FSx for Windows File Server を選択すると、Robocopy を使用してファイルをクラウドに移行できます。詳細は、「[RRobocopy を使用して既存のファイルを FSx for Windows File Server へ移行する](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/migrate-files-to-fsx.html)」を参照してください。

## エピック
<a name="migrate-shared-file-systems-in-an-aws-large-migration-epics"></a>

### 検出
<a name="discover"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SFS ディスカバリーワークブックを準備する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リーダー | 
| ソース SFS に関する情報を収集します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リーダー | 
| サーバーに関する情報を収集します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リーダー | 

### プラン
<a name="plan"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SFS ウェーブプランを構築してください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | ビルドリード、カットオーバーリード、マイグレーションエンジニア、マイグレーションリード | 
| ターゲット AWS のサービス と移行ツールを選択します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リーダー | 

### 準備
<a name="prepare"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ターゲットファイルシステムを設定します。 | ウェーブプランに記録された詳細に従って、ターゲット、VPC AWS アカウント、サブネットにターゲットファイルシステムを設定します。手順については、次の AWS ドキュメントを参照してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リーダー、AWS 管理者 | 
| 移行ツールをセットアップし、データを転送します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | AWS 管理者、クラウド管理者、移行エンジニア、移行リーダー | 
| ウェーブプランを更新してください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リーダー | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションの停止 | アプリケーションまたはクライアントがソース SFS で読み取り/書き込み操作をアクティブに行っている場合は、最終的なデータ同期を実行する前にそれらを停止してください。手順については、アプリケーションのマニュアルを参照するか、読み取り/書き込みアクティビティを停止するための内部プロセスを参照してください。例えば、「[Web サーバーの起動または停止 (IIS 8)](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj635851(v=ws.11)) (Microsoft ドキュメント)」または「[systemctl によるシステムサービスの管理](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/managing-systemd_configuring-basic-system-settings#managing-system-services-with-systemctl_managing-systemd)」(Red Hat ドキュメント) を参照してください。 | アプリ所有者、アプリ開発者 | 
| 最後のデータ転送を行います。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | 移行エンジニア、移行リード | 
| データ転送を検証します。 | を使用している場合は AWS DataSync、次の手順を実行して、最終データ転送が正常に完了したことを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html)サードパーティーツールを使用している場合は、選択した移行ツールのドキュメントにあるデータ転送検証手順を参照してください。 | 移行エンジニア、移行リーダー | 

### 検証
<a name="validate"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ファイルシステムを再マウントし、アプリケーションの機能とパフォーマンスを検証します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-shared-file-systems-in-an-aws-large-migration.html) | AWS システム管理者、アプリ所有者 | 

## トラブルシューティング
<a name="migrate-shared-file-systems-in-an-aws-large-migration-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Microsoft Excel のセルの値は更新されません。 | フィルハンドルをドラッグして、サンプル行の数式をコピーします。詳細については、「[Windows](https://support.microsoft.com/en-us/office/fill-a-formula-down-into-adjacent-cells-041edfe2-05bc-40e6-b933-ef48c3f308c6)」または「[Mac](https://support.microsoft.com/en-au/office/copy-a-formula-by-dragging-the-fill-handle-in-excel-for-mac-dd928259-622b-473f-9a33-83aa1a63e218)」の説明書 (Microsoft Support Web サイト) を参照してください。 | 

## 関連リソース
<a name="migrate-shared-file-systems-in-an-aws-large-migration-resources"></a>

**AWS ドキュメント**
+ [AWS DataSync ドキュメント](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)
+ [Amazon EFS ドキュメント](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)
+ [Amazon FSx ドキュメンテーション](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/index.html)
+ [への大規模な移行 AWS クラウド](https://aws.amazon.com/prescriptive-guidance/large-migrations/)
  + [AWS 大規模な移行のガイド](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-guide/welcome.html)
  + [AWS 大規模な移行のためのポートフォリオプレイブック](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-portfolio-playbook/welcome.html)

**トラブルシューティング**
+ [AWS DataSync 問題のトラブルシューティング](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync.html)
+ [Amazon EFS のトラブルシューティング](https://docs.aws.amazon.com/efs/latest/ug/troubleshooting.html)
+ [Amazon FSx for Windows File Server のトラブルシューティング](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/troubleshooting.html)
+ [Amazon FSx for NetApp ONTAP のトラブルシューティング](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/troubleshooting.html)

## アタッチメント
<a name="attachments-a30cf791-7a8a-4f71-8927-bc61f3b332f2"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/a30cf791-7a8a-4f71-8927-bc61f3b332f2/attachments/attachment.zip)」

# Oracle GoldenGate フラットファイルアダプタを使用して Oracle データベースを Amazon RDS for Oracle に移行する
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters"></a>

*Amazon Web Services、Dhairya Jindani および Baji Shaik*

## 概要
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-summary"></a>

Oracle GoldenGate は、異種データベースおよび IT 環境向けのリアルタイムのデータキャプチャおよびレプリケーションサービスです。ただし、このサービスは現在、Oracle 用 Amazon Relational Database Service (Amazon RDS) をサポートしていません。サポートされているデータベースのリストについては、[異種データベース用 Oracle GoldenGate](https://docs.oracle.com/goldengate/c1230/gg-winux/GGHDB/12.3-what-is-oracle-goldengate-heterogeneous-databases.htm#GGHDB-GUID-08EAC588-F76C-4E37-BEBA-0DC57B98CA46) (Oracle ドキュメント) を参照してください。このパターンでは、Oracle GoldenGate および Oracle GoldenGate フラットファイルアダプタを使用して、ソース Oracle データベースからフラットファイルを生成する方法について説明します。このデータベースは、オンプレミスでも Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでもかまいません。その後、それらのフラットファイルを、Amazon RDS for Oracle データベースインスタンスにインポートできます。

このパターンでは、Oracle GoldenGate を使用してソース Oracle データベースからトレイルファイルを抽出します。データポンプはトレイルファイルを統合サーバーである Amazon EC2 インスタンスにコピーします。統合サーバーでは、Oracle GoldenGate はフラットファイルアダプタを使用して、トレイルファイルのトランザクションデータキャプチャに基づいて一連の連続フラットファイルを生成します。Oracle GoldenGate は、データを区切り文字で区切られた値または長さで区切られた値としてフォーマットします。次に Oracle SQL\$1Loader を使用して、フラットファイルをターゲット Amazon RDS for Oracle データベースインスタンスにインポートします。

**対象者**

このパターンは、Oracle GoldenGate の基本的な構成要素に関する経験と知識があるユーザーを対象としています。詳細については、「[Overview of the Oracle GoldenGate Architecture](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD115)」(Oracle ドキュメント) を参照してください。

## 前提条件と制限
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-prereqs"></a>

**前提条件**
+ アクティブ AWS アカウント。
+ Oracle GoldenGate ライセンス。
+ Oracle GoldenGate アダプタの個別のライセンス。
+ オンプレミスまたは Amazon EC2 インスタンスで実行されているソース Oracle データベース。
+ 統合サーバーとして使用される Amazon EC2 Linux インスタンス。詳細については、「[チュートリアル: Amazon EC2 Linux インスタンスの開始方法](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)」(Amazon EC2 ドキュメント) を参照してください。
+ ターゲットの Amazon RDS for Oracle DB インスタンスを停止します。詳細については、「[Oracle DB インスタンスを作成して接続する](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Oracle.html)」(Amazon RDS ドキュメント) を参照してください。

**製品バージョン**
+ Oracle データベースエンタープライズエディションバージョン 10g、11g、12c、またはそれ以降
+ Oracle GoldenGate バージョン 12.2.0.1.1 以降

## アーキテクチャ
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-architecture"></a>

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

Oracle データベース (オンプレミスまたは Amazon EC2 インスタンス)

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

Amazon RDS for Oracle

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

![\[Oracle GoldenGate アダプタを使用して Oracle データベースを Amazon RDS for Oracle に移行します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/f34961f7-aa9a-41cb-b1ea-522e36ef2f67/images/21ef5177-e669-4591-aced-28d2f22decf2.png)


1. Oracle GoldenGate は、ソースデータベースのログからトレイルを抽出します。

1. データポンプは証跡を抽出し、統合サーバーに移行します。

1. Oracle GoldenGate フラットファイルアダプタは、証跡、ソース定義、および抽出パラメータを読み取ります。

1. 抽出を終了すると、制御ファイルとフラットデータファイルが生成されます。

1. フラットデータファイルを AWS クラウドの Amazon RDS for Oracle データベースインスタンスに移行します。

## ツール
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-tools"></a>

**AWS のサービス**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ Oracle 向け [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、 AWS クラウドで Oracle リレーショナルデータベースをセットアップ、運用、スケールできます。

**その他のサービス**
+ [Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD110) は、あるデータベースから別の異種データベースまたはフラットファイルなどの別のターゲットトポロジへのデータの複製、フィルタリング、変換を支援するサービスです。
+ [Oracle GoldenGate アプリケーションアダプタ](https://docs.oracle.com/goldengate/gg121211/gg-adapter/GADAD/flatfile_config.htm#GADAD424)を使用すると、Oracle GoldenGate はソースデータベースのトレイルファイルにキャプチャされたトランザクションデータから一連のシーケンシャルフラットファイルと制御ファイルを作成できます。これらのアダプタは、データウェアハウスアプリケーションや、独自仕様またはレガシーアプリケーションの抽出、変換、ロード (ETL) 操作に広く使用されています。Oracle GoldenGate はこのキャプチャを実行し、異種データベース、プラットフォーム、オペレーティングシステムにほぼリアルタイムで適用します。アダプタは、CSV や Apache Parquet など、さまざまな形式の出力ファイルをサポートします。生成されたこれらのファイルを読み込んで、データをさまざまな異種データベースにロードできます。

## エピック
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-epics"></a>

### ソースデータベースサーバーに Oracle GoldenGate をセットアップします。
<a name="set-up-oracle-goldengate-on-the-source-database-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle GoldenGate をダウンロードします。 | ソースデータベースサーバーで、Oracle GoldenGate バージョン 12.2.0.1.1 以降をダウンロードします。手順については、「[Downloading Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA164)」(Oracle ドキュメント) を参照してください。 | DBA | 
| Oracle GoldenGate をインストールします。 | 手順については、「[Installing Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA162)」(Oracle ドキュメント) を参照してください。 | DBA | 
| Oracle GoldenGate のセットアップ | 手順については、「[Preparing the Database for Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/setup.htm#GIORA357)」(Oracle ドキュメント) を参照してください。 | DBA | 

### インテグレーションサーバーに Oracle GoldenGate をセットアップします。
<a name="set-up-oracle-goldengate-on-the-integration-server"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle GoldenGate をダウンロードします。 | インテグレーションサーバーで、Oracle GoldenGate バージョン 12.2.0.1.1 以降をダウンロードします。手順については、「[Downloading Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA164)」(Oracle ドキュメント) を参照してください。 | DBA | 
| Oracle GoldenGate をインストールします。 | 異種環境用のディレクトリの作成、マネージャプロセスの設定、`defgen` ファイルの作成を行います。手順については、「[Installing Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA162)」(Oracle ドキュメント) を参照してください。 | DBA | 

### Oracle GoldenGate データキャプチャ設定を変更します。
<a name="change-the-oracle-goldengate-data-capture-configuration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Oracle GoldenGate アダプタを準備します。 | インテグレーションサーバーで、Oracle GoldenGate アダプタソフトウェアを設定します。次のコマンドを実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.html) | DBA | 
| データポンプを設定します。 | ソースサーバーで、トレイルファイルをソースサーバーから統合サーバーに転送するようにデータポンプを設定します。データポンプパラメータファイルとトレイルファイルディレクトリを作成します。手順については、「[Configuring the Flat File Adapter](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-DF13488D-E0E9-497C-8AFF-70B839DE4843.htm#GADAD424)」(Oracle ドキュメント) を参照してください。 | DBA | 

### フラットファイルの生成と移行
<a name="generate-and-migrate-the-flat-files"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| フラットファイルを生成します。 | 抽出ファイルと制御ファイルを作成し、統合サーバーで抽出プロセスを開始します。これにより、データベースの変更が抽出され、ソースデータベースがフラットファイルに書き込まれます。手順については、「[Using the Flat File Adapter](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-D30CC70D-B90F-4209-BEB5-9BA53EA869EF.htm#GADAD432)」(Oracle ドキュメント) を参照してください。 | DBA | 
| フラットファイルを、ターゲットデータベースにロードします。 | フラットファイルを、ターゲットの Amazon RDS for Oracle データベースインスタンスにロードします。詳細については、「[Oracle SQL\$1Loader を使用したインポート](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.SQLLoader.html)」(Amazon RDS ドキュメント) を参照してください。 | DBA | 

## トラブルシューティング
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Oracle GoldenGate フラットファイルアダプタがエラーを生成します。 | アダプタエラーの説明については、「[エラーメッセージの検索](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-D30CC70D-B90F-4209-BEB5-9BA53EA869EF.htm#GADAD437)」(Oracle ドキュメント) を参照してください。トラブルシューティングの手順については、「[Troubleshooting the Flat File Adapter](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-CB3D9B2C-49CC-408A-8C00-06E0C7923DD6.htm#GADAD552)」(Oracle ドキュメント) を参照してください。 | 

## 関連リソース
<a name="migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters-resources"></a>
+ [Installing Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/install.htm#GIORA162) (Oracle ドキュメント)
+ [Configuring Oracle GoldenGate](https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/setup.htm#GIORA357) (Oracle ドキュメント)
+ [Understanding Oracle GoldenGate Adapters](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-F9105B02-9836-4F98-99F8-6E9C46D42764.htm#GADAD101) (Oracle ドキュメント)
+ [Configuring the Flat File Adapter](https://docs.oracle.com/goldengate/gg12201/gg-adapter/GADAD/GUID-DF13488D-E0E9-497C-8AFF-70B839DE4843.htm#GADAD424) (Oracle ドキュメント)

# Microsoft SQL Server から Amazon Aurora PostgreSQL 互換エディションへのデータベース移行をサポートするように Python と Perl アプリケーションを変更する
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition"></a>

*Amazon Web Services、Dwarika Patra、Deepesh Jayaprakash*

## 概要
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-summary"></a>

このパターンでは、Microsoft SQL Server から Amazon Aurora PostgreSQL 互換エディションにデータベースを移行する際に、場合によっては必要になるアプリケーションリポジトリに変更します。このパターンでは、これらのアプリケーションが Python または Perl ベースであることを前提としており、これらのスクリプト言語には個別の指示が記載されています。

SQL Server データベースから Aurora PostgreSQL 互換に移行するには、スキーマ変換、データベースオブジェクト変換、データ移行、およびデータ読み込みが必要です。　 PostgreSQL と SQL Server には (データ型、接続オブジェクト、構文、ロジックに関する) 違いがあるため、PostgreSQL で正しく動作するようにコードベースに必要な変更を追加するのが最も難しい移行作業です。

Python ベースのアプリケーションでは、接続オブジェクトとクラスはシステム全体に分散されています。また、Python コードベースは複数のライブラリを使用してデータベースに接続している場合があります。データベース接続インターフェースが変更された場合、アプリケーションのインラインクエリを実行するオブジェクトも変更する必要があります。

Perl ベースのアプリケーションの場合、変更には接続オブジェクト、データベース接続ドライバー、静的および動的なインライン SQL ステートメント、およびアプリケーションが複雑な動的 DML クエリと結果をセットで処理する方法が含まれます。

アプリケーションを移行する際には、FTP サーバーを Amazon Simple Storage Service (Amazon S3) アクセスに置き換えるなど、AWS で可能な機能強化を検討することもできます。

アプリケーションの移行プロセスには、以下の問題があります。
+ 接続オブジェクト。接続オブジェクトが複数のライブラリや、関数呼び出しを含むコードに分散している場合、PostgreSQL をサポートするようにオブジェクトを変更する共通の方法を見つける必要があるかもしれません。
+ レコードの取得または更新中のエラーや例外の処理。変数、結果セット、またはデータフレームを返す条件付きの作成、読み取り、更新、削除 (CRUD) 操作をデータベースで実行すると、エラーや例外によってアプリケーションエラーが発生し、連鎖的な影響が発生する可能性があります。これらの処理は、適切な検証を行いながら、ポイントを保存して慎重に処理する必要があります。このようなセーブポイントの 1 つとして、`BEGIN...EXCEPTION...END` ブロック内で大規模なインライン SQL クエリやデータベースオブジェクトを呼び出すことがあります。
+ トランザクションの制御と検証。手動および自動のコミットとロールバックが含まれます。Perl 用の PostgreSQL ドライバーでは、常に自動コミット属性を明示的に設定する必要があります。
+ 動的 SQL クエリを処理します。これには、クエリが意図したとおりに動作することを確実にするため、クエリロジックと反復テストを詳しく理解する必要があります。
+ パフォーマンス コードを変更しても、アプリケーションのパフォーマンスが低下しないようにする必要があります。

このパターンでは、変換プロセスを詳しく説明します。

## 前提条件と制限
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-prereqs"></a>

**前提条件**
+ Python と Perl の構文に関する実用的な知識。
+ SQL Server および PostgreSQL に関する基本スキル
+ 既存のアプリケーションアーキテクチャを理解しましょう。
+ アプリケーションコード、SQL Server データベース、および PostgreSQL データベースにアクセスできます。
+ アプリケーションの変更を開発、テスト、検証するための認証情報を使用して Windows または Linux (または他の Unix) 開発環境にアクセスできます。
+ Python ベースのアプリケーションでは、データフレームを処理するための **Pandas** や、データベース接続用の **psycopg2** や **SQLAlchemy** など、アプリケーションが必要とする標準の Python ライブラリが必要です。
+ Perl ベースのアプリケーションでは、依存ライブラリまたはモジュールを含む Perl パッケージが必要です。包括的な Perl Archive Network (CPAN) モジュールは、ほとんどのアプリケーション要件をサポートします。
+ 必要なすべての依存関係のあるカスタマイズされたライブラリまたはモジュール。 
+ SQL Server への読み込みアクセスと Aurora への読み込み/書き込みアクセス用のデータベース認証情報。
+ PostgreSQL は、サービスやユーザーによるアプリケーションの変更を検証およびデバッグします。
+ アプリケーションの移行中に Visual Studio Code、Sublime Text、**pgAdmin** などの開発ツールにアクセスできます。

**機能制限**
+ Python や Perl のバージョン、モジュール、ライブラリ、パッケージの中には、クラウド環境と互換性のないものがあります。　
+ SQL Server に使用されているサードパーティのライブラリやフレームワークの中には、PostgreSQL への移行をサポートするように置き換えられないものがあります。 
+ パフォーマンスの変動により、アプリケーション、インライン Transact-SQL (T-SQL) クエリ、データベース関数、ストアドプロシージャの変更が必要な場合があります。
+ PostgreSQL は、テーブル名、列名、および他のデータベースオブジェクトの小文字名をサポートします。 
+ UUID 列などの一部のデータタイプは小文字のみで保存されます。Python と Perl のアプリケーションは、このような大文字と小文字の違いを処理する必要があります。 
+ 文字エンコーディングの違いは、PostgreSQL データベース内の対応するテキスト列の正しいデータタイプで処理する必要があります。                               

**製品バージョン**
+ Python 3.6 以降 (オペレーティングシステムをサポートするバージョンを使用してください)
+ Perl 5.8.3 以降 (オペレーティングシステムをサポートするバージョンを使用してください)
+ Aurora PostgreSQL 互換エディション 4.2 以降 (「[詳細](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html#AuroraPostgreSQL.Updates.20180305.42)」を参照してください)

## アーキテクチャ
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-architecture"></a>

**ソーステクノロジースタック**
+ スクリプト作成 (アプリケーションプログラミング) 言語: Python 2.7 以降または Perl 5.8 
+ データベース: Microsoft SQL Server バージョン 13
+ オペレーティングシステム: Red Hat Enterprise Linux (RHEL) 7 

**ターゲットテクノロジースタック**
+ スクリプト作成 (アプリケーションプログラミング) 言語:Python 3.6 以降または Perl 5.8 以降 
+ データベース: Aurora PostgreSQL 互換 4.2
+ オペレーティングシステム: RHEL 7 

**移行アーキテクチャ**

![\[SQL Server を搭載した Perl または Python アプリケーションを Aurora PostgreSQL 互換アプリケーションに移行する\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/b64de64a-bd55-4db7-ba7b-0a2557862af1/images/b8fab3e2-ded5-4f58-86bf-3f645252e9fc.png)


## ツール
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-tools"></a>

**AWS のサービスとツール**
+ [Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)は、フルマネージド型で PostgreSQL 互換の、ACID 準拠のリレーショナルデータベースエンジンです。ハイエンドの商用データベースのスピードと信頼性を、オープンソースデータベースのコスト効率でご利用いただけます。PostgreSQL を Aurora PostgreSQL に差し替えることで、新規および既存の PostgreSQL のデプロイを簡単に、コスト効率よく設定、操作、スケーリングできるようになります。
+ [AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) はオープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。

**その他のツール**
+ [psycopg2](https://pypi.org/project/psycopg2/) や [SQLAlchemy](https://www.sqlalchemy.org/) などの [Python](https://www.python.org/) および PostgresSQL データベース接続ライブラリ
+ [Perl](https://www.perl.org/) とその [DBI モジュール](https://metacpan.org/pod/DBD::Pg)
+ [PostgreSQL インタラクティブターミナル](https://www.postgresql.org/docs/13/app-psql.html) (psql)

## エピック
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-epics"></a>

### アプリケーションリポジトリを PostgreSQL に移行する — 大まかな手順
<a name="migrate-your-application-repository-to-postgresql-ndash-high-level-steps"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 以下のコード変換手順に従って、アプリケーションを PostgreSQL に移行してください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html)以下のエピックでは、Python および Perl アプリケーションの変換タスクの一部について詳しく説明します。 | アプリ開発者 | 
| 移行の各ステップでチェックリストを使用します。 | アプリケーション移行の各手順 (最終ステップを含む) のチェックリストに以下の項目を追加してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | アプリ開発者 | 

### アプリケーションの分析と更新 — Python コードベース
<a name="analyze-and-update-your-application-ndash-python-code-base"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 既存の Python コードベースを分析します。 | アプリケーションの移行プロセスを円滑に進めるため、以下の項目を分析に含める必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | アプリ開発者 | 
| PostgreSQL をサポートするようにデータベース接続を変換します。　  | ほとんどの Python アプリケーションは、次のように **pyodbcｘ **ライブラリを使用して SQL Server データベースに接続します。<pre>import pyodbc<br />....<br />try:<br />    conn_string = "Driver=ODBC Driver 17 for SQL<br />    Server;UID={};PWD={};Server={};Database={}".format (conn_user, conn_password,<br />    conn_server, conn_database)<br />    conn = pyodbc.connect(conn_string)<br />    cur = conn.cursor()<br />    result = cur.execute(query_string)<br />    for row in result:<br />    print (row)<br />except Exception as e:<br />    print(str(e))</pre>PostgreSQL をサポートするようにデータベース接続を変換します。　<pre>import pyodbc<br />import psycopg2<br />....<br />try:<br />    conn_string = ‘postgresql+psycopg2://’+<br />    conn_user+’:’+conn_password+’@’+conn_server+’/’+conn_database<br />    conn = pyodbc.connect(conn_string, connect_args={‘options’:’-csearch_path=dbo’})<br />    cur = conn.cursor()<br />    result = cur.execute(query_string)<br />    for row in result:<br />    print (row)<br />except Exception as e:<br />    print(str(e))</pre> | アプリ開発者 | 
| インライン SQL クエリを PostgreSQL に変更します。 | インライン SQL クエリを PostgreSQL 互換の形式に変換します。たとえば、次の SQL Server クエリはテーブルから文字列を取得します。　<pre>dtype = "type1"<br />stm = ‘"SELECT TOP 1 searchcode FROM TypesTable (NOLOCK)<br />WHERE code="’ + "’" + str(dtype) + "’"<br /># For Microsoft SQL Server Database Connection<br />engine = create_engine(‘mssql+pyodbc:///?odbc_connect=%s’ % urllib.parse.quote_plus(conn_string), connect_args={‘connect_timeout’:login_timeout})<br />conn = engine_connect()<br />rs = conn.execute(stm)<br />for row in rs:<br />    print(row)</pre>変換後、PostgreSQL 互換のインライン SQL クエリは以下のようになります。　<pre>dtype = "type1"<br />stm = ‘"SELECT searchcode FROM TypesTable<br />WHERE code="’ + "’" + str(dtype) + "’ LIMIT 1"<br /># For PostgreSQL Database Connection<br />engine = create_engine(‘postgres+psycopg2://%s’ %conn_string, connect_args={‘connect_timeout’:login_timeout})<br />conn = engine.connect()<br />rs = conn.execute(stm)<br />for row in rs:<br />    print(row)</pre> | アプリ開発者 | 
| 動的 SQL クエリの処理。 | 動的 SQL は、1 つのスクリプトに存在することも、複数の Python スクリプトに含めることもできます。　 先ほどの例では、Python の文字列置換関数を使用して動的 SQL クエリを構築するために変数を挿入する方法を説明しました。別の方法として、該当する箇所に変数を使用してクエリ文字列を追加することもできます。 次の例では、関数から返された値に基づいてクエリ文字列が作成されます。<pre>query = ‘"SELECT id from equity e join issues i on e.permId=i.permId where e.id’"<br />query += get_id_filter(ids) + " e.id is NOT NULL</pre>このような動的クエリは、アプリケーションの移行中によく使用されます。以下のステップに従って、動的クエリの処理を行います。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | アプリ開発者 | 
| 結果セット、変数、データフレームを処理します。 | Microsoft SQL Server では、`fetchone()` または `fetchall()` などの Python メソッドを使用してデータベースから結果セットを取得します。`fetchmany(size)` を使用して、結果セットから返されるレコードの数を指定することもできます。これを実行するには、次の例に示すように、**pyodbc **接続オブジェクトを使用します。**pyodbc (Microsoft SQL Server)**<pre>import pyodbc <br />server = 'tcp:myserver.database.windows.net' <br />database = 'exampledb' <br />username = 'exampleusername' <br />password = 'examplepassword' <br />conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)<br />cursor = conn.cursor()<br />cursor.execute("SELECT * FROM ITEMS") <br />row = cursor.fetchone() <br />while row: <br />    print(row[0])<br />    row = cursor.fetchone()</pre>Aurora では、PostgreSQL への接続や結果セットの取得などの同様のタスクを実行するには、**psycopg2 **または **SQLAlchemy** のどちらかを使用します。これらの Python ライブラリは、次の例に示すように、PostgreSQL データベースレコードを走査するための接続モジュールとカーソルオブジェクトを提供します。　**psycopg2 (Aurora PostgreSQL 互換)**<pre>import psycopg2<br />query = "SELECT * FROM ITEMS;"<br />//Initialize variables<br />host=dbname=user=password=port=sslmode=connect_timeout=""<br />connstring = "host='{host}' dbname='{dbname}' user='{user}' \<br />password='{password}'port='{port}'".format(host=host,dbname=dbname,\<br />user=user,password=password,port=port) <br />conn = psycopg2.connect(connstring)<br />cursor = conn.cursor()<br />cursor.execute(query)<br />column_names = [column[0] for column in cursor.description]<br />print("Column Names: ", column_names)<br />print("Column values: "<br />for row in cursor:<br />    print("itemid :", row[0])<br />    print("itemdescrption :", row[1])<br />    print("itemprice :", row[3]))</pre>**SQL Alchemy (Aurora PostgreSQL 互換)**<pre>from sqlalchemy import create_engine<br />from pandas import DataFrame<br />conn_string = 'postgresql://core:database@localhost:5432/exampledatabase'<br />engine = create_engine(conn_string)<br />conn = engine.connect()<br />dataid = 1001<br />result = conn.execute("SELECT * FROM ITEMS")<br />df = DataFrame(result.fetchall())<br />df.columns = result.keys()<br />df = pd.DataFrame()<br />engine.connect()<br />df = pd.read_sql_query(sql_query, engine, coerce_float=False)<br />print("df=", df)</pre> | アプリ開発者 | 
| 移行中や移行後にアプリケーションをテストします。 | 移行後の Python アプリケーションのテストは継続的なプロセスです。移行には接続オブジェクトの変更 (**psycopg2 **または **SQLAlchemy**)、エラー処理、新機能 (データフレーム)、インライン SQL の変更、大容量レプリケーション機能 (`COPY` ではなく `bcp`)、および同様の変更が含まれるため、アプリケーションの移行中および移行後に慎重にテストする必要があります。以下の項目を確認してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | アプリ開発者 | 

### アプリケーションの分析と更新 — Perl コードベース
<a name="analyze-and-update-your-application-ndash-perl-code-base"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 既存の Perl コードベースを分析します。 | アプリケーションの移行プロセスを円滑に進めるため、以下の項目を分析に含める必要があります。以下の項目を特定する必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | アプリ開発者 | 
| Perl アプリケーションと DBI モジュールからの接続を PostgreSQL をサポートするように変換します。　 | Perl ベースのアプリケーションは通常、Perl プログラミング言語の標準データベースアクセスモジュールである Perl DBI モジュールを使用します。　 同じ DBI モジュールを SQL Server 用と PostgreSQL 用の異なるドライバーで使用できます。必要な Perl モジュール、インストール、およびその他の手順の詳細については、[DBD::Pg のドキュメント](https://metacpan.org/pod/DBD::Pg)を参照してください。次の例は、`exampletest-aurorapg-database.cluster-sampleclusture.us-east.-rds.amazonaws.com` で Aurora PostgreSQL 互換に接続しています。<pre>#!/usr/bin/perl<br />use DBI;<br />use strict;<br />my $driver = "Pg";<br />my $hostname = "exampletest-aurorapg-database-sampleclusture.us-east.rds.amazonaws.com"<br />my $dsn = "DBI:$driver: dbname = $hostname;host = 127.0.0.1;port = 5432";<br />my $username = "postgres";<br />my $password = "pass123";<br />$dbh = DBI->connect("dbi:Pg:dbname=$hostname;host=$host;port=$port;options=$options",<br />      $username,<br />      $password,<br />      {AutoCommit => 0, RaiseError => 1, PrintError => 0}<br />      );</pre> | アプリ開発者 | 
| インライン SQL クエリを PostgreSQL に変更します。 | アプリケーションには、`SELECT`、`DELETE`、`UPDATE` など、PostgreSQL でサポートされていないクエリ句を含むインライン SQL クエリが含まれている場合があります。たとえば、`TOP` や `NOLOCK` などのクエリキーワードは PostgreSQL ではサポートされていません。次の例では、`TOP`、`NOLOCK`、およびブール型変数の処理方法を示しています。In SQL Server:<pre>$sqlStr = $sqlStr<br />. "WHERE a.student_id in (SELECT TOP $numofRecords c_student_id   \<br />FROM active_student_record b WITH (NOLOCK) \<br />INNER JOIN student_contributor c WITH (NOLOCK) on c.contributor_id = b.c_st)</pre>PostgreSQL の場合は、次のように変換してください。<pre>$sqlStr = $sqlStr<br />. "WHERE a.student_id in (SELECT TOP $numofRecords c_student_id  \<br />FROM active_student_record b INNER JOIN student_contributor c  \<br />on c.contributor_id = b.c_student_contr_id WHERE b_current_1 is true \<br />LIMIT $numofRecords)"</pre> | アプリ開発者 | 
| 動的 SQL クエリと Perl 変数を処理します。 | 動的 SQL クエリは、アプリケーションのランタイム時に作成される SQL ステートメントです。これらのクエリは、アプリケーションのランタイムに特定の条件に応じて動的に構築されるため、特定の条件に依存するので、クエリの全文は実行時に把握できません。例としては、毎日上位 10 銘柄を分析する財務分析アプリケーションがあります。これらの株式は毎日変動します。SQL テーブルはトップパフォーマーに基づいて作成され、その値はランタイムになるまでわかりません。この例のインライン SQL クエリは、変数に設定された結果を取得するためにラッパー関数に渡され、変数は条件を使用してテーブルが存在するかどうかを判断します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html)次に、変数処理の例を示します。次に、このユースケースの SQL Server クエリと PostgreSQL クエリを示します。<pre>my $tableexists = db_read( arg 1, $sql_qry, undef, 'writer');<br />my $table_already_exists = $tableexists->[0]{table_exists};<br />if ($table_already_exists){<br /># do some thing<br />}<br />else {<br /># do something else<br />}</pre>SQL Server:<pre>my $sql_qry = "SELECT OBJECT_ID('$backendTable', 'U') table_exists", undef, 'writer')";</pre>PostgreSQL:<pre>my $sql_qry = "SELECT TO_REGCLASS('$backendTable', 'U') table_exists", undef, 'writer')";</pre>次の例では、インライン SQL の** **Perl 変数を使用して、`SELECT` と一緒に `JOIN` ステートメントを実行し、テーブルのプライマリキーとキーカラムの位置を取得します。SQL Server:<pre>my $sql_qry = "SELECT column_name', character_maxi mum_length \<br />FROM INFORMATION_SCHEMA.COLUMNS \<br />WHERE TABLE_SCHEMA='$example_schemaInfo' \<br />AND TABLE_NAME='$example_table' \<br />AND DATA_TYPE IN ('varchar','nvarchar');";</pre>PostgreSQL:<pre>my $sql_qry = "SELECT c1.column_name, c1.ordinal_position \<br />FROM information_schema.key_column_usage AS c LEFT \<br />JOIN information_schema.table_constraints AS t1 \<br />ON t1.constraint_name = c1.constraint_name \<br />WHERE t1.table_name = $example_schemaInfo'.'$example_table’ \<br />AND t1.constraint_type = 'PRIMARY KEY' ;";</pre> | アプリ開発者 | 

### PostgreSQL をサポートするために、Perl ベースまたは Python ベースのアプリケーションに追加の変更を加えます。
<a name="make-additional-changes-to-your-perl-based-or-python-based-application-to-support-postgresql"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 他の SQL Server コンストラクトを PostgreSQL に変換します。 | 次の変更は、プログラミング言語にかかわらず、すべてのアプリケーションに適用されます。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.html) | アプリ開発者 | 

### パフォーマンスを向上する
<a name="improve-performance"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS のサービスを活用してパフォーマンスを向上させましょう。 | AWS クラウドに移行すると、アプリケーションとデータベースのデザインを改良して AWS のサービスを活用できます。たとえば、Aurora PostgreSQL 互換データベースサーバーに接続されている Python アプリケーションからのクエリが、元の Microsoft SQL Server クエリよりも時間がかかる場合は、Aurora サーバーから Amazon Simple Storage Service (Amazon S3) バケットに履歴データのフィードを直接作成し、Amazon Athena ベースの SQL クエリを使用してユーザーダッシュボード用のレポートと分析データクエリを生成することを検討できます。 | アプリ開発者、クラウドアーキテクト | 

## 関連リソース
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-resources"></a>
+ [Perl](https://www.perl.org/)
+ [Perl DBI モジュール](https://metacpan.org/pod/DBI)
+ [Python](https://www.python.org/)
+ [psycopg2](https://pypi.org/project/psycopg2/)
+ [SQLAlchemy](https://www.sqlalchemy.org/)
+ [一括コピー - PostgreSQL](https://www.postgresql.org/docs/9.2/sql-copy.html)
+ [一括コピー - Microsoft SQL サーバー](https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver15)
+ [PostgreSQL](https://www.postgresql.org/)
+ [Amazon Aurora PostgreSQL の操作](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)

## 追加情報
<a name="change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition-additional"></a>

Microsoft SQL Server と Aurora PostgreSQL 互換はいずれも ANSI SQL に準拠しています。ただし、Python または Perl アプリケーションを SQL Server から PostgreSQL に移行する場合は、構文、列データ型、ネイティブデータベース固有の関数、一括挿入、および大文字と小文字の区別に互換性がないことに注意する必要があります。　

次のセクションでは、考えられる不一致について詳しく説明します。

**データ型の比較**

データタイプを SQL Server から PostgreSQL に変更すると、アプリケーションが操作する結果データに大きな違いが生じる可能性があります。データ型の比較については、[Sqlines ウェブサイト](https://www.sqlines.com/sql-server-to-postgresql)の表を参照してください。

**ネイティブの SQL 関数またはビルトイン SQL 関数**

一部の関数の動作は、SQL Server データベースと PostgreSQL データベースで異なります。次の表に例を示しています。


| 
| 
| Microsoft SQL Server | 説明 | [PostgreSQL] | 
| --- |--- |--- |
| `CAST`  | 値を 1 つのデータ型から別のデータ型へ変換します。 | PostgreSQL `type :: operator` | 
| `GETDATE()` | 現在のデータベースシステムの日付と時刻を `YYYY-MM-DD hh:mm:ss.mmm` 形式で返します。 | `CLOCK_TIMESTAMP` | 
| `DATEADD` | 日付に時刻/日付の間隔を追加します。　 | `INTERVAL` expression | 
| `CONVERT` | 値を特定のデータ形式に変換します。 | `TO_CHAR` | 
| `DATEDIFF` | 2 つの日付間の日数の差を返します。 | `DATE_PART` | 
| `TOP` | `SELECT` 結果セットの行数を制限します。 | `LIMIT/FETCH` | 

** 匿名ブロック**

構造化 SQL クエリは、宣言、実行可能ファイル、例外処理などのセクションに分かれています。次の表は、シンプルな匿名ブロックの Microsoft SQL Server バージョンと PostgreSQL バージョンを比較したものです。複雑な匿名ブロックの場合は、アプリケーション内でカスタムデータベース関数を呼び出すことをお勧めします。　


| 
| 
| Microsoft SQL Server | [PostgreSQL] | 
| --- |--- |
| <pre>my $sql_qry1=<br />my $sql_qry2 =<br />my $sqlqry = "BEGIN TRAN<br />$sql_qry1 $sql_qry2<br />if @\@error !=0 ROLLBACK<br />TRAN<br />else COMIT TRAN";</pre> | <pre>my $sql_qry1=<br />my $sql_qry2 =<br />my $sql_qry = " DO \$\$<br />BEGIN<br />$header_sql $content_sql<br />END<br />\$\$";</pre> | 

 

**他の違い**
+ **行の一括挿入:** [Microsoft SQL Server の bcp ユーティリティ](https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver15) に相当する PostgreSQL は [COPY](https://www.postgresql.org/docs/9.2/sql-copy.html) です。
+ **大文字と小文字の区別:** PostgreSQL では列名の大文字と小文字が区別されるため、SQL Server の列名を小文字または大文字に変換する必要があります。これは、データを抽出または比較したり、結果セットや変数に列名を入力するときの要因になります。次の例では、値を大文字または小文字で保存できる列を表示しています。

```
my $sql_qry = "SELECT $record_id FROM $exampleTable WHERE LOWER($record_name) = \'failed transaction\'"; 
```
+ **連結: **SQL Server は文字列連結の演算子として `+` を使用し、PostgreSQL は `||` を使用します。
+ **検証: **PostgreSQL のアプリケーションコードで使用する前に、インライン SQL クエリと関数をテストして検証する必要があります。
+ **ORM ライブラリの追加:`**既存のデータベース接続ライブラリを [SQLAlchemy](https://www.sqlalchemy.org/) や [PynoMoDB](https://pynamodb.readthedocs.io/en/latest/quickstart.html) などの Python ORM ライブラリに含めたり、置き換えたりすることもできます。これにより、オブジェクト指向のパラダイムを使用して、データベースからデータを簡単にクエリして操作できるようになります。

# ワークロード別の移行パターン
<a name="migration-migration-patterns-by-workload-pattern-list"></a>

**Topics**
+ [IBM](migration-migration-patterns-by-workload-ibm-pattern-list.md)
+ [Microsoft](migration-migration-patterns-by-workload-microsoft-pattern-list.md)
+ [該当なし](migration-migration-patterns-by-workload-notapplicable-pattern-list.md)
+ [オープンソース](migration-migration-patterns-by-workload-open-source-pattern-list.md)
+ [Oracle](migration-migration-patterns-by-workload-oracle-pattern-list.md)
+ [SAP](migration-migration-patterns-by-workload-sap-pattern-list.md)

# IBM
<a name="migration-migration-patterns-by-workload-ibm-pattern-list"></a>

**Topics**
+ [AWS DMS を使用して Db2 データベースを Amazon EC2 から Aurora MySQL 互換のデータベースに移行する](migrate-a-db2-database-from-amazon-ec2-to-aurora-mysql-compatible-by-using-aws-dms.md)
+ [ログ配信を使用して Db2 for LUW を Amazon EC2 に移行することで、システム停止時間を短縮する](migrate-db2-for-luw-to-amazon-ec2-by-using-log-shipping-to-reduce-outage-time.md)
+ [高可用性ディザスタリカバリ機能を備えた Db2 for LUW を Amazon EC2 に移行する](migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.md)
+ [AWS DMS と AWS SCT を使用して IBM Db2 on Amazon EC2 から Aurora PostgreSQL 互換に移行する](migrate-from-ibm-db2-on-amazon-ec2-to-aurora-postgresql-compatible-using-aws-dms-and-aws-sct.md)
+ [IBM WebSphere アプリケーションサーバーから Amazon EC2 の Apache Tomcat に移行](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)

# Microsoft
<a name="migration-migration-patterns-by-workload-microsoft-pattern-list"></a>

**Topics**
+ [Microsoft ワークロードの検出と AWS への移行を加速](accelerate-the-discovery-and-migration-of-microsoft-workloads-to-aws.md)
+ [Microsoft SQL Server から Amazon Aurora PostgreSQL 互換エディションへのデータベース移行をサポートするように Python と Perl アプリケーションを変更する](change-python-and-perl-applications-to-support-database-migration-from-microsoft-sql-server-to-amazon-aurora-postgresql-compatible-edition.md)
+ [Microsoft Excel と Python を使用して AWS DMS タスク用の AWS CloudFormation テンプレートを作成](create-aws-cloudformation-templates-for-aws-dms-tasks-using-microsoft-excel-and-python.md)
+ [AWS DMS を使用して Microsoft SQL Server データベースを Amazon S3 にエクスポートする](export-a-microsoft-sql-server-database-to-amazon-s3-by-using-aws-dms.md)
+ [SQL Server から PostgreSQL に移行する際に、PII データに SHA1 ハッシュを実装する](implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.md)
+ [EC2 Windows インスタンスを AWS Managed Services アカウントに取り込み、移行](ingest-and-migrate-ec2-windows-instances-into-an-aws-managed-services-account.md)
+ [メッセージキューを Microsoft Azure Service Bus から Amazon SQS に移行](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [AWS DMS を使用して Microsoft SQL Server データベースを Amazon EC2 から Amazon DocumentDB に移行します](migrate-a-microsoft-sql-server-database-from-amazon-ec2-to-amazon-documentdb-by-using-aws-dms.md)
+ [AWS DMS と AWS SCT を使用して Microsoft SQL Server データベースを Aurora MySQL に移行](migrate-a-microsoft-sql-server-database-to-aurora-mysql-by-using-aws-dms-and-aws-sct.md)
+ [.NET アプリケーションを Microsoft Azure App Serviceから AWS Elastic Beanstalk に移行](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-ec2.md)
+ [オンプレミス Microsoft SQL Server データベースを Amazon RDS for SQL Server に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server.md)
+ [リンクされたサーバーを使用して、オンプレミス Microsoft SQL Server データベースを Amazon RDS for SQL Server に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-linked-servers.md)
+ [ネイティブバックアップと復元メソッドを使用して、オンプレミスの Microsoft SQL サーバーデータベースを Amazon RDS for SQL Server に移行](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-rds-for-sql-server-using-native-backup-and-restore-methods.md)
+ [AWS DMS を使用してオンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms.md)
+ [AWS SCT データ抽出エージェントを使用して、オンプレミス Microsoft SQL Server データベースを Amazon Redshift に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-sct-data-extraction-agents.md)
+ [オンプレミス Microsoft SQL Server データベースを、Linux を実行中の Amazon EC2 上の Microsoft SQL Server に移行する](migrate-an-on-premises-microsoft-sql-server-database-to-microsoft-sql-server-on-amazon-ec2-running-linux.md)
+ [Rclone を使用して Microsoft Azure Blob から Amazon S3 にデータを移行する](migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.md)
+ [appcmd.exe を使用して IIS がホストするアプリケーションを Amazon EC2 に移行する](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [オンプレミスの Microsoft SQL Server データベースを Amazon EC2 に移行する](migrate-microsoft-sql-server-to-amazon-ec2-using-aws-mgn.md)
+ [ACM を使用して Windows SSL 証明書をApplication Load Balancer に移行](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [AWS Cloud でオンプレミスワークロードをリホストする: 移行チェックリスト](rehost-on-premises-workloads-in-the-aws-cloud-migration-checklist.md)
+ [Microsoft SQL サーバーを AWS クラウドに移行した後に接続エラーを解決する](resolve-connection-errors-after-migrating-microsoft-sql-server-to-the-aws-cloud.md)
+ [Amazon FSx を使用して SQL Server Always On FCI 向けのマルチ AZ インフラストラクチャをセットアップする](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)

# 該当なし
<a name="migration-migration-patterns-by-workload-notapplicable-pattern-list"></a>

**Topics**
+ [へのリホスト移行中にファイアウォールリクエストの承認プロセスを作成する AWS](create-an-approval-process-for-firewall-requests-during-a-rehost-migration-to-aws.md)

# オープンソース
<a name="migration-migration-patterns-by-workload-open-source-pattern-list"></a>

**Topics**
+ [Aurora PostgreSQL-Compatible でのアプリケーションユーザーとロールの作成](create-application-users-and-roles-in-aurora-postgresql-compatible.md)
+ [AWS SCT と AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行する AWS CLI CloudFormation](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-with-aws-sct-and-aws-dms-using-aws-cli-and-aws-cloudformation.md)
+ [ネイティブツールを使用して オンプレミスの MariaDB Amazon RDS for MariaDB に移行する](migrate-an-on-premises-mariadb-database-to-amazon-rds-for-mariadb-using-native-tools.md)
+ [オンプレミス MySQL データベースを Amazon RDS for MySQL に移行する](migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql.md)
+ [オンプレミス MySQL データベースを Aurora MySQL に移行する](migrate-an-on-premises-mysql-database-to-aurora-mysql.md)
+ [オンプレミス PostgreSQL データベースを Aurora PostgreSQL に移行する](migrate-an-on-premises-postgresql-database-to-aurora-postgresql.md)
+ [Couchbase Server データベースを Amazon EC2 に移行する](migrate-couchbase-server-ec2.md)
+ [IBM WebSphere アプリケーションサーバーから Amazon EC2 上の Apache Tomcat への自動スケーリングによる移行](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [pglogic を使用して Amazon EC2 上の PostgreSQL から Amazon RDS for PostgreSQL に移行する](migrate-from-postgresql-on-amazon-ec2-to-amazon-rds-for-postgresql-using-pglogical.md)
+ [AWS App2Container を使用したオンプレミスの Java プリケーションの AWS への移行](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [Percona XtraBackup、Amazon EFS、Amazon S3 を使用してオンプレミスの MySQL データベースを Aurora MySQL に移行する](migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.md)
+ [Oracle 外部テーブルを Amazon Aurora PostgreSQL 互換に移行](migrate-oracle-external-tables-to-amazon-aurora-postgresql-compatible.md)
+ [RHEL ソースサーバーを再起動した後、SELinux を無効にせずに AWS レプリケーションエージェントを自動的に再起動する](restart-the-aws-replication-agent-automatically-without-disabling-selinux-after-rebooting-a-rhel-source-server.md)
+ [pg\$1transport を使用して 2 つの Amazon RDS DB インスタンス間でPostgreSQL データベースを転送する](transport-postgresql-databases-between-two-amazon-rds-db-instances-using-pg-transport.md)

# Oracle
<a name="migration-migration-patterns-by-workload-oracle-pattern-list"></a>

**Topics**
+ [Oracle の VARCHAR2 (1) データ型を Amazon Aurora PostgreSQL のブールデータ型に変換](convert-varchar2-1-data-type-for-oracle-to-boolean-data-type-for-amazon-aurora-postgresql.md)
+ [PostgreSQL 互換の Aurora グローバルデータベースを使用して Oracle DR をエミュレート](emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.md)
+ [Oracle SQL Developer と AWS SCT を使用して Amazon RDS for Oracle から Amazon RDS for PostgreSQL に段階的に移行](incrementally-migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-using-oracle-sql-developer-and-aws-sct.md)
+ [Aurora PostgreSQL 互換のファイルエンコーディングを使用して BLOB ファイルを TEXT にロード](load-blob-files-into-text-by-using-file-encoding-in-aurora-postgresql-compatible.md)
+ [AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行します](migrate-amazon-rds-for-oracle-to-amazon-rds-for-postgresql-in-ssl-mode-by-using-aws-dms.md)
+ [Amazon RDS for Oracle データベースを別の に移行 AWS アカウント し、 AWS リージョン を使用して継続的なレプリケーション AWS DMS を行う](migrate-an-amazon-rds-for-oracle-database-to-another-aws-account-and-aws-region-using-aws-dms-for-ongoing-replication.md)
+ [Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon EC2 に移行する](migrate-an-on-premises-oracle-database-to-amazon-ec2-by-using-oracle-data-pump.md)
+ [Logstash を使用して、オンプレミス Oracle データベースを Amazon OpenSearch Service へ移行する](migrate-an-on-premises-oracle-database-to-amazon-opensearch-service-using-logstash.md)
+ [AWS DMS と AWS SCT を使用してオンプレミスの Oracle データベースを Amazon RDS for MySQL に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [オンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle.md)
+ [Oracle Data Pump を使用してオンプレミスの Oracle データベースを Amazon RDS for Oracle に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-oracle-using-oracle-data-pump.md)
+ [Oracle バイスタンダーと AWS DMS を使用して、オンプレミスの Oracle データベースを Amazon RDS for PostgreSQL に移行する](migrate-an-on-premises-oracle-database-to-amazon-rds-for-postgresql-by-using-an-oracle-bystander-and-aws-dms.md)
+ [オンプレミスの Oracle データベースを Oracle Amazon EC2 に移行する](migrate-an-on-premises-oracle-database-to-oracle-on-amazon-ec2.md)
+ [AWS DMS と AWS SCT を使用して、Oracle データベースを Amazon EC2 から Amazon RDS for MariaDB に移行する](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-mariadb-using-aws-dms-and-aws-sct.md)
+ [AWS DMS を使用して Oracle データベースを Amazon EC2 から Amazon RDS for Oracle に移行する](migrate-an-oracle-database-from-amazon-ec2-to-amazon-rds-for-oracle-using-aws-dms.md)
+ [Oracle GoldenGate フラットファイルアダプタを使用して Oracle データベースを Amazon RDS for Oracle に移行する](migrate-an-oracle-database-to-amazon-rds-for-oracle-by-using-oracle-goldengate-flat-file-adapters.md)
+ [AWS DMS と AWS SCT を使用して Oracle データベースを Amazon Redshift に移行する](migrate-an-oracle-database-to-amazon-redshift-using-aws-dms-and-aws-sct.md)
+ [AWS DMS と AWS SCT を使用して Oracle データベースを Aurora PostgreSQL に移行](migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct.md)
+ [Oracle Data Pump と AWS DMS を使用して Oracle JD Edwards EnterpriseOne データベースを AWS に移行します](migrate-an-oracle-jd-edwards-enterpriseone-database-to-aws-by-using-oracle-data-pump-and-aws-dms.md)
+ [AWS DMS を使用して Oracle パーティションテーブルを PostgreSQL に移行](migrate-an-oracle-partitioned-table-to-postgresql-by-using-aws-dms.md)
+ [AWS DMS を使用して Oracle PeopleSoft データベースを AWS に移行する](migrate-an-oracle-peoplesoft-database-to-aws-by-using-aws-dms.md)
+ [オンプレミスの Oracle データベースから Aurora PostgreSQL にデータを移行する](migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql.md)
+ [Amazon RDS for Oracle から Amazon RDS for MySQL に移行する](migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql.md)
+ [マテリアライズドビューと AWS DMS を使用して Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-materialized-views-and-aws-dms.md)
+ [SharePlex と AWS DMS を使用して、Oracle 8i または 9i から Amazon RDS for PostgreSQL に移行](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms.md)
+ [Oracle GoldenGate を使用して Oracle Database から Amazon RDS for PostgreSQL に移行](migrate-from-oracle-database-to-amazon-rds-for-postgresql-by-using-oracle-goldengate.md)
+ [AWS DMS と AWS SCT を使用して Oracle on Amazon EC2 から Amazon RDS for MySQL に移行する](migrate-from-oracle-on-amazon-ec2-to-amazon-rds-for-mysql-using-aws-dms-and-aws-sct.md)
+ [Amazon ECS で Oracle WebLogic から Apache Tomcat (ToMee) に移行する](migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs.md)
+ [関数ベースのインデックスを Oracle から PostgreSQL に移行する](migrate-function-based-indexes-from-oracle-to-postgresql.md)
+ [レガシーアプリケーションを Oracle Pro\$1C から ECPG に移行する](migrate-legacy-applications-from-oracle-pro-c-to-ecpg.md)
+ [Oracle CLOB 値を AWS 上の PostgreSQL の個々の行に移行](migrate-oracle-clob-values-to-individual-rows-in-postgresql-on-aws.md)
+ [Oracle Database のエラーコードを Amazon Aurora PostgreSQL-Compatible データベースに移行する](migrate-oracle-database-error-codes-to-an-amazon-aurora-postgresql-compatible-database.md)
+ [エクステンションを使用して Oracle のネイティブ関数を PostgreSQL に移行](migrate-oracle-native-functions-to-postgresql-using-extensions.md)
+ [Oracle PeopleSoft を Amazon RDS Custom に移行](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Oracle ROWID 機能を AWS の PostgreSQL に移行](migrate-oracle-rowid-functionality-to-postgresql-on-aws.md)
+ [Oracle SERIALLY\$1REUSABLE プラグマパッケージを PostgreSQL に移行](migrate-oracle-serially-reusable-pragma-packages-into-postgresql.md)
+ [仮想生成列をOracleから PostgreSQL に移行](migrate-virtual-generated-columns-from-oracle-to-postgresql.md)
+ [Aurora PostgreSQL-Compatible で Oracle UTL\$1FILE 機能をセットアップする](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Oracle から Amazon Aurora PostgreSQL への移行後にデータベースオブジェクトを検証する](validate-database-objects-after-migrating-from-oracle-to-amazon-aurora-postgresql.md)

# SAP
<a name="migration-migration-patterns-by-workload-sap-pattern-list"></a>

**Topics**
+ [AWS DMS を使用して SAP ASE から Amazon RDS for SQL Server）に移行する](migrate-from-sap-ase-to-amazon-rds-for-sql-server-using-aws-dms.md)
+ [AWS SCT と AWS DMS を使用して Amazon EC2 上の SAP ASE を Amazon Aurora PostgreSQL 互換の Amazon Aurora PostgreSQL 互換に移行します](migrate-sap-ase-on-amazon-ec2-to-amazon-aurora-postgresql-compatible-using-aws-sct-and-aws-dms.md)

# その他のパターン
<a name="migration-more-patterns-pattern-list"></a>

**Topics**
+ [をインストールして IBM z/OS AWS のサービス からアクセスする AWS CLI](access-aws-services-from-ibm-z-os-by-installing-aws-cli.md)
+ [SQL Server データベースを AWS 上の MongoDB Atlas に移行する際のクエリパフォーマンスを評価する](assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws.md)
+ [DR Orchestrator Framework を使用してクロスリージョンのフェイルオーバーとフェイルバックを自動化](automate-cross-region-failover-and-failback-by-using-dr-orchestrator-framework.md)
+ [AWS Lambda および Task Scheduler を使用して、Amazon EC2 の SQL Server Express でデータベースタスクを自動化する](automate-database-tasks-in-sql-server-express-edition-running-on-amazon-ec2.md)
+ [AWS クラウドで高度なメインフレームファイルビューアを構築](build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.md)
+ [プライベートネットワーク経由でアプリケーション移行サービスのデータプレーンをコントロールプレーンに接続](connect-to-application-migration-service-data-and-control-planes-over-a-private-network.md)
+ [Blu Age によってモダナイズされたメインフレームワークロードをコンテナ化](containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.md)
+ [JSON Oracleクエリを PostgreSQL データベース SQL に変換](convert-json-oracle-queries-into-postgresql-database-sql.md)
+ [Teradata NORMALIZE 時間的特徴量を Amazon Redshift SQL に変換](convert-the-teradata-normalize-temporal-feature-to-amazon-redshift-sql.md)
+ [Teradata RESET WHEN 特徴量を Amazon Redshift SQL に変換](convert-the-teradata-reset-when-feature-to-amazon-redshift-sql.md)
+ [を使用してアカウント間で Amazon DynamoDB テーブルをコピーする AWS Backup](copy-amazon-dynamodb-tables-across-accounts-using-aws-backup.md)
+ [Amazon EC2 にプライベート静的 IP を使用して Cassandra クラスターをデプロイしてリバランスを回避する](deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.md)
+ [AWS CDK と TypeScript を使用してマルチスタックのアプリケーションをデプロイする](deploy-multiple-stack-applications-using-aws-cdk-with-typescript.md)
+ [Terraform を使用して SQL Server フェイルオーバークラスターインスタンスを Amazon EC2 および Amazon FSx にデプロイする](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Amazon Aurora PostgreSQL および Amazon RDS for PostgreSQL で Oracle PL/SQL 連想配列をエミュレートする](emulate-oracle-plsql-associative-arrays-in-aurora-and-rds-postgresql.md)
+ [AWR レポートを使用して Oracle データベースの Amazon RDS エンジンサイズを推定](estimate-the-amazon-rds-engine-size-for-an-oracle-database-by-using-awr-reports.md)
+ [Quick Sight で AWS Mainframe Modernization と Amazon Q を使用してデータインサイトを生成する](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Aurora PostgreSQL の動的 SQL ステートメントの匿名ブロックを処理](handle-anonymous-blocks-in-dynamic-sql-statements-in-aurora-postgresql.md)
+ [Amazon ECR リポジトリに移行するときに、重複するコンテナイメージを自動的に識別する](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [FSx for Windows File Server を使用して Amazon EC2 で Microsoft SQL Server フェイルオーバークラスターを設定する](microsoft-sql-failover-cluster-on-amazon-ec2.md)
+ [AWS Glue を使用して Apache Cassandra ワークロードを Amazon Keyspaces に移行する](migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.md)
+ [コンテナワークロードを Azure Red Hat OpenShift (ARO) から Red Hat OpenShift Service on AWS (ROSA) に移行する](migrate-container-workloads-from-aro-to-rosa.md)
+ [SharePlex と AWS DMS を使用して、Oracle 8i または 9i から Amazon RDS for Oracle に移行](migrate-from-oracle-8i-or-9i-to-amazon-rds-for-oracle-using-shareplex-and-aws-dms.md)
+ [を使用して Microsoft SQL Server Always On 可用性グループを移行する AWS Application Migration Service](migrate-microsoft-sql-server-always-on-group-using-mgn.md)
+ [100 個以上の引数を持つ Oracle 関数とプロシージャを PostgreSQL に移行](migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql.md)
+ [同じホスト名の SAP HSR を使用して SAP HANA を AWS に移行します](migrate-sap-hana-to-aws-using-sap-hsr-with-the-same-hostname.md)
+ [分散可用性グループを使用して SQL Server を AWS に移行する](migrate-sql-server-to-aws-using-distributed-availability-groups.md)
+ [と Terraform を使用してメインフレームアプリケーションをモダナイズ AWS Transform およびデプロイする](modernize-mainframe-app-transform-terraform.md)
+ [Micro Focus Enterprise ServerとLRS VPSX/MFIを使用して、AWS 上のメインフレームのオンライン印刷ワークロードを最新化](modernize-mainframe-online-printing-workloads-on-aws-by-using-micro-focus-enterprise-server-and-lrs-vpsx-mfi.md)
+ [Rocket Enterprise Server と LRS PageCenterX AWS を使用してメインフレーム出力管理をモダナイズする](modernize-mainframe-output-management-on-aws-by-using-rocket-enterprise-server-and-lrs-pagecenterx.md)
+ [F5 から AWS のApplication Load Balancer に移行するときの HTTP ヘッダーを変更](modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws.md)
+ [Application Recovery Controller を使用して EMR クラスターのマルチ AZ フェイルオーバーを管理する](multi-az-failover-spark-emr-clusters-arc.md)
+ [Oracle から PostgreSQL への部分的なデータベース移行に関するオブジェクトの依存関係を分析する](multilevel-object-analysis-for-database-migration-from-oracle-to-postgresql.md)
+ [Terraform を使用してデータベース移行用の CI/CD パイプラインを設定する](set-up-ci-cd-pipeline-for-db-migration-with-terraform.md)
+ [AWS Elastic Disaster Recoveryで Oracle JD Edwards EnterpriseOne のディザスタリカバリをセットアップする](set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.md)
+ [AWS Private CA と AWS RAM を使用してプライベート証明書の管理を簡素化する](simplify-private-certificate-management-by-using-aws-private-ca-and-aws-ram.md)
+ [大規模な Db2 z/OS データを CSV ファイルで Amazon S3 に転送する](transfer-large-scale-db2-z-os-data-to-amazon-s3-in-csv-files.md)
+ [AWS Transform カスタムを使用して Easytrieve を最新の言語に変換する](transform-easytrieve-modern-languages.md)