木曜日 12 04, 2008

前回はMySQLマイグレーションツールキットで移行元DBと移行先DBへの接続設定までを行いました。
今回は残りの以下の部分について説明します。

5.移行対象のスキーマを選択(グラフィカルに表示される)
6.移行元DBから情報をリバースエンジニアリング(抽出)
7.移行対象オブジェクトの選択(テーブル、View、ストアドルーチンその他)
8.移行元⇔移行先間のオブジェクトマッピング指示(自動または手動)
9.SQL(DDL: CREATE TABLE文)生成
10.エラーリポート(自動移行判定できなかったデータタイプなどが表示され、必要ならば手動でSQLを修正する)
11.オンラインでデータベースオブジェクトを移行先で生成/生成SQL文をファイルに出力
12.データのバルク転送(オンラインで転送/データロードSQL生成)
13.最終結果の表示、リポートファイルへの出力

それではまた例によって個別に見てみましょう。

5.移行対象のスキーマを選択(グラフィカルに表示される)

移行対象にするスキーマの一覧が移行元DBから抽出されてグラフィカルに表示されています。
今回はEMP表を含むSCOTTスキーマを選択してみます。

選択して、Next>ボタンを押すとリバースエンジニアリングが開始され、データベースからメタデータが抽出されます
(スキーマ配下のテーブルのカラム情報、インデックス情報、制約情報、関連するストアドルーチン、View情報が取得されます)

6.移行元DBから情報をリバースエンジニアリング(抽出)

ここで、Execution completed successfully.と出力されれば処理OKです。

7.移行対象オブジェクトの選択(テーブル、View、ストアドルーチンその他)

次に移行対象とするオブジェクトの選択を行います。左側の箱に入っているのが今回移行対象になるもの、右側の箱に入っているのが今回の移行対象外になるオブジェクトです。
Viewやストアドプロシージャが存在する場合、ここで移行対象として選択します。Detailed selection >>を押します。
今回は既に自動でSCOTTスキーマ配下のテーブルである以下の4つの表が移行対象の方の箱に表示されています。

・SCOTT.BONUS
・SCOTT.DEPT
・SCOTT.EMP
・SCOTT.SALGRADE

8.移行元⇔移行先間のオブジェクトマッピング指示(自動または手動)

オブジェクトマッピング処理ではまずOracleスキーマとOracleテーブルの移行方式(migration method)を選択します。
ここでは、Oracle DefaultとGenericがあるのでOracle Defaultを選択しましょう。GenericはGeneric JDBCなどで接続した場合に特定のデータベースの特性を考慮しないで一般的な移行を行う場合に選択します。(Generic JDBCではGenericしかもちろん選択できません)

ParameterはキャラクターセットやCollation規則を設定します。入力するデータにしたがってMultilanguageにするのかLatin1にするのかを選択しましょう。
ここではマルチバイト文字が格納される可能性を前提としてMultilanguageを選択してみます。

9.SQL(DDL: CREATE TABLE文)生成

next>ボタンを押すと、移行処理が実行され、DDLが生成されます。

Execution completed successfully.と表示されれば出力成功です。

10.エラーリポート(自動移行判定できなかったデータタイプなどが表示され、必要ならば手動でSQLを修正する)

next>ボタンを押すと、移行されたオブジェクトについての移行結果画面が表示されます。
右上のFileterドロップダウンボックスから、Show All Objects with Messagesを選択して、テーブルの各カラムごとに移行がうまく行ったかを確認します。

Advanced>>ボタンを押して、移行されたDDLを確認することが出来ます。

SQL Create Script of Selected Objectテキストエリアが表示されている状態でテーブルをクリックすると、SQLが表示されます。DECIMALの桁数などはオブジェクトツリーでは見えないので、確認した方が良いと思います。

また、この画面で適宜出力予定のSQLを変更することが出来ます。直接SQLを編集して、Apply Changesボタンを押します。
(望ましくないデータ型に変換されそうになっている場合、手動で変更してください)

それから、Migrated Objectのツリーのカラム名をシングルクリックすることでも、カラム名だけは変更可能です。(データ型は変更しないので注意)

11.オンラインでデータベースオブジェクトを移行先で生成/生成SQL文をファイルに出力
next>を押すとスキーマ作成方法選択画面になります。

今すぐにオンラインで対象データベースにスキーマとテーブルを作成するのか、とりあえずSQL文を生成しておくのかを選択できます。今回はオンラインで作成してみます。

次に結果が表示されます。FilterをShow All Objects with Messageにしてテーブルやカラムが正常に作成されているかを確認します。

12.データのバルク転送(オンラインで転送/データロードSQL生成)

次に、データ転送についての設定を行います。
今すぐにオンラインで対象データベースにデータを一括転送するのか、とりあえずINSERT-SQL文を生成しておくのかを選択できます。今回はオンラインで作成してみます。

※生成されるInsert文には、最初に外部キー制約を無効にして一気にデータをロードできるようなものが書かれます。

13.最終結果の表示、リポートファイルへの出力

最後にサマリが表示されて完了です。リポートをファイルに出力することも可能です。
また、マイグレーション全体をLuaスクリプトとして出力することも可能です。

これを使えば、GUIにインタラクティブに各設定するスタイルではなく、スクリプトとして移行処理を実行させることが可能です。中身をカスタマイズすれば、より細かい動きをマイグレーションプロセスに追加することも可能です。(特定のデータの変換処理を入れ込むなど)

次回は、移行されたEMP表について検分してみたいと思います。
(今回は手動で何も変更しない完全自動移行です。どのように移行されたかをBefore/Afterで見てみたいと思います)

This blog copyright 2009 by naokitakemura