#contents

*FAQ [#t8999f9b]
**ライセンス [#m06d6500]
:Q|ライセンスはどうなってるの?(特に商利用・配布)
:A|IPLという独自のライセンスになっています。公開されたデータベース本体や
ライブラリ、ツールの利用や配布に関しては商用利用も含めてフリーですが、
公開物のソースファイルに対して変更を加えたものを使用する場合、その変更内容
に関するソースを公開する必要があります。IPLに関する詳しい情報は
[[ボーランドのIPLに関するサイト:http://info.borland.com/devsupport/interbase/opensource/IPL.html]]
を参照して下さい。

**プラットフォーム [#i61f7fdb]
:Q|どのプラットフォームに対応しているの?
:A|Windows, Linux, FreeBSD, Solaris, MacOSX などです。

**データベースファイル [#xb38abd9]
:Q|データベース本体はどこに置くの?
:A|データベースの作成時に、自由な場所に自由な名前・拡張子でファイルとして置きます。専用の領域を確保したりする必要はありません。また、別の名前・ファイル名を付けることにより、同時に複数のデータベースも管理できます。ファイル管理に関しては、非常に自由度が高く扱いやすいデータベースソフトと言えるでしょう。データベースが停止している状態ならば、OSのコピーコマンドで単純にコピーやバックアップすることも出来ます。ただし、これは緊急時の方法です。通常はgbakコマンドでバックアップします。

:Q|どこでも置けるというのは便利だけど、逆にセキュリティの弱点にならないの?
:A|データベースアカウントが漏れると、確かに攻撃を受けやすくなります。
&br;
Firebird1.5以降では、データベース名を既存のエイリアスのみで指定出来るように制限
したり、データベースを作成できるディレクトリを制限してしまう機能があります。
デフォルトではオフとなっていますので、設定ファイルを変更してみましょう。

:Q|色々な拡張子が使われているのはなぜ?
:A|歴史的経緯と、Windows Me/XPのファイル保護機能による速度低下を防ぐためです。Firebirdでは、拡張子は自由に選べますが、".fdb"が推奨されています。古いIBでは".gdb"を、最近のIBでは".idb"を推奨しているようです。~
拡張子の選択が適切でないと、Windows Me/XPの場合はOSの処理により極端に速度が低下しますので注意が必要です。~
・参照: [[Windows XP 復元機能によりファイルへの書き込み操作に遅延が発生する場合がある。:http://support.microsoft.com/kb/873218/ja]]

:Q|ファイルは複数?それとも1個?
:A|基本的に、テーブルが何個あっても1つのデータベース本体のファイルは1個です。しかし、OSの制限や管理の都合で1ファイルの大きさを小さくしたい場合は、マルチファイル構成のデータベースも構築できます。マルチファイルの時でも、テーブルの個数とファイルの個数には何の関係もありません。接続時なども含めて、論理的には1つのファイルとして扱います。

:Q|扱えるファイルサイズの制限は?
:A|シングルファイルデータベースの場合は64TByteまでですが、通常はOSの制限に依存します。OSの制限よりも大きいデータベースを構築したい場合は、マルチファイル構成のデータベースを構築する必要があります。内部での格納位置表現は64bitになっていますので、理論的には64TByte以上のデータベースも構築できます。

:Q|バージョン間でのファイル互換性は?
:A|IB6.0系とFB1.0系は、ほぼ完全互換と言ってよいでしょう。FB1.0から1.5への変更もほぼ問題ないようです。しかし、商用として分岐したIB6.5以降に関しては要注意です。FB/IB6からIB6.5にアップデートすると、ファイルの構造が変換されて元に戻せなくなるようです。複数のバージョンが混在している環境で使用する場合は注意が必要です。

**機能 [#i678d7e3]
:Q|日本語の列名(カラム名)は使えるの?
:A|予約語と同じ列名や日本語の列名や別名を使用したい場合は、列名をダブルクォーテーション(")で囲むことにより実現できます。ただし、キャラクタセットの指定が出来ないために列名の取得の関係なのか、接続方法やツールによっては上手く扱えなかったりエラーが出たりといろいろ問題が発生する可能性があります。列名の取得を行わないようなアプリケーションならば問題は少ないでしょうが、それでも異なる文字コードが混在するような環境では問題となります。いずれにせよ、1.5.1ではあまりお勧めできる使い方とは言えないかも知れません。

:Q|イベントアラータ機能ってなに?
:A|データベースサーバ側から、クライアント側へイベントを非同期に連絡する機能です。ストアドプロシージャやトリガからイベントをポストすることにより実現されます。データベースの変更をクライアントに通知したり、エラー監視など様々な用途に応用できます。特に、変更通知はクライアントによる定期ポーリングを行うようなシステムでは、トラフィックの低減に有効です。詳しくは、SQLリファレンスのイベントアラータ関係を参照して下さい。

:Q|データベースシャドウ機能ってなに?
:A|データベースシャドウというデータベースのバックアップコピーを非同期かつ自動的に作成し、ディスク故障などでメインデータベースに問題が発生したときにはシャドウをメインデータベースに昇格させることにより、速やかな復旧とデータロストの最小化を実現するための機能です。レプリケーションの一種とも言えますが、シャドウはメインデータベースと同一のサーバにより管理されています。通常は、メインデータベースとは異なるディスク装置に設定します。詳しくは、SQLリファレンスのデータベースシャドウ関係を参照して下さい。

:Q|UDFってなに?
:A|Firebirdには、ユーザーがデータベースを自由に機能拡張するためにユーザーが定義した関数をデータベースエンジンとダイナミックリンクを行う機能があります。そのユーザー定義関数のことをUDFと呼称しています。デフォルトで、ある程度基本的な機能のものが用意されています。

**サーバ [#u271c659]
:Q|1.0系と1.5系の違いは?
:A|1.0系は、ベースとなったInterBase6とほとんどの面で互換性を保った上で若干の機能追加が行われたバージョンです。1.5系は、1.0系を更に改良したもので、一部ファイル名の変更も行われていますし、APIのインタフェースなども上位互換保ってはいますが、若干異なっている部分もあるようです。1.0系は安定度が高く動作実績がある為、また、InterBase6置き換えなどの互換性重視の用途のために公開が継続されています。

:Q|OS によっては ClassicServer版と SuperServer版があるけど, どっち使えばいいの?
:A|ClassicServer版は接続毎に「別プロセス」を生成して処理しており、SuperServer版は接続毎に「別スレッド」を生成して処理しております。SMP マシンの場合は ClassicServer版を使った方がパフォーマンスが高いそうです。通常の 1 CPU マシンの場合は SuperServer版の方がいいんじゃないでしょうか。ただ、UNIX ユーザは ClassicServer を使ってる人も結構いるみたいです。

:Q|ストアドプロシージャは対応してるの?
:A|対応しています。SQLの[[CREATE PROCEDURE>CREATE PROCEDURE#create_procedure]]で作成し、[[EXECUTE PROCEDURE>CREATE PROCEDURE#execute_procedure]]などで呼び出します。詳しくは"[[Firebird SQLリファレンス]]"(日本語訳版)もしくはインストールディレクトリ下の、"doc/sql.extensions/README.execute_statement"(英文)を参照して下さい。

:Q|通常使用するTCP/IPのポート番号は?
:A|データベースの接続で使用するのは3050です。イベントアラータで使用されるポート番号はデフォルトではランダムとなっています。いずれにせよ、設定ファイルなどにより変更することが可能です。

**クライアントからのアクセス手段(プログラミング) [#g83a8bfb]
:Q|クライアントのプログラミングインターフェースは何があるの?
:A|Delphi, C++Builder 用コンポとしての dbExpress,IBX, [[IBObjects:http://www.ibobjects.com/]],[[FIBPlus:http://www.devrace.com/en/fibplus/]] 等, Win汎用では ODBC, ADO ドライバや .NET 用ドライバ, 他にも JDBC(Java), IBPerl(Perl), PHP, kinterbasDB Python) などのミドルウェアがあります。
また、専用のFirebird APIも当然ながら用意されています。
:Q|(ORACLEのPro-Cを使用する場合のような)埋め込みSQLは使用できるの?
:A|付属のgpre.exeというプリプロセッサで可能です。対応言語は、C,C++,COBOL,PASCAL,FORTRANとなっています。ただし、Firebirdのプロジェクトでは積極的な開発は現在行われていない模様です。

**管理・運用 [#x1c202ce]
:Q|サーバの起動・停止・確認はどうするの?
:A Windows|コントロールパネルに Firebird Server Manager がありますので、そこで動作状態の確認、手動により起動や停止、自動起動設定を行います。
:A Linux| 通常は /etc/init.d/firebird が用意されていますので、これ使用します。
オプションは、start、stop、status、restart、reloadの5種類です。
通常はスーパーユーザーの状態で使用します。
&br;
 停止:
 # /etc/init.d/firebird stop
 起動確認
 # /etc/init.d/firebird status

:Q|日常行う管理は?
:A|管理が簡単なのが特徴の1つですので、通常の設定ならば日常の管理といえば定期
バックアップ程度です。ジャーナルの削除などもありませんが、代わりにこまめに
バックアップを取るようにしましょう。バックアップ中は処理は重くなりますが、通常
運用中でも行うことが出来ます。また、cronやATコマンドにより、自動定時バックアップ
運用も実現できます。有料のGUI管理ツールにはその機能を持ったものもあります。
&br;
&br;
自動スイープ間隔をオフ(0を設定)にした場合は、定期メンテナンスとして手動スイープ
を行った方が良いです。gfixコマンドや、GUIツールで行います。
&br;
スイープ処理ではガベージコレクションなどが行われますので、通常のデータアクセス
が非常に重くなります。そのため、安定したレスポンスを重視する用途では、トラフィック
の少ない時間にスイープ処理を行う方が安定した性能を見込めます。その場合に、
確実にスイープ処理を行う時間を定めるために自動スイープをオフにし、定期的に手動、
または定時起動によるスイープを行うという運用にします。

:Q|アカウントや設定も含めた完全なバックアップはどうすればいいの?
:A|データベース本体をgbakコマンドなどを使用してバックアップを取った後、
データベースを停止し、Firebirdをインストールしたディレクトリの下にある、
security.fdb(1.0.xはisc4.gdb)とfirebird.conf、aliases.confの2ファイル
(1.0.xではisc_configファイル)、計3ファイル(1.0.xでは2ファイル)を
コピーコマンドなどを使用してバックアップしてください。
&br;
リストアするときは、クリーンインストール直後またはデータベースを停止した後に、
先ほどバックアップしたsecurity.fdbなどのファイルをコピーし、その後に
データベースを起動し、gbakコマンドなどでデータベースをリストアします。


**インストール [#se961323]
:Q|fbclient.dllのインストール
:A|コマンドラインで
 C:\Program Files\Firebird\bin>instclient.exe i f
と打てば fbclient.dll がインストールされる。

:Q|gds32.dllが無くなってるんだけど?
:A|コマンドラインで
 C:\Program Files\Firebird\bin>instclient.exe i g
と打てば gds32.dll がインストールされる。

**アンインストール [#r4d33763]
:Q|アンインストールはどうやるの?
:A|Windows版の場合は、コントロールパネルの「Firebird Server Manager」でサーバを停止させた後、アプリケーションの追加と削除からアンインストールを行います。Linux版の場合は、[[クイックスタート]]を見てください。


**ドキュメント [#ud7ad800]
:Q|ドキュメントはどこにありますか?
:A|[[IBPhoenix Download:http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_download_documentation]]にFirebirdのドキュメント(ちょっと)と[[InterBase(R):http://www.borland.co.jp/interbase/]]のドキュメントがあります。他にあったら教えて。borlandに [[InterBase 5.6 for Windows 95/NT アップグレード版:http://www.borland.co.jp/interbase/devsupport/ib56win_upg.html]]があります。これを展開するとInterbase 5.6の日本語マニュアルがあります。

**管理ツール [#oc8d62a3]
:Q|付属の管理ツールは何がありますか?
:A|基本的なコマンドラインツールが付属していますので、コマンドラインで管理が出来ます。インストールしたディレクトリ下のbinディレクトリを見てください。管理関係のコマンドは、SYSDBAユーザーや、OSのroot/Administrator権限をもつユーザーアカウント以外では使用できないことが多いです。
|gsec|ユーザーアカウント管理|
|gbak|データベースのバックアップとリストア|
|isql|コマンドラインまたは対話形式でのSQL発行|
|gstat|データベースの状態を表示|
|gfix|データベースの設定変更や制御を行う。停止、スイープ、リンボ状態のトランザクションの強制コミット、フラッシュ実行など多くの機能がある|
:Q|GUIで管理できるツールはありますか?
:A|Borland社の開発ツールや商用[[InterBase(R):http://www.borland.co.jp/interbase/]]に付属しているIBConsoleを使用することにより、ほとんどの操作はGUIで行えます。また、オープンソース版IBConsoleを元に開発されたフリーのツールや、商用に開発されたツールもあります。おもなツールに関してまとめます。
|ツール名|説明|
|商用 IBConsole|Borlandの開発ツールや商用製品に付属。データベースのメンテナンスやアカウント管理、SQL発行など一通りの機能があります。使用には何かしらの有料ライセンスが必要です。また、FBでの動作保証は当然ありません。1.5系だと、ローカルデータベースには直接アクセスできないときもあるようです。そのときは、localhostのネットワーク経由を試して見ましょう|
|オープンソース版 IBConsole|IBConsoleのオープンソース版として公開されたバージョン。版が古いのと、パッチを適用しないと日本語がまともに通らないので注意が必要です|
|日本語化オープンソース版 IBConsole|[[Twise Labo社のダウンロードサイト:http://www.twise.co.jp/download1.shtml]]に日本語化したフリー版のIBConsoleがFirebird1.0と同時に公開されています。対応FBのバージョンが古いので多少問題ありますが、ネットワーク経由(localhostも含む)ならばFB1.5でも使用できるようです|
|[[IBOConsole:http://www.mengoni.it/]]|海外で開発されている IBConsole とほぼ同じ機能を持つツールです。無料で利用できます。一応日本語にも対応していますが、文字が化けるので日本語での使用にはまだ難があります。Linux版もあります。|
|[[IB Expert:http://ibexpert.net/ibe/]]|基本的には商用の管理ツールです。日本語にも対応しています。機能も非常に高いので、本格的に使用する場合には購入しても損はありません|
|[[EMS SQL Manager for InterBase/Firebird:http://www.sqlmanager.net/en/products/ibfb/manager]]|商用の管理ツールです。|
|[[IB Admin4:http://www.sqlly.com/ibadmin.asp]]|商用の管理ツールです。英語版ですが、データ自体には日本語が使用できるようなので、内容がわかってる人なら問題ありません。DBのコンペアや自動バックアップなども出来ます。Linux版もあります。|
|[[ValueSql:http://gwsrv.valuenet.co.jp/ValueSQL/pukiwiki.php]]|全てのRDBMSに接続可能なSQL発行クライアントを目指して開発されているフリーソフトウエアです。テキストデータに改行が入っていてもキレイに整形して表示します。マウスジェスチャ搭載。|

:Q|isqlで日本語を(正しく)扱うには?
:A|isqlではCONNECTでデータベースに接続しますが、このときのキャラクタセットの指定
は、デフォルトでは"NONE"になっています。データベースのキャラクタセットの設定に
よっては、この状態でも日本語が扱えたりします。しかし、データベースのキャラクタセット
をSJIS_0208に設定したりすると、エラーが出たり文字化けが起きる場合があります。&br;
こういう場合は、CONNECTなどで接続する前に、"SET NAMES"コマンドでキャラクタセットを
指定してみましょう。接続前に設定を行うのがミソです。"SET NAMES"に関しては、
[[コマンドラインツールの簡易マニュアル]]のisqlの項を参照してください。

**Apacheなどとの連動 [#r16e52c0]
:Q|ApacheのCGIなどから使いたいんだけど?
:A|PHPからはInterbaseとして直接アクセス可能です。ODBC経由でのアクセスも可能ですが、別途ODBCドライバが必要になります。Javaの場合はJDBCとドライバ経由です。
Perlの場合は、DBI/DBDによりアクセスします。PHPとPerlに関してはこのページ内に更に
詳しいドキュメントがあるので読んでみてください。

:Q|Apacheのユーザー認証で使いたいんだけど?
:A|PHPをモジュール(DSO)で動かしている場合は、PHP標準の機能によりApacheの認証動作をフックすることが出来ます。詳しくはPHPのマニュアルを参照してください。
また、ベーシック認証で十分な場合は、[[Firebird用のBASIC認証モジュール(mod_auth_fb):http://www.geocities.jp/c_softsub/mod_auth_fb/index.html]]がありますので、簡単に認証が行えます。また、mod_auth_dbiを使うという方法もあります。