■H2 DB 操作2
ここではH2 Database Engineをサーバーモードで使用するときの
■データベースへの接続
ここではまずH2 Consoleの操作画面が、ブラウザ上で開かれていることを前提にします。この画面が開かれていないときは、次の方法で起動してください。両者の違いは「■H2 DBの起動と停止」を参照してください。
インストールしたH2 DBのバージョンにもよりますが、次のような画面になっていると思います(2007/10/20版ではこうなっていました)。 この画面で接続先データベースの選択(指定)と、接続を行います。
まず言語選択を、英語から日本語に変えておきましょう。
さてこの画面上で下にある、「接続」ボタンを押すことによりH2 DBのデータベースに接続します。
ただしここで注意があります。まだ「接続」ボタンは押さないでください。先に次のセクションを読んでからにしましょう。
◇H2 DBデータベースファイルの場所まずH2 DBのDB構成を書いておきます。一般的な他のRDBと変わりません。最初に「データベース」という管理単位があり、その中に「テーブル」がある、という構成です(H2の場合、この両者の間にくる「テーブルスペース」という概念はありません)。
なんらかの操作をする場合、まず対象データベースに接続してから、ということになります。
注意点というのは、H2 Console画面で「接続」ボタンを押した場合、次のどちらかの処理が行われる、という点です。まず「接続」ボタンを押すと、画面の JDBC URL で指定したデータベースに接続しようとします。このとき
・指定したデータベースがあればそこに接続する
という動作をします。 とりわけ2つ目の動作があり得ることが、重要なポイントです。なお「接続」ではなく、「接続テスト」の方でもデータベースだけは作成されます。このあたりは「H2 DBユーザー管理」でもう少し説明します。データベース作成前に先に目を通しておいたほうが良いかもしれません。
では次にH2 Console画面での JDBC URL 指定パターンと、作成されるデータベースファイルの所在についてまとめておきます。 JDBC URL で指定した jdbc:h2: の後ろが、接続(作成)しようとするデータベースの名前です。この名前部分の指定パターンによって、データベースファイルの作成場所が次のように変わります。
次の例ではデータベースファイルを、c:\work\data\ に作成し、作成するデータベース名を testdb に変更しています。
◇H2 DBデータベースファイルの場所変更
H2 Console画面で接続時に指定する JDBC URL 指定パターンにより、データベースファイルの作成場所が変わる、と説明しました。そしてその指定パターンの2番目、データベース名のみを指定したときは、H2インストールディレクトリ\bin\ がデータベースファイルの場所なのが初期状態です。
その方法はH2 DB起動時のパラメータに、baseDirキーワードを追加し、その引数にデータベースファイルの場所(パス)を指定する、というものです。
なおこの baseDirキーワードによるデータベースファイルの場所変更は、上で説明した「データベースファイルの作成場所」と競合します。 baseDirキーワードが強すぎるのです。
どういうことかというと例えば、baseDirのパスとしてc:\work\data\を指定するとそれが最優先されます。JDBC URLに~/testとしてもtestデータベースはDocument and Setting\Windowsユーザー名\に作られるのではなく、c:\work\data\~\に作られてしまいます。 この問題については作者のThomas Mueller氏に、改善要望として挙げる予定です(2008/2/3)。
・非サービス時の起動用修正
非サービス時はスタートメニューから「プログラム」−「H2」−「H2 Console」と進むことにより、H2 DBを起動します。
修正するファイルは\Documents and Settings\WindowsユーザーID\スタート メニュー\プログラム\H2にある、H2 Consoleというショートカットファイルです。このファイルのプロパティに「リンク先」がありますが、その内容を修正します(Windows2000の場合は、「タスクバーをマウス右ボタンクリックでプロパティを選択」−「詳細タブ選択」−「詳細ボタン」と進み、「プログラム」−「H2」−「H2 Console」と選択してください)。
修正後の「リンク先」の内容を全て書いておくと
・サービス時の起動用修正
サービスとしてインストールしているときは、 H2インストールディレクトリ\service\wrapper.conf を修正することによって行います。
太字の部分が追加したパラメータです。 ここのポイントは、パラメータを2つに分けて、2行追加するという点です。 追加するパラメータ自体は -baseDir "C:\WORK\DATA" と、-baseDirキーワードとその引数 "C:\WORK\DATA" の組で1つです。しかしキーワードとその引数は空白で区切られます。そのためwrapper.confファイル中のwrapper.app.parameterで指定する場合、1行では指定出来ません(区切りの空白でwrapper.app.parameterの指定が終わったと見なされる)。そのため2つに分けて2行で指定します。
以上のように修正することによって、非サービス時の起動でも、サービス時の起動でも、データベース名だけを指定したときに、対象になるデータベースファイルの場所を変更できます。 なお
以下の説明例ではこの、c:\work\data\testdb データベースを使用することにします。ここで「接続」ボタンを押して、データベース作成と接続を行います。 参考までに。一つのデータベースに対し、作成される最低限のファイルは次の4つです。
1. はデータベースのデータ本体、2. はインデックス情報、3. はトレース情報です。 そして 4. がログ情報で、n.log.dbの n の部分は連番です。このデータベースに接続する度に増えていきます。 これらのファイルを消してしまえば、データベースが削除されます。H2 DBではDROP DATABASEという構文は無いので、何らかの理由でデータベースを削除したいときは、これらファイルを削除してしまえば手っ取り早くデータベースも削除できます。 またH2 DB停止中にこれらのファイルをコピーすれば、コールドバックアップ(Cold Backup)したことになります。
なお正式なデータベース削除方法は、次の通りです。
■H2 DBの操作画面(コンソール)選択したデータベースに接続すると、次のコンソール画面が表示されます。
H2 DBに対する操作、
すぐにこれらの操作説明に行きたいところですが、先に「データベースからの切断」方法を説明します。
・データベースからの切断接続したデータベースから切断するには、コンソール画面左上にある「切断」ボタンをクリックしてください。
このボタンを押すことにより、最初の接続先データベース指定画面に戻ります。
■H2 DB 接続設定ここまではH2 DBが動作しているのと同じPC上から、H2 Consoleを使って接続する説明をしてきました。 ここでH2 DB動作PCの、外部からのアクセスを可能にする方法と、別PCで動いているH2 DBに接続する方法について説明します。 ■外部からの接続まず外部からの(別PCからの)接続を可能にするには、H2 DBの設定を変更する必要があります。
設定方法は2通りあり、一つは設定ファイルを直接修正する方法です。もう一つは設定画面から行う方法です。
・H2DB設定ファイル
H2 DBの設定ファイルは.h2.server.propertiesという名前で、これは
ただしこのファイルが無い場合もあります。インストール後、初期状態のままのときです。一度下の説明にある「H2DB設定画面」の手順で「H2コンソール設定」を表示し、「保存」ボタンを押したときにこのファイルは作成されます。 このファイルの内容を以下に例示します。これは外部からの接続を許可しない設定の例です。
webAllowOthersパラメータがfalseになっているので、外部からの接続は許可されません。これをtrueに変えることによって、外部からのアクセスが可能になります。
・H2DB設定画面H2 DB設定画面を表示する手順は次の通りです。 H2 Consoleを表示するために、H2 DBに接続します。その画面上部にある、「設定」をクリックしてください(H2 DBを終了させるときと同じです)。
そうすると次の設定画面に移ります。
このサンプルでは「クライアント接続許可」が、「ローカル接続のみ許可」にチェックされています。この場合はH2 DBが動いているのと、同じPC上でしか接続・操作できません。 これを下の「他のコンピュータからの接続を許可」をチェックに変えることにより、他のPCからH2 DBに接続して操作出来るようになります。
注意がいるのは別PCからの接続というのは、 ・他のPCからH2 Consoleで接続して操作する ・他のPCからODBC経由で接続して操作する ・他のPCからJDBC経由で接続して操作する といった状況を想定しているという点です。 例えばJ2EE環境でAPサーバーとしてTOMCATを使い、H2 DBと同じPC上でTOMCATも動かしているとします。この場合は外部からの要求はTOMCATが受け付け、TOMCAT上のJavaプログラムで処理されます つまりサーバーJavaに対して外部からアクセス可能です。しかしH2 DBにアクセスするJavaプログラム、つまりTOMCAT上で動くJavaプログラムは、H2 DBと同じPC上で動くことになります。
ということはこの場合は、H2 DBの設定が「ローカル接続のみ許可」になっていても、業務処理上は全く問題ありません。
■外部データベースへの接続自分が使っているPCから、別PCで動いているH2 DBへの接続方法ですが、特に難しいことはありません。接続先データベースを指定するときはスタートメニューから、「プログラム」−「H2」−「H2 Console」と進み、次の画面を表示しました。これまでの例では接続先ホストとしてlocalhost、つまり同じPC上で動いているH2 DBを指定してきました。
外部PCのH2 DBに接続するには、このlocalhostの部分を変更するだけです。 ここを相手先PCのホスト名、もしくはIPアドレスに変えてから、「接続」ボタンを押してください。この場合、相手先PCが「外部からの接続許可」を設定済であることが前提です。
|