

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

# 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\_CHAR/TO\_NUMBER/TO\_DATE 関数をチェックします。　 | 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/)」