DB2 UDBをお持ちでない方へ:
無料で使える、Linux版、Windows版のDB2 Express-Cが米IBMのサイトからダウンロードできます。ダウンロードの際には、簡単な登録が必要になります。
|
1.はじめに
DB2 Universal Database (DB2 UDB) V8.2 for Linuxは、"Stinger"(蜂)のコードネームで開発されていたDB2
UDB新バージョンの正式な名前です。V8.2ではLinuxサポートの範囲が大きく拡大されました。
DB2 UDB for Linuxは、以前より多くのLinuxアーキテクチャーをサポートしてきました。インテル32Bitアーキテクチャー(IA32
- Pentium 4 Xeonなど)に加えて、IA64 (Itenum2),AMD64(Optetron,Athron64),PowerPC(PPC)用の32Bit
LinuxやzSeries(メインフレーム用)の31Bit LinuxなどをV8.1の時点でサポートしていました。
V8.2では、これがさらに拡大され、上記アーキテクチャーに加えて、Intel EM64T版
64Bit Linux、PPC版 64Bit Linux、zSeries版 64Bit Linuxが加わりました。また全てのアーキテクチャーで、Linuxカーネル2.6がサポートされました。
このドキュメントでは、そのDB2 UDB V8.2 for Linuxのインストール方法を詳細に解説します。
2. インストールの前提条件
DB2 UDB for LinuxがサポートするLinuxディストリビューションは、以下のURLに掲載されているものです。このURLに無いディストリビューションにもインストールが可能な場合がありますが、IBMはサポートしていないので注意してください。
またこのドキュメントでは、IA32版(インテル x86-32Bit CPU)のDB2 UDB for
Linuxを対象にしているが他のアーキテクチャー用LinuxやUnix系OSでのDB2インストールにも参考になると思います。
このドキュメントで使用したDB2とLinuxディストリビューションは以下の通りです。
- DB2 Universal Database V8.2 Enterprise Server Edition for Linux (IA32)
- SUSE Linux Enterprise Server 9 (SLES9)
3. DB2のインストール
ここでは、DB2 UDB V8.2 for Linux(以下DB2)のインストール方法を解説します。
まずrootでLinuxにログインして、DB2のCD-ROMを挿入します。今回使用したSLES9ではマウント(mount)操作が不要ですが、ディストリビューションによっては手動でmountが必要になります。その場合、以下の要領でCD-ROMをmountしてください。
# mount /media/cdrom (Redhatなどでは、/mnt/cdromになります。)
DB2 V8から、インストーラがグラフィカルなJavaベースのものに変更されました(GUI無しでインストールするコマンドdb2_installも用意されています。詳細はDB2のリリースノートを確認してください)。そのため、まだX(GUI)環境が起動していない場合は、以下のコマンドでXを起動します。
# startx
続いてDB2のGUIインストーラー(db2setup)を起動します。インストーラは環境変数LANGの値に従って表示するメッセージを変えます。日本語メッセージで表示したい場合はLANGの値を日本語に設定してからdb2setupコマンドを実行してください。
# cd /media/cdrom (もしくは cd /mnt/cdrom)
# LANG=ja_JP.UTF-8 ./db2setup ← UTF-8を使用している環境の場合
もしくは
# LANG=ja_JP.eucJP ./db2setup ← 日本語EUCを使用している環境の場合
日本語が表示できない環境ではLANG="" ./db2setup と実行する事で英語メッセージを使用してインストーラを実行できます。
これから、具体的なインストール方法を解説します。これはDB2インストール方法の一例ですので、他の選択肢を選んでインストールしていただいても問題ありません。

上記画面で、「製品のインストール」を選択します。

DB2 UDB Enterprise Server Editionを選択して「次へ」をクリックします。
DB2本体ではなく、クライアントだけを導入したい場合は、Application Development
ClientかAdministration Clientを導入します。

DB2をインストールする前に以下の事を計画しておく必要があります。
- インスタンスユーザー : DB2ではインスタンス毎に起動/停止を管理します。インスタンスは複数のデータベースをまとめたものです。インスタンスユーザーは、インスタンス内で最も権限が強いユーザーになります。また、1インスタンス毎にTCP/IPのポート番号を一つ設定する必要があります。
- 隔離(分離-Fenced)ユーザー :ストアドプロシージャを実行する際に使用されるユーザー
- 管理ユーザー : 管理サーバーを操作するユーザー
この記事では、以下のように計画しました。
表 1 - 計画表
| |
名前 |
パスワード |
グループ名 |
ホームディレクトリー |
ポート番号 |
| インスタンス |
db2inst1 |
db2inst1 |
db2grp1 |
/home/db2inst1 |
50010 |
| 隔離ユーザー |
db2fenc1 |
db2fenc1 |
db2fgrp1 |
/home/db2fenc1 |
? |
| 管理ユーザー |
dasusr1 |
dasusr1 |
dasadm1 |
/home/dasusr1 |
? |
※今回はUID、GIDは指定せず、インストーラーのデフォルトを使用しましたが、UID,GIDを指定することもできます。

DB2ライセンス情報の確認です。内容を確認して同意できたら「同意する」をチェックして、「次へ」をクリックします。

インストール・タイプを選択します。
多くの場合、「標準」で問題ありませんが、DB2の開発環境が必要な場合は「カスタム」を選び、後のセクションで開発環境をインストールするようにします。
今回は「カスタム」を選択します。

「DB2 UDB Enterprise Server Editionをこのコンピュータにインストールする」にチェックを付けて、「次へ」をクリックします。
「設定を応答ファイルに保存する」を選択すると、今回のインストール内容をファイルにして保存しておく事ができます。ファイルはrootユーザーのホームディレクトリーに作成されます。別のコンピュータにDB2を導入する際にそのファイルを利用する事で導入の手間を減らす事ができます。

カスタムを選択した場合は、このようにインストールする機能を選択する画面になります。インストールしたい機能にチェックを付けてください。ここでは「アプリケーション開発ツール」にチェックを追加しています。
また「入門」はDB2の動作に必須ではありませんが、この記事の後で作成するサンプルデータ?ベースの作成に必要ですので、チェックを付けておいてください。

言語の選択画面です。日本語表示モードでインストーラを起動している場合は、日本語が選択済み(右の選択済み言語に入っている)の状態になっていますので、そのまま「次へ」をクリックします。英語モードで起動している場合は、左のボックスからJapaneseをクリックし、">"を押して選択してください。
ここでの選択は、ヘルプメッセージやコマンド実行時の応答メッセージを表示するためのメッセージカタログの選択です。日本語を選択から外しても、メッセージが英語で出るようになるだけで、日本語のデータをデータベースに格納することはできます。

DB2 V8.2からドキュメントはインフォメーション・センターとしてインターネット上にも用意されるようになりました。ドキュメントをDB2と同じサーバーにインストールせず、インターネット上のドキュメントを参照する場合は上記のように「IBM
Webサイト」を選択してください。
インターネットに接続していない環境でもドキュメントを参照するには、後からインフォメーション・センターを別のCDから導入する必要があります。その場合は「このDB2製品のインストール後にDB2インフォメーション・センターを別途導入する」を選択してください。

管理サーバー(DB2 Administration Server - DAS)についての設定です。
DB2では管理サーバーを起動しておく事で、コントロールセンターというGUIから複数のDB2を集中管理する事ができるようになります。
表 1で計画した内容にしたがって、管理サーバーのオーナーになる新規ユーザーの名前、パスワード、ホームディレクトリーを入力してください。また、UID、GIDの数値を指定したい場合は、「デフォルトUIDを使用する」のチェックを外し、値を入力してください。
既存のユーザーをインスタンス所有ユーザーにしたい場合は、「既存ユーザー」を選択し、セレクトボックスのユーザー一覧からユーザーを選択します。
管理サーバーは外部から管理をしやすくするための機能で、管理サーバーが起動していなくても、DB2に接続してトランザクションを実行する事や、設定を変更するなど、データベースへの操作自体は可能です。

インスタンスのセットアップです。前述のように、DB2では起動(db2start)、停止(db2stop)と停止をインスタンス単位で行います。また、インスタンス内には複数のデータベースを作成可能です。
ここで作成しなかった場合でも、DB2導入ディレクトリーにあるinstanceディレクトリー内のdb2isetupコマンド(GUI)や、db2icrtコマンドで後からインスタンスを作成することも可能です。
ここでは、「DB2インスタンスの作成」を選択します。

インスタンスの使用方法を選択します。パーティション・インスタンスを使用すると、複数のコンピュータを使って一つのデータベースを作成するパラレルデータベース・サーバーを構築できます。
パーティション化されたインスタンスを使用するには、DB2のDistributed Parallel
Feature(オプション製品)が必要になります。
ここでは、「シングル・パーティション・インスタンス」を選択します。

インスタンス所有ユーザー(インスタンスオーナー)を作成します。インスタンス所有ユーザーは、インスタンス内で最高権限を持つユーザーです。DB2ではインスタンス名=インスタンス所有者のユーザー名になります。インスタンスに対して操作を実行したい場合はこのユーザーでシステム(OS)にログインする必要があります。
あらかじめ作成してある表 1の計画に従って、ユーザー名、パスワード、ホームディレクトリーを入力してください。また、UID、GIDの数値を指定したい場合は、「デフォルトUIDを使用する」のチェックを外し、値を入力してください。
既存のユーザーをインスタンス所有ユーザーにしたい場合は、「既存ユーザー」を選択し、セレクトボックスのユーザー一覧からユーザーを選択します。

隔離(分離)ユーザーも表 1の計画に従って、ユーザー名、パスワード、ホームディレクトリーを入力してください。

TCP/IPの何番ポートで接続を待つかという設定です。ここで設定したポート番号にクライアントからコネクションを張ることでDB2のインスタンスに接続できます。
必ず「構成する」を選択し、計画(表 1)に従ってポート番号を入力してください。デフォルトでは50000番です。サービス名は任意の文字列で問題ありませんが、他のサービス名と同じではいけません。SLES9ではデフォルトの50000番がすでに別のサービス(デーモン)に使用されているため、50010番を指定しています。
/etc/servicesには現在登録されているサービスの一覧があり、上の画面で設定した内容もこのファイルに反映されます。

認証タイプは、ユーザーの認証をどうやって行うかを決定します。通常は「サーバー」を選択しておく事で、このサーバーのログイン機構を利用して認証が行われます。ここでは「サーバー」を選択します。
「スタートアップ」にチェックを付けておくと、OS起動時に自動的にインスタンスが起動するようになります。(OS起動後にdb2startコマンドを実行するのと同じです)
インスタンスの自動起動は、db2iautoコマンドによって変更できます。インストール後に、自動起動を設定したい場合は、インスタンスユーザーで、以下のコマンドを実行します。
| |
$ db2iauto -on db2inst1 |
(自動起動有効) |
| |
$ db2iauto -off db2inst1 |
(自動起動無効) |
またインスタンスが自動起動するかどうかは、レジストリ変数のDB2AUTOSTARTがTRUEに設定されているかどうかで確認できます。設定されているレジストリ変数はdb2set
-all コマンドで確認できます。

ツール・カタログDBの設定です。DB2には複数の周辺ツールが付属していますが、そのうちのいくつかを使用するには、データベースへ管理データを格納する必要があります。ツール用のデータベースは別のマシンにあるDB2上に作成する事もできます。
作成は必須ではありませんが、ツールが動作できるようにここで作成しておく事をお勧めします。
ここでは「ローカル・データベースを使用」を選択します。

ツール・カタログ用のDBを作成するインスタンスと、データベース名、スキーマを選択します。ここでは、インスタンスに先ほど作成したインスタンスを選択します。
データベースは既存のものを使う事もできますが、得に理由が無ければ新規に作成する事をお勧めします。
データベース名、スキーマは好きな名前を使う事ができます。通常はデフォルトのままで問題ないでしょう。

注意が必要なことを管理者に知らせる場合の連絡先を指定します。
すでに別のDB2サーバーに連絡先リストを構築済みの場合はリスト・ロケーションに「リモート」を選択します。そうでなければ「ローカル」を選択します。ここでは「ローカル」を選択しています。
通知SMTPサーバーの設定では「通知を使用可能にする」を選択してSMTPサーバー(メールサーバー)のホスト名を入力します。

通知先のメールアドレスを設定します。名前とメールアドレスを入力します。

全て入力が完了すると、サマリーが表示されます。インスタンス名やポート番号に間違いが無いことを確認して「完了」をクリックします。後は自動的にDB2のインストールが行われます。

インストールが終了すると上記のような状況レポートが表示されます。全て成功で終わっている事を確認してください。失敗に終わっている項目がある場合は設定内容に誤りが有った可能性があります。セットアップ・ウィザードに戻って正しい内容に修正してください。
必要であれば、インストール後にはCD-ROMをアンマウントします。
# cd
# umount /media/cdrom (もしくは /mnt/cdrom)
# exit
これでDB2のインストールは完了です。
4. インストール後の確認
インストール後に、動作を確認します。まず、rootでのログインをexitし、インスタンスユーザー(db2inst1)で再度ログインします。
ログインできたら、サンプルデータベースを作成します。
$ db2start (まだ起動していない場合のみ)
$ db2sampl [任意のディレクトリー名]
ディレクトリーを指定しない場合は、インスタンスユーザーのホームディレクトリー以下にインスタンスユーザー名と同名のディレクトリーが作成され、その中にサンプルデータベースが作成されます。サンプルデータベースの作成には数十秒〜数分程度かかります。
サンプルデータベースが作成できたら、接続してみます。以下のように実行します。
| |
$ db2 connect to sample |
(SAMPLEというデータベースに接続) |
| |
$ db2 list tables |
(表の一覧を表示) |
| |
$ db2 "select * from staff" |
(SQLを実行) |
| |
$ db2 terminate |
(接続解除) |
また、db2ccコマンドを実行することで、GUIのコントロールセンターを起動してデータベースの内容を確認する事もできます。
データベースに接続し、データベースの内容が確認できたら確認は終了です。
|
補足:
別のユーザーからsuコマンドでインスタンスユーザーに変更する場合は、以下のようにかならず-(ハイフン)をつける事を忘れないでください。ハイフンを忘れるとDB2の操作に必要な環境変数が正しく設定されず、DB2の操作ができなくなります。
# su - db2inst1
また、suコマンドで変更したユーザーでGUIのコマンド(db2ccなど)を実行するには、元のユーザーでディスプレイの使用を許可し、su後のユーザーのDISPLAY環境変数を正しく設定する必要があります。詳しくはOSのマニュアルを参照してください。
|
5. よくある質問と答え(FAQ)
| Q |
ドキュメントや情報はどこにあるのですか? |
| A |
別途導入するか、インターネット上のドキュメントを参照します。 |
| |
DB2 UDBをインストールしただけでは、ドキュメントはインストールされません。ドキュメントをローカルマシンにインストールしたい場合は、別途「インフォメーションセンター」のCDからドキュメントをインストールしてください。
また、インターネット上でも最新のマニュアルを確認できます。
http://publib.boulder.ibm.com/infocenter/db2v8luw/index.jsp
PDF版のマニュアルは、以下のURLから検索して各国語版のマニュアルをダウンロードできます。
http://www.elink.ibmlink.ibm.com/public/applications/publications/cgibin/pbi.cgi
マニュアル以外の情報は、以下のホームページより御覧頂けます。
DB2 Developer Domain(Japan)
このほかにIBM製品全般についてのよくある質問が以下のURLにまとめられています。
IBM製品よくある質問
|
| |
|
| Q |
コントロールセンターの文字が四角(□)に文字化けする |
| A |
フォントをコピーします |
| |
図1 文字化けしたコントロールセンター

DB2 UDB for Linuxでは、インストール時に/opt/IBMJava2-141以下にIBM JDK 1.4.1が導入されます。この際、日本語フォントをコピーし忘れる場合があります。その場合はCDの/db2/linux/java/jre/lib/fonts/ディレクトリーから、mtsansdj.ttfとtnrwt_j.ttfを手動で/opt/IBMJava2-141/jre/lib/fonts/以下にコピーしてください。
|
| |
|
| Q |
コントロールセンターを起動しても、作成したインスタンスやデータベースを見ることができない。 |
| A |
一度日本語EUCロケールでコントロールセンターを起動してください。 |
| |
DB2 UDB for Linux V8.2には、Unicode(ja_JP.UTF-8)を採用したディストリビューションで、コントロールセンターを起動すると、下図のようなメッセージが出てコントロールセンターが正しく動作しないという既知の問題があります。

将来のリリースでは修整される予定ですが、現時点では以下の方法で回避してください。
- 一度コントロールセンターを終了する
- $ LANG=ja_JP.eucJP db2cc として、日本語EUCロケールで起動する
こうすると、正しく動作するようになります。一度正しく起動すれば、二度目以降はLANGの指定は不要です。
|
| |
|
| Q |
新しいDB2インスタンスを追加するには? |
| A |
db2isetupコマンドを使用します。 |
| |
DB2インスタンスを追加するには、/usr/IBM/db2/V8.1/instance/db2icrtを使用して手動で追加する方法もありますが、rootユーザーで
/usr/IBM/db2/V8.1/instance/db2isetupを使ってGUIで登録する方法をお勧めします。rootユーザーで実行する必要があります。実際の作業はこれまでの内容を参考にしてください。
|
| |
|
| Q |
他のホスト(クライアントマシン)からリモートのDB2に接続するには? |
| A |
ランタイム・クライアントを導入後、接続先のサーバーを設定します。 |
| |
他マシンからDBサーバーに接続するには、DB2 UDBのクライアント環境が導入されている必要があります。DB2のクライアント環境は以下のパッケージに含まれていますので、このうちのどれかを導入する必要があります。
- ランタイム・クライアント (Runtime Client)
- 管理クライアント (Administration Client)
- アプリケーション開発クライアント (Application Development Client)
数字の大きい物は小さい物の機能を兼ねるので、良く分からない場合は3を導入します。導入時にクライアント側には接続用のインスタンス・ユーザーが作成されます。
クライアント環境を導入できたら、次にDBサーバー上のDBをクライアント側に登録する必要があります。
- まず、接続したいDBを提供しているインスタンスのTCPサービス名をDBサーバー上で確認します。DBサーバーにインスタンスオーナーでLoginして、db2
get dbm config コマンドを実行します。インスタンスに関する情報が出力されますが、その中の
TCP/IP サービス名 (SVCENAME) = db2cdb2inst1
の行を記録しておいてください。そして、そのサービス名と対になっている(同じ行に書かれている)TCP/IPのポート番号をサーバー上の/etc/services(Windowsの場合は、WINNT\SYSTEM32\Drivers\etc\services)から見つけてください。
- インスタンスユーザーでクライアントマシンにLoginします(Windowsの場合は、DB2コマンドプロンプトを起動する)。
- DBサーバーを新しいノードとして登録する。
- ノード(DBサーバー)上のDBを登録する。
上記登録が終了すると、別名を指定する事でDBサーバー上のDBに接続する事が出来ます。
また、上記のコマンドラインからの方法以外にも、GUIの「構成アシスタント」を起動する事で、GUI上で設定を行う事ができます。
図 2 構成アシスタント

|
| |
|
| Q |
コントロールセンターからインスタンスを起動しようとしたり、バックアップを取得しようとしたりすると、SQL0332Nのエラーが出て実行できません。 |
| A |
bashの不具合により管理サーバーの環境変数が正しく設定されていない事が原因です。 |
| |
一部のLinuxディストリビューションでは、付属するbashの不具合により、システム起動時に、正しいロケール(LANG)で管理サーバーが起動されない場合があるようです。この場合、一度管理サーバーユーザー(dasusr1)でログインし、以下のコマンドで管理サーバーを再起動してください。
$ db2admin stop
$ db2admin start
|
| |
|
| Q |
パッチ(修正ファイル)はどこで入手できますか? |
| A |
IBMのFTPサイトより、入手できます。 |
| |
DB2 UDB用の修正ファイルは、Fixpakという名前で約3ヶ月毎にIBMの公開FTPサーバー上に置かれます。詳細は以下のページを参照してください。
http://ibm.com/software/data/db2/udb/support/downloadv8.html
Fixpakの適用方法は、Fixpakのアーカイブ内 doc/jp/FixpakReadme.txtに日本語のマニュアルがありますので、そちらを参照してください。
|
| |
|
| Q |
SQL****Nというエラー文が表示されました。どういう意味ですか? |
| A |
コマンド解説書を調べてください。 |
| |
SQLから始まる文字列は、SQLCODEというDB2 UDBでのエラー内容を表した値です。この値の意味を調べるには、DB2
UDBのオンラインドキュメント内のコマンド解説書を見るか、DB2コマンドに続けて?を入力する事で意味を調べる事ができます。

|
| |
|
| Q |
インスタンスユーザー以外のユーザーからDB2コマンドを発行するには? |
| A |
環境変数を設定してください。 |
| |
インスタンスユーザー以外のユーザーはDB2コマンドを実行するための環境変数が設定されていないため、そのままではDB2コマンドを実行できません。環境変数を設定するには、インスタンスユーザーのホームディレクトリー以下のsqllib/db2profileというファイルをsourceコマンドもしくは、
. (ドット)を使って実行します。
(例)
$ source /home/db2inst1/sqllib/db2profile
|
6. Web上のリソース
DB2 UDB V8.2 for Linuxの新機能(英語)
DB2 UDB V8.2新機能の概略を紹介
DB2 UDB for LinuxがサポートしているLinuxディストリビューション
DB2フォーラム
DB2 UDB V8 FixPakダウンロード
|