MySQL Migration Toolkitを使用してのOracleからの移行 その2

前回はMySQLのマイグレーションツールキットの概要を説明しました。
今回は、マイグレーションツールキットを使用した具体的な移行方法について書いてみたいと思います。

MySQLマイグレーションツールキットでは、移行元DBと移行先DBに直接接続して移行を実施するダイレクト移行モードと、移行エージェントを目的のサーバにインストールしてそこから情報を収集させるエージェントベース移行モードがあります。

ただし、version1.1.14現在では、エージェントベース移行モードは選択できません(見えてますが・・・)、開発者の言うところによると、この機能はまだ未実装なので使えるようになっていないとのこと。将来的にはマイグレーションツールキットに入るというよりは、MySQL Workbenchに入るかもしれないという情報もあります(未確定)。

エージェントベース移行モードの目的としては、マイグレーションツールキットがサポートしていないOSにエージェントだけ入れてから、ツールキット⇔エージェント間で通信させて、エージェント⇔目的のDBがローカルにやり取りできるようにするものとのことです。ですので、ダイレクトモードを使用する場合は、ソースDBか、ターゲットDBのどちらかのマシンにツールキットをローカルにインストールするのがお勧めとドキュメントされています(どちらか片方だけでもDBに対してローカルアクセスとなる=ネットワーク高負荷を避ける)。もちろん両方ともSolaris上にDBがある場合は全部リモートにせざるを得ないのが現状ですけど・・・

MySQLマイグレーションツールキットのバイナリが提供されているのは現在のところ、以下となります。

・Windows 2000, XP, Vista, 2003
・Linux(グラフィカルデスクトップを導入済であること、Kernel Version 2.4または2.6)
・Mac OS X 10.4以上

今回は、ダイレクト移行モードを使って説明します。

1.移行元DBへの接続設定
2.移行先DBへの接続設定
3.移行元DBへ接続しスキーマ情報を取得
4.移行先DBへの接続テスト

それでは、個別に見てみましょう。
1.移行元DBへの接続設定

まず移行元(ソースDB)への接続情報を入力します。Oracleからの移行ですので、以下の情報を入力します。リモートサーバで稼動するOracle10gに接続します。

Database System : Oracle Database Server
Driver : Oracle Thin JDBC Driver using SID

※Oracle Thin DriverのJARファイルの場所をマイグレーションツールキットで指定する必要があります。
Thin Driverがロードされていない状態ですと、JARの場所を指定するように促す画面が表示されるのでダウンロード+場所指定を行ってください。ojdbc14.jarをダウンロード、指定すればOKです。

※ツールの起動時に、×Initialized Java loaderエラーになり起動できないケースがあります。

この問題は以下の対策で解決します。
・ツールキットの起動をコマンドラインから行い、-debugオプションを付ける

C:\MySQLMigrationToolkit5.0>MySQLMigrationTool.exe -debug





SID : ORA1 (オラクルDBでデータベースを作成したときのSIDを指定。Oracle Netで使用できるようにオラクル側でconfigしてください)
Hostname : IPアドレスまたは、ホスト名(名前解決できる必要があります)。通常はIPで十分でしょう。
Port : 1521 (Oracleリスナのポート番号を指定します)
Username : sys as sysdba
Password : sysのパスワード
入力したら[next]ボタンを押します。

または、

JDBCを使い慣れた方でしたら、その下のAdvanced>>ボタンを押します。Advanced Settingsウィンドウが開いてJDBC URLを直接入力できる画面が現れます。ここにJDBC URLをダイレクトに入力してもOKです。

例:jdbc:oracle:thin:sys as sysdba/oracle@10.14.3.88:1521:ORA1
※通常フィールドにも値を入れないとnext>ボタンが有効化しないのでJDBC-URLを使う場合は適当な値を入力してください

2.移行先DBへの接続設定

移行先のデータベースへの接続情報を入力します。
今回はローカルサーバで稼動しているMySQLを移行対象とします。

Hostname : localhost または 127.0.0.1などのループバックIP
username : root
password : ユーザパスワード

こちらもさきほどのOracleの場合と同じくJDBCを使用しているので、Advanced >>ボタンからJDBC URL入力フィールドを表示させて直接入力する手段もあります。

入力したら[next]ボタンを押します。

3.移行元DBへ接続しスキーマ情報を取得
4.移行先DBへの接続テスト

が自動的に実行されます。Advanced>>ボタンを押すとログが表示されます。
右上にイルカが泳ぐのを楽しく鑑賞しましょう。
最後に、Execution completed successfullyと出れば4までの処理が完了です。

※ここで、OracleのSIDが間違っていたり、OracleのサーバIPが間違っていたりするとエラーとなります。
Advanced >>ボタンを押してログを確認してください。以下の例��は間違ったIP(Pingも通らないような)を指定しているた���、「接続を確立できません」と出ています。OracleのTNSListenerが応答しなかったり、サービス名やSIDがインスタンスに登録されていなかったりした場合も同様にエラーとなりますので、このログをチェックして対処してください。

次回は移行対象のスキーマを選択するところから説明したいと思います。