皆様こんにちは。今回よりDB2の連載がスタートとなりました。この連載では初心者ネタから中上級者向けネタまで、ゆる〜く、気の向くままに様々な話題を取り上げて、DB2の魅力を皆様にお伝えしたいと思います。今回、まずはDB2に触ってみようという事でインストール方法についてご紹介します。使用するのは無償で使えるDB2、「DB2 Express-C」です。

 DB2 Express-Cとは無償で使用できるDB2のエディションです。機能は小規模環境向けのDB2 Express Edition for Linux and Windowsとほぼ同等の機能が提供されており、Windows, Linux, Solaris(x86), Mac OSX 版が用意されています。商用利用も可能ですが、IBMからのサポートは提供されません。QAが必要な場合はWebコミュニティーのフォーラム「IBM DB2 Express Forum」が開設されているのでそちらを利用することができます。

DB2インストール要件の確認

 さて、インストール環境はUbuntu 10.04を試します。

 DB2がサポートするLinux環境はこちらのURLに掲載されていますので事前に確認します。

 DB2の動作環境の確認については、製品のホームページではなく、最新かつ詳細まで確認可能なマニュアルからのリンクを確認する事をお勧めします。

 DB2 Version 10.1 for Linux, UNIX, and Windows データベース製品のインストール要件

 リンク先を確認すると、Ubuntuの導入前提条件としてlibaio1, ksh, libstdc++6-4.4-dev, libstdc++6-4.4-picのパッケージの導入が必要とありますので、

sudo apt-get install libaio1 ksh libstdc++6-4.4-dev libstdc++6-4.4-pic

 で導入しておきます。

DB2 Express-Cのダウンロード

 DB2 Express-Cはこちらよりダウンロードできます。ここでは Linux x86 (32bit)版をダウンロードします。ダウンロードにはIBM IDが必要です。(IBM IDをお持ちでない方は事前に登録しておいてください)

 次の画面ではライセンスの確認を行います。「I agree」をチェックし、「I confirm」をクリックして次へ。

 ダウンロードイメージの選択画面では。DB2 Express-C" と "National Language Pack for DB2" にチェックを入れて、「Download」をクリックします。

 National Language Packとはその名の通り、英語以外の言語の詰め合わせになっています。導入は必須ではありませんが、導入するとDB2 が表示する”メッセージが”日本語になります。(こちらを導入しなくても日本語データをデータベースに格納する事は可能です)

 さて、導入の準備が整いました。

DB2 Express-Cのインストール

 DB2のインストールはウィザードに従い、非常に簡単にインストールすることができます。

 GUIの画面で「次へ」、「次へ」と進んでいくだけです。

 既にIBM Developer worksサイトにてWindowsとLinux環境におけるGUIのインストール方法については解説されているので、今回はコマンド環境でのインストールを試してみましょう。

 DB2 Express-C 10.1 for Windows クイックインストール
 DB2 Express-C 10.1 for Linux クイックインストール

 GUIは非常に楽なのですが、UnixやLinux環境ではGUIが使えないケースも多いと思います。また、必要最小限の製品イメージのみを導入しておき、後からユーザーや環境のセッティングをしたい場合もあると思いますので、ここでは必要な製品イメージを導入して、その後手動でデータベースのセッティングをする流れでやってみましょう。



● インストールイメージの展開

 まずrootユーザーでログインして、さきほどダウンロードしたファイルを任意のディレクトリに展開します。ここでは/root/db2/以下にファイルを保存し、そこに展開します。

 db2_v101_linixx64_expc.tar.gz を展開します。

# cd /root/db2# tar zxvf db2_v101_linuxia32_expc.tar.gz

 展開すると expc/というディレクトリができるので、そこに移動し、その中で言語パックを展開します。

# cd expc/# tar zxvf ../db2_v101_linuxx64_nlpack.tar.gz

 展開後、expc/内をlsで見てみると、「db2setup」と「db2_install」というファイルがあります。GUIのインストールではdb2setupを実行するとウィザードが起動し、インストールが始まります。

# lsdb2 db2_deinstall db2_install db2ckupgrade db2ls db2prereqcheck db2setup

 これまでコマンド環境下でのインストールは「db2_install」を利用してきましたが、V10.1より非推奨となりました。(非推奨とは、まだ利用出来るが将来のリリースでなくなるという予告です。)「db2_install」を実行しても、非推奨になりましたというメッセージが出るだけでこれまで同様インストールが可能です。

 今後は「db2_install」の替わりに「db2setup」を使います。この「db2setup」は「-r」の引数を指定することで、コマンド環境からのインストールも実行できます。



● 応答ファイルの準備

 コマンド環境下での「db2setup」での導入は、「応答ファイル」というファイルを準備します。このファイルは導入オプションの情報が書かれているファイルです。

 応答ファイルは次の方法で準備できます。

 1) サンプルディレクトリにあるdb2expc.rspをカスタマイズする
 2) GUIのセットアップウィザードを使って作成する

 GUIでDB2の導入経験のある方は、インストールウィザードの途中で以下のような画面を見たことがありませんか?

 この画面で「インストール設定を応答ファイルに保管する」を選択すると、ウィザードで選択したオプションがすべて応答ファイルに保存出来ます。

 またサンプルファイルは次のパスにあります。読み取り専用ファイルなので、編集される際はchmodで権限を変更して使用してください。

/expc/db2/linux/samples/db2expc.rsp

 さて、手っ取り早く導入したい場合は、db2expc.rspの内容は以下の4行でOKです。

 標準的なDB2コンポーネントが導入されます。

PROD = EXPRESS_CFILE = /opt/ibm/db2/V10.1LIC_AGREEMENT = ACCEPTINSTALL_TYPE = TYPICAL

 今回準備した応答ファイルの内容は以下になります。青字の部分が上と異なります。

PROD = EXPRESS_CLIC_AGREEMENT = ACCEPTFILE = /opt/ibm/db2/V10.1INSTALL_TYPE = CUSTOMCOMP = APPLICATION_DEVELOPMENT_TOOLSCOMP = DB2_SAMPLE_DATABASELANG = JPINTERACTIVE = YES

 INSTALL_TYPE でカスタムインストールを選択しました。(INSTALL_TYPE = CUSTOM)

 これはアプリケーション開発ツール (ライブラリやヘッダーファイル) を導入するためです。(COMP = APPLICATION_DEVELOPMENT_TOOLS)

 Linux 用のソフトウェアはソースコードで提供され、コンパイルが必要なケースが多いため、アプリケーション開発ツールを導入しておくと便利です。

 また、サンプルデータベースを作成するためのメタデータも導入しておきましょう(COMP = DB2_SAMPLE_DATABASE)

 LANG = JP は日本語メッセージのインストール。

 INTERACTIVE = YES を指定すると、インストールの進行状況を標準出力に出力します。応答ファイルは原則バージョン間の互換性はありませんので注意してください。



● db2setup でのインストール

 応答ファイルの準備が整ったところで、インストール開始です。「db2setup」 を実行し、作成した応答ファイルを 「 r」 の後に指定して実行します。

# ./db2setup -r db2expc.rspDBI1191I 提供された応答ファイルに従って、db2setup が DB2 をイ   ンストールおよび構成しています。 お待ちください。DB2 インストールを初期化しています。実行されるタスクの合計数: 30 実行される全タスクの合計見積もり時間: 887 秒 タスク #1 を開始します。説明: ご使用条件受諾のチェック 見積もり時間 1 秒 タスク #1 が終了しました。…タスク #20 を開始します。説明: 製品メッセージ - 日本語 見積もり時間 37 秒 タスク #20 が終了しました。…タスク #30 を開始します。説明: グローバル・プロファイル・レジストリーの更新 見積もり時間 3 秒 タスク #30 が終了しました。 正常に実行が完了しました。詳しくは、「/tmp/db2setup.log」にある DB2インストール・ログを参照してください。

● DB2のセットアップ

 ここからの作業はGUIを使って導入された方は必要ありません。

 製品のみ導入して、DB2の設定を後から任意に設定したい場合にのみ行います。

 ではセットアップ手順です。

 (1) DB2用のグループおよびユーザー ID の作成
 (2) db2icrt を使用したDB2インスタンスの作成
 (3) DB2 インスタンスの TCP/IP 通信の構成

 (1) DB2用のグループおよびユーザー ID の作成
 DB2には2つのグループおよびユーザーが必要です。1つ目はインスタンス所有者、2つめはfencedユーザーです。

 (fencedユーザーはDB2 データベースで使用されるアドレス・スペースの外部にあるユーザー定義関数 (UDF) やストアード・プロシージャーを実行するために使用されます。)

 グループを作成 します。

groupadd -g 999 db2iadm1groupadd -g 998 db2fadm1

 グループごとにユーザーを作成します。

useradd -u 1004 -g db2iadm1 -m -d /home/db2inst1 db2inst1 useradd -u 1003 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1

 初期パスワードを設定します。

passwd db2inst1passwd db2fenc1

 (2) db2icrt を使用したDB2インスタンスの作成
 インスタンスとは、データベースを作成したり、アプリケーションを実行したりする一括りの環境を指しています。引き続きrootユーザーから、db2icrt コマンドを使用して、インスタンスを作成します。

 コマンドの最後の「db2inst1」はインスタンス名の指定ですが、インスタンスの所有者ユーザーを指定します。インスタンス名は、そのままインスタンスの所有者ユーザーの名前と同じになり、インスタンス所有者ユーザーのホーム・ディレクトリーにインスタンスが作成されます。

# /opt/ibm/db2/V10.1/instance/db2icrt -u db2fenc1 db2inst1DBI1446I db2icrt コマンドの実行中です。お待ちください。DB2 インストールを初期化しています。実行されるタスクの合計数: 4 実行される全タスクの合計見積もり時間: 309 秒 タスク #1 を開始します。説明: デフォルト・グローバル・プロファイル・レジストリー変数の設定 見積もり時間 1 秒 タスク #1 が終了しました。 …タスク #4 を開始します。説明: グローバル・プロファイル・レジストリーの更新 見積もり時間 3 秒 タスク #4 が終了しました。 正常に実行が完了しました。詳しくは、「/tmp/db2icrt.log.25849」にある DB2インストール・ログを参照してください。DBI1070I プログラム db2icrt は正常に完了しました。

 (3) DB2 インスタンスの TCP/IP 通信の構成
 サーバー上のサービス・ファイルを更新し、DB2が使用するポートを指定します。

 /etc/services に以下の1行を追記します。

db2c_db2inst1 50000/tcp # DB2 connection service port

 ※次に、インスタンス所有者ユーザー、db2inst1 でログインします。

 以下のコマンドを入力して、インスタンス用の設定項目(データベースマネージャー構成ファイル)のサービス名(svcename)パラメーターに先ほどサービス・ファイルで指定した値を設定します。

$ db2 update dbm cfg using svcename db2c_db2inst1DB20000I UPDATE DATABASE MANAGER CONFIGURATIONコマンドが正常に完了しました。

 最後にDB2インスタンスが利用する通信プロトコルを指定します。

$ db2set DB2COMM=TCPIP

 以上でDB2のインストールおよび設定は完了です。

 GUIのウィザードや、ユーザーやインスタンスの作成も含めた応答ファイルを利用すると、ユーザーの作成も含めた、ここまでの設定が短時間で一気に完了します。手を動かしてここまで導入してみると、セットアップウィザードの有難味が良くわかりますね。

 しかし、コマンド環境下においても応答ファイル内でユーザーやインスタンスの作成が指定可能なので、コマンドを一回実行するだけでここまで完了できます。

 ちなみに、今回DB2インストール後に行ったユーザー作成からインスタンス作成、ポートの設定まで一気に実行する応答ファイルの例はこちらになります。

LIC_AGREEMENT = ACCEPTPROD = EXPRESS_CFILE = /opt/ibm/db2/V10.1INSTALL_TYPE = CUSTOMCOMP = APPLICATION_DEVELOPMENT_TOOLSCOMP = DB2_SAMPLE_DATABASELANG = JPINTERACTIVE = YESINSTANCE = inst1*インスタンスユーザーおよびインスタンスの設定inst1.NAME = db2inst1inst1.GROUP_NAME = db2iadm1inst1.HOME_DIRECTORY = /home/db2inst1inst1.PASSWORD = passwordinst1.SVCENAME = db2c_db2inst1inst1.PORT_NUMBER = 50000* Fenced ユーザーの設定inst1.FENCED_USERNAME = db2fenc1inst1.FENCED_GROUP_NAME = db2fadm1inst1.FENCED_HOME_DIRECTORY = /home/db2fenc1inst1.FENCED_PASSWORD = password

動作確認

インストールとセットアップが完了したので、サンプルのデータベースを作成して、動作確認してみましょう。rootユーザーからログアウトし、インスタンス・オーナー・ユーザー(db2inst1)でログインし、db2level コマンドで導入バージョンを確認します。

$ db2levelDB21085I インスタンス "db2inst1" は、"32" ビットおよび DB2コード・リリース "SQL10010" をレベル ID "0201010E"で使用します。情報トークンは、"DB2v10.1.0.0"、"s120403"、"LINUXIA32101"、およびフィックスパック "0"です。製品は "/opt/ibm/db2/V10.1" にインストールされています。

 DB2の詳細なバージョンやインストールディレクトリが確認できます。

 DB2のバージョンは?と聞かれたら 「db2level」 を実行すると覚えておくと便利です。

 次にDB2をスタートさせましょう。DB2のスタート、ストップには db2start / db2stop というコマンドを実行します。

$ db2startSQL1063N DB2START の処理が正常に終了しました。

 次に、サンプルデータベースを作成しましょう。ちょっと紛らわしいのですが、db2sampl

 (最後にeがない)を実行します。SAMPLE という名称のデータベースが作成されます。

$ db2sampl Creating database "SAMPLE"... Connecting to database "SAMPLE"... Creating tables and data in schema "DB2INST1"... Creating tables with XML columns and XML data in schema "DB2INST1"... 'db2sampl' processing complete.

 作成が完了したら、SAMPLEデータベースに接続してみましょう。

$db2 CONNECT TO SAMPLE (データベースに接続)$db2 LIST TABLES (表の一覧を表示)$db2 “SELECT * FROM STAFF” (SQL を実行)$db2 TERMINATE (接続解除)

 さて、いかがだったでしょうか?インストール編というと、ほとんどがGUIのインストールの紹介で面白くないので(笑)、GUIのインストールは既存の資料に譲って、今回はコマンド環境を使ったインストールと手動セットアップを説明してみました。ステップを追ってみるとデータベースの構成に必要な要素も少し見えてくるのではないでしょうか。

 初心者の方はインスタンスなど今回初めての言葉も出てきたと思いますので、次回以降で説明していきたいと思います。

 それでは皆様、ボンジュルネ!

野間愛一郎[著]