Data StudioおよびOptim Development Studioはデータベース管理者およびアプリケーション開発者に対して統合された包括的なパッケージ・ツールを提供します。Eclipseをベースとしているので開発ツールとしてすでに幅広く普及しており、ツール自体への慣れという点では非常に敷居の低いツールといえます。このツールを利用することで、データベース内のテーブルやインデックス、ビューやストアド・プロシージャの編集、あるいはさまざまな言語でのアプリケーションを開発することがが可能です。本記事では異なるデータベース間でのデータ・オブジェクト移行機能をご紹介していきます。
さて、タイトル内にもData StudioとOptim Development Studioという2つの製品名を併記しています。これらの違いを簡単に述べると、Data Studioは無償で使用できるけど機能がある程度制限されたツール、Optim Development Studioは有償だけどData Studioにはない幅広い機能を提供するツールとなります。今回ご紹介するデータ・オブジェクトの移行機能は、無償のData Studioでも有償のOptim Development Studioでもご利用いただけます。また有償版のOptim Development Studioは下記URLより60日間の試用版をインストールいただけますのでお気軽にご試用いただけます。
Data StudioまたはOptim Development Studioを利用することで、IBM製DBMSであるDB2やInformixのみならず、MySQLやOracle、SQL serverなどさまざまなDBMSへのJDBC接続を作成することが可能です。(ただし後ほどご紹介するデータベース・オブジェクトの移行ができるDBMSは限定されます。)これらのDBMSへJDBC接続することで、データの挿入や削除、テーブルなどのオブジェクト作成、さまざまなプログラム言語によるアプリケーション開発が可能となります。
さて、ここからDB2とOracleへのJDBC作成の例をご覧いただきます。
DB2 for Linux, Unix and WindowsへのJDBC接続
ここではオープン系のDB2で最新バージョンとなるDB2 9.7 for LUW FP1への接続をご紹介いたします。プラットフォームはWindows XPです。Optim Development Studioは2010年1月時点で最新バージョンのV2.2.0.1を利用しています。(図1)
図1. Optim Development Studioの起動画面
インストール直後、最初に起動すると以下のような画面が表示されます。(図2)ここで簡単な製品チュートリアルなどを見ることができます。
図2. Optim Development Studioの「ようこそ」画面
通常Data Studio又はOptim Development Studioでデータベース開発を実施する際は、画面構成を「データベース開発」パースペクティブにしておくと便利ですので、「データベース開発」パースペクティブに切り替えます。画面上部の「ウインドウ」―「パースペクティブを開く」―「データベース開発」を選択します。そうすると以下のような画面構成になります。(図3)
図3. 「データベース開発」パースペクティブの初期画面
この画面の左下に「データ・ソース・エクスプローラー」ビューが用意されています。ここで、接続したいデータベースのJDBC接続を作成します。「データ・ソース・エクスプローラー」内のデータベースフォルダ上で右クリックし、「新規」を選択します。(図4)
図4. データベースへのJDBC接続作成画面
すると以下のような画面へ遷移します。(図5) ここで「データベース・マネージャーの選択」の中から、今回ターゲットとなる「DB2 for Linux, UNIX および Windows」を選択します。データベース名(ここではSAMPLEというデータベース名)、ホストのIPアドレス(Optim Development StudioがDB2 serverと同じマシン上であれば、localhostで大丈夫です。)、ポート番号(デフォルトでDB2をインストールしていれば50000番)とします。ユーザー名とパスワードはDB2のインスタンス・オーナーのものを記入してください。
図5. DB2での新規接続構成画面
左下にある「接続のテスト」ボタンを押すと、上記設定が正しく設定されていれば下の図のようなポップアップ画面が表示されます。(図6)
図6. 新規接続に成功した場合に表示されるポップアップ画面
ここまでで、「終了」ボタンを押すとJDBC接続が作成されます。「次へ」ボタンを押すと、事前に用意した物理データモデルを導入することも可能ですが、本記事では省略します。接続に成功すると、ウインドウ左下の「データ・ソース・エクスプローラー」ビューにデータベースのJDBC接続が作成されます。(図7)
図7. DB2データベースへのJDBC接続が成功した図
テーブルやビューやインデックス、ストアド・プロシージャなどのデータベース・オブジェクトは、スキーマごとに整理されています。(図8)
図8. スキーマごとにデータベース・オブジェクトが整理された図
次にOracle 11gへのJDBC接続を作成してみます。(現状のData StudioとOptim Development Studioのバージョンでは、Oracle 10g, 11gへの接続を正式サポートしています。)DB2で新規接続をしたように、「データベース・エクスプローラー」内で右クリックして「新規」を選択します。下記のように「データベース・マネージャーの選択」タブの中で「Oracle」を選択します。Oracleの場合、JDBCドライバーの選択では、10gと11gとバージョンごとに指定するドライバーを区別します。ここでは「Oracle 11 – Oracle Thin Driver デフォルト」を指定します。SIDとは、DB2で言うところのデータベース名を指定します。以下ホスト(IPアドレス)、ポート番号、ユーザー名、パスワードを指定します。(図9)
図9. Oracle DBへのJDBC新規接続の作成
DB2の接続と同様の手順を踏むと接続に成功します。「データ・ソース・エクスプローラー」には以下のようにOracleのデータベース接続も作成されたことを確認できます。(図10)
図10. データ・ソース・エクスプローラーへの登録画面
前章までで、DB2とOracle双方のデータベースへの接続作成に成功しました。ここからは、Oracleのデータベース上のデータ・オブジェクトを、DB2のデータベース上に移行・展開する手順を紹介していきます。それに先立ち、DB2側で事前に行っておくべき設定をご紹介します。
DB2 9.7から、Oracle特有のデータ・タイプやSQL構文、また手続き型言語のPL/SQL言語などが新たにサポートされ始めました。これらOracle特有機能をDB2が解釈できるようにするためのレジストリー変数がDB2 9.7では用意されています。これがDB2_COMPATIBILITY_VECTORというレジストリー変数ですが、12ビットの16進数で表現され、どのビット列を立てるかで、どのOracle特有機能を有効化するか無効化するかを細かく設定することができます。詳細についてはDB2 9.7のインフォメーション・センターの情報をご参照ください。
現状、このレジストリー変数は初期状態では無効化されています。今回のようにOracleからDB2へのデータ・オブジェクトの移行を検討する場合、DB2のOracle特有機能をサポートする設定にすべきかを検討し、必要に応じてこのレジストリー変数を設定する必要があります。
以下、レジストリー変数の設定方法を紹介していきます。この操作は各DB2インスタンスレベルでの設定変数となりますので、今回ご紹介しているData StudioやOptim Development Studioでは行えません。したがって、DB2に付随するコマンド行プロンプトなどのターミナルからコマンド入力します。以下キャプチャー画面にあるとおり、(図11)
DB2_COMPATIBILITY_VECTOR=ORA |
と設定すると、すべてのOracle特有機能をサポートするモードに設定することができ便利です。「ORA」はワイルド・カードのようなもので、全てのOracle特有機能をサポート可能にします。この操作をした後は、一度DB2インスタンスの再起動が必要です。
図11. CLP画面からのDB2_COMPATIBILITY_VECTORレジストリー変数の設定例
ここから実際にOracleデータベース上のデータ・オブジェクト、ここでは「EMPLOYEES」表を移行する例を見てみましょう。
図12. Oracleデータベース上のテーブル・オブジェクトをコピーする
図に示す通り(図12)、GUIを使って直感的で分かりやすい操作となっています。とりあえずコピーします。
次にDB2データベース上で、移行先となるスキーマ上で右クリックし、下図のように「貼り付け」を選択します。(図13)
図13. DB2データベース上にテーブル・オブジェクトを貼り付ける
「貼り付け」を選択すると、以下のような画面へと遷移します。(図14)
図14. データ・オブジェクトの貼り付け詳細オプション画面
ここでソース・ターゲットとなるDB2のデータベース上にオブジェクトのみを移行するのか(ここではテーブル・オブジェクトのDDL実行のみ)、オブジェクトと中身のデータも移行するかを選択できます。それ以外にも制約、エラー処理の対応方法といった色々なオプション指定をカスタマイズすることができます。
すべてのオプションを指定し終わると以下のような画面へ遷移し(図15)、実行されるDDL文が表示されます。なお、作成されたDDL文をよく見てみると、DB2INST1.DEPARTMENTS表のCREATE文の中のカラム定義に、Oracle特有のデータ・タイプであるVARCHAR2文字列が定義されています。このように、これまでOracle特有であり、DB2ではサポートしていなかった文字列タイプが、今回DB2 9.7から使えるようになりました。そうした観点から、これまでよりも格段にデータベースの乗り入れなどのコストを下げることに成功しています。
図15. データ・オブジェクトの貼り付け作業DDLのプレビュー
「終了」ボタンをクリックすると、実際にデータ・オブジェクト作業が実行されます。以下のようにデータ・オブジェクトがDB2のデータベース上に移行されたことが確認できます。(図16)
図16. DB2データベースへのデータ・オブジェクト移行完了画面
以上で、Data StudioまたはOptim Development Studioを利用して、OracleからDB2へデータ・オブジェクト(今回の例ではテーブル・オブジェクト)を簡単に移行できる機能をご紹介しました。