DB2 Express-Cインストール方法
IBM製データベースDB2のLinuxへのコマンドラインでのインストール方法です。
DB2 Express-Cサイト:
http://www-06.ibm.com/jp/software/data/db2express-c/
GUIでのインストール手順:
http://www.ibm.com/developerworks/jp/offers/db2express-c/installlin_v95/
DB2の日本語での情報:
http://db2watch.com/
はじめに
DB2 Express-Cは、IBM製リレーショナルデータベースDB2の一部機能制限版で、ライセンス無償で利用できます。 インストール用のファイルは、上記のサイトからダウンロードできます。(ユーザ登録などが必要です)
本稿では、DB2 Express-CをLinuxサーバへインストールして、WEB環境で利用する手順を解説します。
インストール手順
OSなどは次のバージョンを利用しました。
- CentOS-5.2
- Apache httpd-2.2.11
- php-5.2.9
- db2exc_952_LNX_x86
ファイルの展開
ダウンロードしたファイルを展開します。
tar xzvf db2exc_952_LNX_x86.tar.gz
コマンドラインインストールの実行
cd expc sudo ./db2_install
次のようなエラーがでる場合があります。
ERROR: The required library file libstdc++.so.5 is not found on the system. Check the following web site for the up-to-date system requirements of IBM DB2 9.5 http://www.ibm.com/software/data/db2/udb/sysreqs.html http://www.software.ibm.com/data/db2/linux/validate
その場合、次のライブラリのインストールを行ってください。(CentOS5.xでこのエラーになりました)
ライブラリのインストール
libstdc++.so.5をインストールします
sudo yum install compat-libstdc++-33
途中で入力の要求があります。(yとEnterと入力します)
Is this ok [y/N]: y
コマンドラインインストールの再実行
再度インストーラーを起動します。
製品のインストール用のデフォルト・ディレクトリー - /opt/ibm/db2/V9.5 別のディレクトリーを選択してインストールしますか [yes/no] ? no
デフォルトのディレクトリでインストールしますので、noとEnterを入力します。 次にインストールする製品選択の画面が出ます。
DB2 製品をインストールするには、スペースで区切られた 以下のキーワードを 1 つ以上指定してください。 EXP 製品名を再表示するには "help" と入力してください。 終了するには "quit" と入力してください。
EXPとEnterを入力します。
エラーなどがなければ、10分程度でインストールが完了します。
正常に実行が完了しました。 詳しくは、「/tmp/db2_install.log.27138」にある DB2 インストール・ログを参照してください。
このように表示されればOKです。念のためログを確認しておきましょう。
ヘッダ、ライブラリリンク作成
開発用ヘッダ、ライブラリ類のリンク作成をします。
cd /opt/ibm/db2/V9.5/cfg sudo ./db2ln
必要なユーザ、グループを作成します。
sudo /usr/sbin/groupadd -g 999 db2iadm1 sudo /usr/sbin/groupadd -g 998 db2fadm1 sudo /usr/sbin/groupadd -g 997 dasadm1 sudo /usr/sbin/useradd -g db2iadm1 -d /home/db2inst1 -m db2inst1 sudo /usr/sbin/useradd -g db2fadm1 -d /home/db2fenc1 -m db2fenc1 sudo /usr/sbin/useradd -g dasadm1 -d /home/dasusr1 -m dasusr1
パスワードを設定します。
sudo passwd db2inst1 sudo passwd db2fenc1 sudo passwd dasusr1
インスタンスを作成します
cd /opt/ibm/db2/V9.5/instance sudo ./db2icrt -u dasusr1 dasusr1 sudo ./db2icrt -u dasusr1 db2inst1
正常に終了すると次のように表示されます。
BI1070I Program db2icrt completed successfully.
動作確認
サンプルデータベースを作成します。
sudo su db2inst1 cd /opt/ibm/db2/V9.5/bin ./db2sampl
正常に終了すると次のように表示されます。
Starting the DB2 instance... 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"... Stopping the DB2 instance... 'db2sampl' processing complete.
コマンドラインから動作の確認を行います。まず、インスタンスを起動します。
db2start
正常に終了すると次のように表示されます。
SQL1063N DB2START processing was successful.
DB2コマンドプロセッサ(clp)を起動します。
db2
次のように入力します。(「db2 => 」はプロンプト)
db2 => connect to sample
Database Connection Information
Database server = DB2/LINUX 9.5.2
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 => select * from staff where dept = 20
ID NAME DEPT JOB YEARS SALARY COMM
------ --------- ------ ----- ------ --------- ---------
10 Sanders 20 Mgr 7 98357.50 -
20 Pernal 20 Sales 8 78171.25 612.45
80 James 20 Clerk - 43504.60 128.20
190 Sneider 20 Clerk 8 34252.75 126.50
4 record(s) selected.
ためしに漢字を使って更新してみます。
db2 => update staff set NAME='栗原' where ID=10
DB20000I The SQL command completed successfully.
db2 => select * from staff where dept = 20
ID NAME DEPT JOB YEARS SALARY COMM
------ --------- ------ ----- ------ --------- ---------
10 栗原 20 Mgr 7 98357.50 -
20 Pernal 20 Sales 8 78171.25 612.45
80 James 20 Clerk - 43504.60 128.20
190 Sneider 20 Clerk 8 34252.75 126.50
4 record(s) selected.
db2 => connect reset
DB20000I The SQL command completed successfully.
db2 => quit
DB20000I The QUIT command completed successfully.
サンプルデータベース削除する場合は、次のようにします。
cd /opt/ibm/db2/V9.5/bin db2 drop database sample
PHPへの組み込み
PHPからDB2を使用できるようにします。
PHPを展開したディレクトリで、次のようにconfigureを実行します。
./configure --enable-mbstring --enable-mbregex \ --with-apxs2=/usr/local/apache2/bin/apxs \ --prefix=/usr/local/php-5.2.9 --with-mysql=/usr/local/mysql \ --with-pgsql=/usr/local/pgsql --with-gd --with-zlib \ --with-xmlrpc --with-jpeg-dir=/usr --with-png-dir=/usr \ --enable-gd-native-ttf --with-freetype-dir=/usr \ --with-curl=/usr/local --enable-soap --enable-calendar \ --with-ibm-db2
Apacheが「/usr/local/apache2」にインストールされている必要があります。 また、このままの設定では、ライブラリなどがなくてエラーがでる場合があります。 私のサーバは、ApacheやPHPやデータベースなどは、バージョンアップする際に、新旧のバージョンを並存できるように、バージョンをつけたディレクトリにインストールし、汎用的な名前でシンボリックリンクを作成して使用しています。 このため、ご自身の環境に合わせて書き換えてご利用ください。
「./db2ln」を行っていない場合は、次のようにディレクトリを指定してください。
--with-ibm-db2=/opt/ibm/db2/V9.5
configureが終わったら、コンパイル、インストールを行います。
make sudo make install
Apacheの起動スクリプトにDB2関連の設定を追加します。
sudo vi /usr/local/apache2/bin/apachectl
先頭部分を次のようにします。(この場合漢字コードはUTF-8です)
#!/bin/sh #DB2 . /home/db2inst1/sqllib/db2profile LANG=ja_JP.utf-8 export LANG
Apacheを再起動します。
sudo /usr/local/apache2/bin/apachectl restart
PHPからのDB2アクセスを行う場合、「db2inst1」ユーザで、「db2start」が実行されている必要があります。
PHPからアクセスできるか、テストを行います。
次の内容を、ドキュメントルートに、db2test1.phpとして作成します。 パスワードは、インストール時に設定した、db2inst1ユーザのパスワードとします。
<?php
$dbname="sample";
$username="db2inst1";
$password="test1234";
$db = odbc_connect($dbname, $username, $password);
if ($db) {
echo "connect to " . $dbname . "-OK<br>";
$sql = "select * from staff where dept=20";
$result = odbc_exec($db, $sql);
if ($result) {
odbc_result_all($result);
odbc_free_result($result);
}
odbc_close($db);
} else {
echo "connect error<br>";
}
?>
ブラウザからつぎのURLを開きます。(サーバのIPアドレスは、実際のサーバのものに変更してください)
http://192.168.1.6/db2test1.php
ブラウザに次のように表示されれば、正しく動作しています。
connect to sample-OK ID NAME DEPT JOB YEARS SALARY COMM 10 栗原 20 Mgr 7 98357.50 NULL 20 Pernal 20 Sales 8 78171.25 612.45 80 James 20 Clerk NULL 43504.60 128.20 190 Sneider 20 Clerk 8 34252.75 126.50
EUCにおけるIBM拡張文字の問題
Apacheの漢字コードをEUCにすると、IBM拡張文字が正しく出力されなくなります。 IBM拡張漢字とは、「」や「ア」です。 なお、最終的にEUCで出力したい場合、PHP側で「EUC」の代わりに「CP51932」を指定することで、正しく変換することが出来ます。
mb_convert_encoding($str, "CP51932", "sjis-win");
この例は、SJISのIBM拡張漢字をEUCで出力する場合の変換例です。
トップへ
提供中のサイト
提供中のサービス
技術情報
サンプル