すべてのプロダクト
Search
ドキュメントセンター

:オンプレミス Oracle から RDS for MySQL へのデータ移行

最終更新日:Mar 19, 2020

DTS は、オンプレミス Oracle データベースから RDS for MySQL データベースへのデータ移行に際して、オブジェクト構造移行および既存データ移行を行うことができます。このドキュメントでは、DTS コンソールでデータ移行タスクを設定して、オンプレミス Oracle データベースから RDS for MySQL データベースにデータを移行する方法を紹介します。

背景

移行タイプ

Oracle から RDS for MySQL への移行は、オブジェクト構造移行と既存データ移行のみをサポートします。2 つの移行タイプの制限事項は次の通りです。

  • オブジェクト構造移行

    • DTS は、移行オブジェクトの構造定義をターゲットインスタンスに移行します。
    • オブジェクトとしてはテーブルのみがサポートされています。他のオブジェクト (ビュー、シノニム、トリガー、プロシージャ、関数、パッケージ、ユーザー定義タイプなど) はサポートされていません。
  • 既存データ移行

    • DTS は、移行されるオブジェクトのすべての既存データをソースからターゲットに移行します。
    • 移行中のオンプレミス Oracle データベースでのデータ変更は、ターゲットの MySQL に移行されないことがあります。データの一貫性を確保するために、移行中にソース Oracle データベースにデータを書き込まないことをお勧めします。

移行プロセス

DTS は、次の手順に従って、Oracle から RDS for MySQL へのデータ移行を実行します。

  1. オブジェクト構造移行: テーブルオブジェクトを移行します。
  2. 既存データ移行: 既存のすべてのデータを移行します。
  3. オブジェクト構造移行: 外部キーを移行します。

既存データ移行が完了すると、移行の進捗状況は [オブジェクト構造移行 100%]、[既存データ移行 100%] となりますが、移行ステータスは [移行中] になります。これは、移行タスクが外部キーを移行していることを意味します (3. を参照)。この状況で手動でタスクを終了しないでください。手動でタスクを終了した場合、移行データの矛盾が発生する可能性があります。

データ型のマッピング関係

MySQL で定義されたデータ型は Oracle とは異なるため、DTS はオブジェクトの移行中にソースのデータ型をターゲットのデータ型にマップします。

次の表は、Oracle と MySQL 間のマッピング関係を示しています。Oracle の一部の特殊データ型は、DTS ではサポートされていません。

Oracle データ型 MySQL データ型 DTS でのサポート有無
varchar2(n [char/byte]) varchar(n) サポート
nvarchar2[(n)] national varchar[(n)] サポート
char[(n [byte/char])] char[(n)] サポート
nchar[(n)] national char[(n)] サポート
number[(p[,s])] decimal[(p[,s])] サポート
float[(p)] double サポート
long longtext サポート
date datetime サポート
binary_float decimal(65,8) サポート
binary_double double サポート
timestamp[(fractional_seconds_precision)] datetime[(fractional_seconds_precision)] サポート
timestamp[(fractional_seconds_precision)] with local time zone datetime[(fractional_seconds_precision)] サポート
timestamp[(fractional_seconds_precision)] with local time zone datetime[(fractional_seconds_precision)] サポート
clob longtext サポート
nclob longtext サポート
blob longblob サポート
raw -/- 非サポート
long raw -/- 非サポート
bfile -/- 非サポート
interval year(year_precision) to month -/- 非サポート
interval day(day_precision) to second[(fractional_seconds_precision)] -/- 非サポート

注意:

  • char(n) の場合、定義長 n が 255 を超えると、DTS はその型を varchar(n) に自動的に変換します。
  • MySQL は、次に示す Oracle のデータ型をサポートしていません: bfileinterval year to monthinterval day to second。移行するテーブルにこれらのデータ型が含まれている場合は、MySQL の対応するデータ型に置き換えることをお勧めします。これにより、よりスムーズなオブジェクト構造移行が可能になります。
  • Oracle の timestamp with [local] time zone にはタイムゾーンが含まれていますが、MySQL の timestamp にはありません。このタイプのデータを移行する場合、DTS はデータを UTC タイムゾーン形式に変換してから、MySQL に格納します。

前提条件

必要なアクセス権

特定のアクセス権を持つ Oracle アカウントと RDS インスタンスアカウントが必要です。移行タスクを設定する前に、アカウントに次の権限が与えられていることを確認してください。

移行タイプ オンプレミス Oracle データベース MySQL インスタンスのターゲット RDS
オブジェクト構造移行 スキーマ所有者 移行するデータベースの読み書き権限
既存データ移行 スキーマ所有者 移行するデータベースの読み書き権限

手順

以下の節では、オンプレミス Oracle データベースから RDS for MySQL データベースにデータを移行するために DTS 移行タスクを設定する方法について説明します。

RDS インスタンスのデータベース作成

データ移行中に、移行先データベースがターゲット RDS インスタンスで定義されていない場合、DTS によって自動的に作成されます。データベース名が RDS 定義標準に準拠していない場合は、移行タスクを設定する前に RDS コンソールでターゲット RDS データベースを作成する必要があります。

RDS 定義標準によれば、RDS データベース名は 64 文字以内で、英小文字、数字、アンダースコアおよびハイフンが使用できます。名前の最初の文字は英字で、最後の文字は英字または数字でなければなりません。

移行アカウントの作成

移行タスクを設定するときは、ソース Oracle データベースとターゲット RDS インスタンスの両者に移行アカウントを作成する必要があります。

  • RDS for MySQL 移行アカウントの作成と認可の詳細については、RDS ユーザーマニュアルアカウントの作成をご覧ください。

必要なアクセス権で説明しているように、アカウントには特定のアクセス権が必要です。

移行タスクの設定

移行タスクを作成するには、次の手順に従います。

  1. DTS コンソールにログインします。

  2. 左側のナビゲーションペインで [データ移行] をクリックします。

  3. [移行タスクの作成] をクリックします。

  4. オンプレミス Oracle データベースとターゲット RDS インスタンスの、次に示す接続情報を設定してから、[ホワイトリストを承認して次のステップに進む] をクリックしてください。

    • タスク名。デフォルトでは、DTS によって自動的に移行タスクの名前が生成されます。名前は変更することができ、一意である必要はありません。

    • ソースデータベース

      • インスタンスタイプ: [オンプレミスデータベース] を指定します。
      • インスタンスリージョン: ソースインスタンスに最も近いリージョンを指定します。
      • データベースエンジン: [Oracle] を指定します。
      • ホスト名または IP アドレス: ソース Oracle データベースにアクセスするための IP アドレスを指定します。アドレスはパブリックアクセスモードでなければなりません。
      • ポート: Oracle データベースのリスナーポートを指定します。
      • SID: Oracle インスタンスの SID を指定します。
      • データベースアカウント: Oracle データベースのアクセスアカウントを指定します。
      • データベースパスワード: Oracle アクセスアカウントのパスワードを指定します。
    • ターゲットデータベース

      • インスタンスタイプ: [RDS インスタンス] を指定します。
      • インスタンスリージョン: ターゲット RDS インスタンスのリージョンを指定します。
      • RDS インスタンス ID: ターゲット RDS インスタンスのインスタンス ID を指定します。RDS インスタンスは、クラシックネットワークまたは VPC ネットワークのいずれにも設置できます。
      • データベースアカウント: RDS インスタンスへのアクセスアカウントを指定します。
      • データベースパスワード: RDS アクセスアカウントのパスワードを指定します。

    この段階で、DTS は DTS サーバーの IP アドレスをターゲット RDS インスタンスのホワイトリストに追加します。

  5. 移行オブジェクトと移行タイプを設定し、[事前チェックして開始] をクリックします。

    • 移行タイプ: これにはオブジェクト構造移行と既存データ移行が含まれます。デフォルトでは、[オブジェクト構造移行] と [既存データ移行] がチェックされています。

    • 移行オブジェクト: 移行するオブジェクト (データベース、テーブルまたはカラム) を指定します。

    注意: オブジェクトが RDS インスタンスに移行した後も、オブジェクト名は Oracle のものと変わりません。オブジェクトがソースとターゲットで異なる名前を持つ場合、オブジェクト名マッピング機能を使用します。

  6. 移行タスクが正式に開始される前に、事前チェックが実行されます。事前チェックが失敗した場合は、[失敗] をクリックして理由と解決方法を表示します。それに応じて問題を修正し、成功するまで事前チェックを繰り返し実行します。

  7. 事前チェックが成功したら、移行タスクを開始します。移行のステータスと進捗状況は、タスクリストで確認できます。