Firebird関連

2006/04/03 更新

Firebird の SQL文についてのおぼえがきはFirebird の SQL文(おぼえがき)にあります。

Zope/Python 関連のインストールや使い方については、Firebird の DAを使うを参考にして下さい。

1.書籍等の情報

私のもっているのは、以下の書籍

インターネット上のリソースとしては、Firebird Wiki がお勧めです。

2.Firebird のインストール

 Windows の場合は、本家 http://www.firebirdsql.org/ からバイナリインストーラー形式のものをダウンロードしてくれば良いでしょう。

 Linux/BSD で、ソースからコンパイルしたい方は、ソースは本家 からダウンロードできますので、最新のソースアーカイブをダウンロードしてきて、
# bzcat Firebird-1.5.0.src.tar.bz2 | tar xvf -
# cd firebird15
# ./autogen.sh
# make
# make install

で、コンパイルできます。

 例えば、super server 版をサポートしているアーキテクチャ(Linux)で、isqlなどのコマンドで、行編集機能を使いたい場合は、
./autogen.sh --with-editline --enable-superserver
とします。どんな引数が使えるかは ./autogen.sh --help としてみて下さい。(ただし、出てくるすべての optionが機能しているわけではないようです)

 RPM 等ディストリビューションに対応したパッケージが出ていれば、それを使った方が良いでしょう。

 Gentoo の場合は、 http://blog.so-net.ne.jp/nakagami/2005-06-21 を参照して下さい。

FreeBSD の場合は、ports からインストール、つまり
# cd /usr/ports/databases/firebird
# make install

とすれば、良いでしょう。

その場合、(FreeBSDで動く) Classic Server版は、inetd から起動されるので、/etc/rc.conf に
inetd_enable="YES"

の1行が必要です。

/etc/hosts.allowに
fb_inet_server : localhost : allow
fb_inet_server : ALL : deny

と入れておくと、localhost からの接続しか受け付けなくなります。

3.使ってみる

 Python/Zopeでの使い方は省略し、ここでは、Firebirdを使う上で最低限のコマンドについて例示します。

UNIX系の場合、root権限を持っていると、-user -pass の指定がなくても良いようです(SYSDBA の権限で実行できる)。

3-1.パスワードの変更

SYSDBA のパスワードを newpass に変更します。

C:\work>gsec -user SYSDBA -pass masterkey
GSEC> modify SYSDBA -pw newpass
GSEC> quit

3-2.ユーザーの追加

C:\work>gsec -user SYSDBA -pass masterkey
GSEC> add foo -pw bar
GSEC> quit

その他は gsec -h で調べてください。

3-3.データーベースの作成

isql -user foo -pass bar

でログインしたあと

SQL> create database 'localhost:/some/path/file.fdb' PAGE_SIZE 8192 DEFAULT CHARACTER SET EUCJ_0208;

で、データベース /some/path/file.fdb が文字コードが euc-jp で作成されます。

この時、/some/path に、ユーザー firebird のファイル作成権限がなくてはなりません(UNIX系の場合)。

文字コードを utf-8 にしたいときは UNICODE_FSS を、Shift JIS にしたい時には、SJIS_0208 を DEFAULT CHARACTER SET に 指定します。

このあと、isql コマンド内で引き続き、SQL文が使えます。最後に

SQL> quit;

で isql を終了します。

3-4.データーベースへの接続

2-3.と同じく isql でログインした後

SQL > connect  'localhost:/some/path/file.fdb';

で /some/path/file.fdb のデータベースに接続できます。

3-5.データベースのバックアップとレストア

バックアップの例

$ gbak -b -user SYSDBA -pass masterkey foo.fdb foo.fdb.backup

レストアの例

$ gbak -r -user SYSDBA -pass masterkey foo.fdb.backup foo.fdb

Firebird 1.x の場合は、foo.fdb が存在する場合でも -r で上書きでレストアされますが、 Firebird 2.0 では「foo.fdb が存在する -rep オプションを使え」というようなメッセージがでます。ですので、Firebird 2.0 以降で上書きレストアするような場合
$ gbak -rep -user SYSDBA -pass masterkey foo.fdb.backup foo.fdb
とします。 

3-5.バックアップするファイルについて

 Firebird では、データベースとファイルシステム上のファイルが1対1に対応します。ですので、データベースのバックアップというと、gbak を使う他に、データベースファイル自体をコピーして取っておくことができます。

データベースのファイルとは別のファイルに保存されているものもあります。例えば、ユーザーアカウント情報 (gsecで取り扱われるもの)は、Firebirdをインストールしたディレクトリの security.fdb に保存されています。

データベースファイル(.fdb)の他に、Firebird をインストールしたディレクトリ (普通は、/usr/local/firebird)にある以下のファイルのバックアップを取っておけば良いでしょう。

3-6.サービスについて(Windows の場合)

 Firebirdをインストールすると、以下の2つのサービスが登録されます

 Firbird Guardian Service は、Firebirdのサーバープロセスを監視して、落ちているときにログにメッセージを出したりしているもののようで、開発環境では、特に必要ではないもののようです。(停止していても動作上問題なし)

 Firbird Server も、開発環境であれば、自動にする必要はなく、手動にしておき、必要なときだけ起動するようにすればよいでしょう。

4.その他

4-1.関連リンク

4-2.感想・その他

 1データーベース=1ファイルというのが、わかり易くて、とても良いと思います。チューニングパラメータが一切ないのも、「管理が楽」と、良い方にとれば、何の問題もありません。

 なお、情報を集める時には、「Firebird」 よりは「InterBase」というキーワードで探したほうがより良い結果が得られるでしょう。InterBase 6.0 と Firebird 1.0はほぼ同じ機能と考えてよいでしょう。最近は、Firebird の情報が増えてきました。InterBase の情報は古いので見るのはやめたほうがよいかも知れません。


Zope メモ