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 へのデータ移行を実行します。
- オブジェクト構造移行: テーブルオブジェクトを移行します。
- 既存データ移行: 既存のすべてのデータを移行します。
- オブジェクト構造移行: 外部キーを移行します。
既存データ移行が完了すると、移行の進捗状況は [オブジェクト構造移行 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 のデータ型をサポートしていません:
bfile
、interval year to month
、interval 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 ユーザーマニュアルアカウントの作成をご覧ください。
必要なアクセス権で説明しているように、アカウントには特定のアクセス権が必要です。
移行タスクの設定
移行タスクを作成するには、次の手順に従います。
DTS コンソールにログインします。
左側のナビゲーションペインで [データ移行] をクリックします。
[移行タスクの作成] をクリックします。
オンプレミス 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 インスタンスのホワイトリストに追加します。
移行オブジェクトと移行タイプを設定し、[事前チェックして開始] をクリックします。
移行タイプ: これにはオブジェクト構造移行と既存データ移行が含まれます。デフォルトでは、[オブジェクト構造移行] と [既存データ移行] がチェックされています。
移行オブジェクト: 移行するオブジェクト (データベース、テーブルまたはカラム) を指定します。
注意: オブジェクトが RDS インスタンスに移行した後も、オブジェクト名は Oracle のものと変わりません。オブジェクトがソースとターゲットで異なる名前を持つ場合、オブジェクト名マッピング機能を使用します。
移行タスクが正式に開始される前に、事前チェックが実行されます。事前チェックが失敗した場合は、[失敗] をクリックして理由と解決方法を表示します。それに応じて問題を修正し、成功するまで事前チェックを繰り返し実行します。
事前チェックが成功したら、移行タスクを開始します。移行のステータスと進捗状況は、タスクリストで確認できます。