DB2 Express-C 9.7 for Linux(以下DB2 Express-C)は、有償のDB2 Expressとほぼ同じ機能を持っていながら、無料で使用することができるエディションです(IBMからのサポートはありませんが、WEBのフォーラムでQ&Aを行っています)。2011年5月に最新版v9.7.4 (9.7 Fix Pack 4)が公開されました。
ドキュメントではLinux版DB2 Express-Cのインストール方法を詳細に解説します。
DB2 Express-Cには以下のような制限がありますが、制限は少なめです。特にDBサイズの制限が無いことは特筆すべきことでしょう。
| 最大プロセッサ数 | DB2が使えるのは2コアまで (これ以上のCPUコアを持つマシンにも導入は可能) |
| 最大使用可能メモリ | DB2が確保できるメモリが2GBまで (これ以上のメモリを持つマシンにも導入可能) |
| 最大DBサイズ | 制限無し |
また、DB2の主な特徴として挙げられるのがXMLデータベース機能の「pureXML」や、メモリ管理の自動調整機能「STMM」ですが、そのどちらもDB2 Express-Cに搭載されています。最新の機能を持つデータベースを、ぜひ試してください。
DB2 9.7 for LinuxがサポートするLinuxディストリビューションは以下のURLに記述されています。
正確なサポート範囲は上記ドキュメントに譲りますが、Red Hat Enterprise Linux 5/6、SUSE Linux Enterprise Server 11、Ubuntu 8.04/10.04が推奨ディストリビューションです。また、このほかにもSUSE Linux Enterprise Server 10、Turboliinux 11、Asiaux Server 3で稼働確認されています。
このドキュメントで使用したDB2とLinuxディストリビューションは以下の通りです。
- DB2 9.7.4 Express-C (Intel Linux 32Bit)
- Redhat Enterprise Linux 5U6
DB2の導入前にOSの設定を確認しましょう。まずファイアーウォールとSELinuxに注意が必要です。OS導入時に設定してしまうのが簡単です (導入後に変更も可能です)。
ファイアーウォールはDB2インスタンスのポート番号と523番(DB2の管理ツールで使用)を許可するように追加する必要があります。DB2インスタンスのポート番号は自由に設定できますが、ここでは一般的な50000番を指定しています。
SELinuxは有効であってもDB2は使用可能ですが、その場合は「db2chgpath - 組み込みランタイム・パスの変更コマンド」を参考にDB2導入後にdb2chgpathコマンドの実行が必要です。本番環境用DB2ではSELinuxを有効にし、開発用などでは無効にすると良いでしょう。
次にDB2に必要となるパッケージを導入する必要があります。各ディストリビューションに必要となるパッケージは前述の「Linux Supported Environments」に記載されています。RHEL 5については「Red Hat Enterprise Linux (RHEL) 5 - DB2 9.7」に記載されています。
これによるとRHEL5ではlibstdc++.so.5を導入しておく必要があります(libaio等も必要ですが、これは最初から導入されています)。パッケージマネージャーなどでcompat-libstdc++-33を導入してください。
DB2 Express-C は「Download DB2 Express-C」よりダウンロードが可能です。
DB2 Express-Cは、多数のOS用のイメージが用意されています。また、ドライバーや新しい開発環境(IBM Data Studio)も無償でダウンロードすることができます。ここではLinux x86 (32-bit)版をダウンロードします。なお64bit版Linuxを使用している場合は、Linux 64-bitをダウンロードしてください
クリックすると以下の画面が現れます。IBM IDをお持ちの方はIBM IDでサインインしてください。IDをお持ちでない場合は右側の"Proceed without an IBM ID"をクリックしてください。
次の画面ではアンケートに答えた後、画面下の方でライセンスの確認を求められます。
ライセンス内容を確認の上、"I agree (同意します)"にチェックを入れて次に進んでください。
使用同意書に同意すると上の画面になります。ここではダウンロードの方法が選択できます。ダウンロード・ディレクター(Download Director)を使用した高速なダウンロード方法と、一般的なhttp経由でのダウンロードが選択できます。
通常はダウンロード・ディレクターを使用します。"DB2 Express-C”と”National Language Pack”(言語パック)にチェックを入れて、一番下の「ダウンロード」をクリックします。言語パックは必須ではありませんが、導入するとDB2が表示するメッセージが日本語になります。(言語パックを導入しなくても日本語データを格納する事は可能です)同時にData Studioもダウンロードできますので必要な場合は同様にチェックを入れてください。
Javaアプレットが使用できない環境ではダウンロード・ディレクターが使用できません。その場合は”Download using http”のタブをクリックしてからダウンロードしてください。
ここでは、DB2 Express-Cのインストール方法を解説します。まずrootユーザーでログインして、さきほどダウンロードしたファイルを任意のディレクトリに展開します。ここでは/root/db2/以下にファイルを保存し、そこに展開するとします。
まず、DB2本体であるdb2exc_974_LNX_x86.tar.gzを展開します。
# cd /root/db2/ # tar zxf db2exc_974_LNX_x86.tar.gz |
展開するとexpc/というディレクトリができるので、そこにcdで移動し、その中で言語パックを展開します。
#cd expc/ #tar zxf ../db2exc_nlpack_974_LNX_x86.tar.gz |
db2setupを実行するとインストーラーが起動します。
# ./db2setup |
このようにすると、DB2本体と言語パックを同時に導入できます。なおDB2本体導入後に言語パックだけを導入することも可能です。その場合は言語パックをどこか別のディレクトリに展開し、その中にあるdb2setupを実行してください。
注) 言語パック導入時にDB2インスタンスを停止していないと言語パックの適用に失敗する場合があります。この場合は、当ドキュメントのFAQをご覧ください。
インストーラーが起動すると以下のような画面が表示されます。左側のペインの、「製品のインストール」をクリックします。
すると、次のような画面が表示されますので、「新規インストール」をクリックします。
これから具体的なインストール方法を解説しますが、これはDB2インストール方法の一例ですので、他の選択肢を選んでインストールしていただいても問題ありません。
注) 上記画面は、Webブラウザーにより表示されています。ここでは、FirefoxをWebブラウザーとして利用しています。画面のボタンが機能しない場合には、OSデフォルトのWebブラウザーを変更して試みてください。
DB2をインストールする前に、最低でも以下の事を計画しておく必要があります。
- DB2管理サーバーのユーザー名 (デフォルト:dasadm1)
- DB2のインスタンス・ユーザー名 (デフォルト:db2inst1)
- fencedユーザーのユーザー名 (デフォルト:db2fenc1、fencedユーザーについては後述)
- インスタンスのTCP/IPポート番号 (デフォルト:50000番)
DB2のサーバー・プロセスは、上記の「DB2のインスタンス・ユーザー」で起動されます。また、DB2 ではインスタンスが外部(クライアント)からの接続を受け付けるために、1インスタンス毎に一つ、現在使用していないポート番号が必要になります。ここでは50000番を使います。ファイアーウォールの設定と一致させるようにしてください。
インストール・ウィザードが開始され、この画面が表示されます。「次へ」をクリックします。
DB2ライセンス情報の確認です。内容を確認して同意できたら「同意する」をチェックして、「次へ」をクリックします。
インストール・タイプを選択します。「カスタム」を選択すると導入するコンポーネントを細かく選択できます。「標準」を選ぶと標準的なコンポーネントが選択され、またインストール時の質問項目の多くが自動的に決定されるため、質問項目が少なくなります。
多くの場合、「標準」のままで問題ありませんが、ここでは「カスタム」を選択しています。これはアプリケーション開発ツール(ライブラリやヘッダーファイル)を導入するためです。Rails用ドライバなどLinux用のソフトウェアはソースコードで提供され、コンパイルが必要なケースが多いため、アプリケーション開発ツールを導入しておくのが便利です。
選択したら「次へ」をクリックします。
ここでは応答ファイル(レスポンス・ファイル)を作成するかどうかを設定します。応答ファイルは、インストール時に選択した内容を記録しておくファイルで、同じ内容で次回インストールする際にそのファイルを使用するとインストール作業を自動化できるというものです。
「応答ファイルに保管する」を選択したまま「次へ」をクリックします。
ここでは導入するフィーチャー(コンポーネント)を選択します。ここで「アプリケーション開発ツール」を追加で選択しておくと便利でしょう。
また今回の例では導入しませんが、「サーバー・サポート」の中には全文検索機能のText Searchがあり、デフォルトでは選択されていないので、必要であれば選択しておくと良いでしょう。
選択できたら「次へ」をクリックします。
ここでは言語ファイルとDB2を導入するディレクトリを選択します。言語はデフォルトでOSのロケール(この場合は日本語)と英語が自動的に選択されます。
ディレクトリはデフォルトでは/opt/ibm/db2/V9.7/に設定されています。
多くのケースではどちらも変更は不要ですので、そのまま「次へ」をクリックします。
ここではインフォメーション・センター(マニュアル)の場所を設定します。通常は「IBM Web サイト」を選択しますが、ローカルネットワークにインフォメーション・センターが存在する場合は、そちらのホスト名を指定してください。
DB2の管理ユーザーについての設定です。デフォルトではユーザー名にdasusr1、管理ユーザーが属するグループ名にdasadm1が指定されています。
パスワード欄が空白となっていますので、設定するパスワードを入力して下さい。
ホーム・ディレクトリもデフォルトで「/home/dasusr1」が指定されています。必要があれば、変更してください。
デフォルトUIDを使用にチェックを入れると、インストーラーがユーザーIDを自動的に選択します。任意のユーザーIDを割り振りたい場合には、このチェックをはずし、適切なユーザーIDを割り振ってください。また、グループIDについても同様に、任意のグループIDを指定することができます。
また、新規にユーザーを作成するのではなく、既存のユーザーを指定することもできます。その場合には、既存ユーザーのチェック・ボックスをチェックし、管理ユーザーとするユーザーをリストから選択してください。
続いて、インスタンスのセットアップに移ります。ここで、「DB2インスタンスを作成する」を選ばない場合、データベースを扱うためのインスタンスの作成・構成はインストール・プロセスの中では行われず、インストール終了後にdb2icrtコマンドなどを用いてマニュアルで実施することになります。多くの場合では、ここでインスタンスを作成するのが良いでしょう。「DB2インスタンスを作成する」を選択し、「次へ」をクリックします。
インスタンス・ユーザーについて指定する画面が表示されます。デフォルトではユーザー名に「db2inst1」、グループ名に「db2iadm1」が指定されています。DB2プロセスは、ここで指定したユーザーで実行されます。
パスワードを設定してください。
その他のユーザー名、UID、グループ名、GID、ホーム・ディレクトリなどについては内容を確認し、必要があれば変更してください。
また、既存ユーザーを指定することもできます。
確認・設定を終えたら、「次へ」をクリックします。
次は、fenced(分離)ユーザーの設定です。DB2のユーザー定義関数、ストアード・プロシージャーなどは、fencedユーザー権限で実行されます。fencedユーザーをインスタンス・ユーザーと別に指定することで、ユーザー定義関数、ストアード・プロシージャーに問題があった際にインスタンス本体へ影響を及ぼすことを防ぎます。
ここでも、ユーザー名、UID、グループ名、GID、ホーム・ディレクトリを確認し、パスワードを設定します。
もしくは、既存ユーザーを指定します。
これらの設定を終えたら「次へ」をクリックします。
ここではインスタンスが通信に使うポート番号を指定します。ここではデフォルトの50000番をそのまま使っています。
また「システム起動時にインスタンスを自動開始する」にチェックが入っているため、OS起動時にインスタンス(db2inst1)が自動的に起動します。自動起動が不要な場合はチェックを外してください。
ここではツール・カタログのデータベースを作成するかどうかを設定します。ツール・カタログはDB2のタスク・センターなどいくつかの機能が情報を保存するために利用するデータベースです。
ツール・カタログが無くてもDB2は動作できますが、特に理由がなければデフォルトのまま作成するのが良いでしょう。
ここでは通知機能を設定します。DB2から管理者にメールでヘルスモニター(DB2の状態管理機能)からの情報を通知する機能のために、SMTPサーバーを指定します。
通知SMTPサーバーにホスト名を指定します。指定しないことも可能ですが、その場合はメールでの通知が行われなくなります。
ここでは通知の連絡先メールアドレスを指定します。メールアドレスを入力して「次へ」をクリックします。
全て入力が完了すると、設定内容のサマリーが表示されます。設定内容に間違いが無いことを確認して「完了」をクリックします。後は自動的にDB2のインストールが行われます。
インストールが終了すると上記のような完了の画面が表示されます。構成されたインスタンス名、インスタンス用のTCP/IPポート番号などが記されていますので、確認してください。ポート番号については/etc/servicesでも確認することができます。
これでDB2のインストールは完了です。「完了」をクリックしてインストールを完了します。
インストールが終了したので、動作を確認しましょう。rootユーザーからログアウトし、インスタンス・ユーザー(db2inst1)でログインしなおします。
シェル・ウィンドウを起動し、db2levelコマンドを実行してDB2のバージョンを確認してみましょう。画面にDB2のバージョン番号や導入先ディレクトリが表示されます。
次にサンプルのデータベースを作成します。コマンドプロンプトでdb2samplと入力してください。(インスタンスが起動していない場合はまずdb2startで起動する必要があります)
$ db2sampl |
データベースの作成には少し時間がかかります。作成が完了するとデータベースがSAMPLEという名前で作成されます。
作成できたらデータベースに接続してみます。シェル・ウィンドウ上で以下のように入力し、SAMPLEデータベースに接続してみましょう。
$db2 connect to sample (データベースに接続) $db2 list tables (表の一覧を表示) $db2 “select * from staff “ (SQLを実行) $db2 terminate (接続解除) |
また、db2ccコマンドを実行すると、GUIの管理ツール「コントロール・センター」を起動してデータベースの内容を確認する事ができます。
$ db2cc |
スプラッシュ・ウィンドウに続き、コントロール・センターの表示方法についての問い合わせ画面が表示されます。今回はデフォルトの「詳細」のまま、「OK」をクリックします。
上のような画面が表示されます。ツリーをたどっていき、データベースの内容が確認できたら確認は終了です。
[Q] インストール時に問題があったようですが、インストール中のログはどこで確認できますか?
[A] /tmpにインストール時のログがあります。
インストール時のログは/tmp/db2setup.logファイルに記録されます。インストール時に、問題が確認されたときや、インストール状況を確認したいときはこのファイルを参照しましょう。
また、インストール中にJavaプロセスによって戻されるエラー出力がdb2setup.errに記録されます。
[Q] 言語パック(National Language Pack)を導入する際に、DB2インスタンスを停止し忘れてしまったのですが。
[A] DB2インスタンスを停止した上で再度導入処理を行うか、db2iupdtコマンドを実行してください。
言語パックの導入プロセスの中ではDB2インスタンスを更新するdb2iupdtというコマンドが実行されています。このコマンドはインスタンス・プロセスが停止した状態でないと実行することができません。
DB2インスタンスを停止しない状態で言語パックの導入を実施すると、db2iupdtコマンドの実行に失敗しエラーとなります。この場合は、次のいずれかの方法で対処しましょう。
方法1: DB2インスタンスを停止し、導入を再度行う
db2inst1ユーザでDB2インスタンスを停止します。
# su – db2inst1 $ db2stop $ exit |
言語パックのファイルを展開し、インストール・ウィザード(db2setup)を起動します。
方法2: DB2インスタンスを停止し、db2iupdtコマンドを実行します。
db2inst1ユーザでDB2インスタンスを停止します。
#su – db2inst1 $db2stop $exit |
rootユーザでdb2iupdtコマンドを実行します。
#/opt/ibm/db2/V9.7/instance/db2iupdt db2inst1 |
[Q] ドキュメントや情報はどこにあるのですか?
[A] インターネット上で閲覧可能です。
- インターネット上で最新のマニュアル (インフォメーション・センター) を確認できます。
- PDF版のマニュアルは、「DB2 Version 9.7 translated manuals」から検索して各国語版のマニュアルをダウンロードできます。
- また「インフォメーション・センター」をダウンロードして自分のPCに導入することも可能です。「DB2 database product documentation」に各種ドキュメントのURLがまとめられています。
- マニュアル以外の情報は、IBM developerWorks: Information Management ゾーン に各種情報がまとまっています。
[Q] 新しいDB2インスタンスを追加するには?
[A] db2icrtコマンドを使用します。
DB2インスタンスを追加するには、db2icrtを使用します。「db2icrt によるインスタンスの作成」と「db2icrt - インスタンスの作成コマンド」にある解説を参照してください。
[Q] 他のマシン(クライアントマシン)からリモートのDB2に接続するには?
[A] ランタイム・クライアントを導入後、接続先のサーバーを設定します。
他マシンからDB2サーバーにコマンドラインで接続するには、DB2のクライアント環境が導入されている必要があります。DB2のクライアント環境は「DB2 for Linux, UNIX and Windows Trial Downloads」からダウンロード可能です。
上記より、"Data Server Client Packages (latest fixpacks)"をクリックします。latest fixpacksとは最新の修正が適用されたという意味です。
上記のようにたくさんの種類のクライアントがありますが、Clientと書かれたリンクをダウンロードしてください。Clientにはほぼ全てのクライアントコンポーネントが含まれています。(なおJDBCでの接続や、ODBCでの接続のみ必要であれば、該当するコンポーネントをダウンロードする事でダウンロードサイズを小さくできます)
DB2のコマンド・ウィンドウからリモートのDB2サーバーに接続するにはクライアント環境を導入後、接続したいデータベースをクライアント側に登録する必要があります。
- まず、接続したいDBを提供しているインスタンスのTCPサービス名をDB2サーバー上で確認します。DB2サーバーにインスタンスオーナーでLoginして、db2 get dbm config コマンドを実行します。インスタンスに関する情報が出力されますが、その中の
TCP/IP サービス名 (SVCENAME) = db2cdb2inst1
の行を記録しておいてください。そして、そのサービス名と対になっている(同じ行に書かれている)TCP/IPのポート番号をサーバー上の/etc/servicesから見つけてください。 - インスタンス・ユーザーでクライアントマシンにLoginします(Windowsの場合は、DB2コマンドプロンプトを起動する)。
- 以下のコマンドを使用して、DB2サーバーを新しいノードとして登録します。
- ノード(DB2サーバー)上のデータベースを登録します。
上記登録が終了すると、別名を指定する事でDB2サーバー上のデータベースに接続する事が出来ます。
また、上記のコマンドラインからの方法以外にも、GUIの「構成アシスタント」を起動する事で、GUI上で設定を行う事ができます。
また、上記のコマンドラインからの方法以外にも、GUIの「構成アシスタント」を起動する事で、GUI上で設定を行う事ができます。構成アシスタントはdb2caで起動します。
[Q] パッチ(修正ファイル)はどこで入手できますか?
[A] IBMサイトより、入手できます。
DB2 用の修正ファイルは、Fix Packという名前で公開されています。Fix Packの適用方法は、Fix Packのアーカイブ内 doc/jp/FixpakReadme.txtに日本語のマニュアルがありますので、そちらを参照してください。
ただし無償のExpress-C用には、Fix Packは提供されていません。Express-Cは定期的にダウンロードイメージが更新されるので、それを利用してください。また、Express-Cの有償保守サービスを購入すると、Fix Packが適用できるようになり、CPUコア数やRAMの使用可能量も増大します。
[Q] SQL****Nというエラー文が表示されました。どういう意味ですか?
[A] “?”コマンドで調査するか、メッセージ・リファレンス第2巻を調べてください。
SQLから始まる文字列は、SQLCODEというDB2 UDBでのエラー内容を表した値です。この値の意味を調べるには、インフォメーション・センターで検索するか、「データベースの基本 > メッセージ > SQL メッセージ」を参照してください。
またDB2コマンド・ウィンドウでdb2 “? SQLCODE”と入力する事で、簡易な解説を得る事ができます。
$ db2 "? SQL0204N" |
(次の質問は製品版DB2についてです。DB2 Express-Cでは該当しませんが、このドキュメントを参考にして製品版の導入を行う方もいらっしゃると思いますので記載します。)
[Q] ライセンスの登録はどのように行うのですか?
[A] DB2ライセンス・センターを用いてGUIで行うか、db2licmコマンドを用いて行います。
製品のインストールを行っただけでは、ライセンスの登録は行われません。製品版を購入頂いた際にはインストール・イメージとは別にライセンス・ファイルが提供されます。このライセンス・ファイルをDB2ライセンス・センターかdb2licmコマンドを用いて登録ください。
方法1: DB2ライセンス・センターによる登録
db2lcコマンドにより、DB2ライセンス・センターが起動します。GUI上からライセンスを登録するインスタンス、適切なライセンス・ファイルを選択して登録してください。
方法2: db2licmコマンドによる登録
$ db2licm –a ライセンス・ファイル名 |
- 日本アイ・ビー・エム DB2ホームペー
- DB2 Express-C デベロッパーポータル: Express-C関連の情報が集められています。
- IBM developerWorks: developerWorks JapanのDB2関連技術情報サイトです。
- DB2サポート情報
- DB2 9.7 Information Center (マニュアル)

下佐粉 昭はDB2に関して10年の幅広い知識と経験を有する日本アイ・ビー・エムの社員です。彼は書籍「即戦力のDB2管理術」の著者であり、「DB2 逆引きリファレンス」と「XML-DB開発実技コース」の共著者でもあります。彼の旺盛な好奇心はDB2に留まらず、Javaやオープン・テクノロジーでも幅広い活躍をしています。現在はソフトウエア事業に所属し、ビジネス・パートナー様の技術支援の仕事に従事しています。休日は各地の温泉に行く事を趣味にしています。
