1. はじめに
Db2サーバーを導入すればCLP(command line processor)を利用できますが、
- Db2クライアントだけを導入したい
- Db2クライアント環境のユーザー名をデフォルトのdb2inst1以外の任意の名前にしたい
といった要望を聞くことがあります。本記事ではLinux環境を対象にして、この要望に応える手順をまとめます。要点は
- CLPが同梱されているIBM Data Server Runtime Clientパッケージを導入すること
- その際
db2setup
コマンドを用いずに、db2_install
コマンドを使って導入し、次にdb2icrt
コマンドでインスタンスを作成すること- 補足)
db2setup
コマンドを実行すると基本的にはdb2inst1のインスタンスが作成されます。
- 補足)
です。(これがわかるまで時間がかかった。。)
本記事の目次は次の通りです。
- はじめに
- 手順実行の前提
- 参考資料
- 手順概要
- 手順
2. 手順実行の前提
次の情報と実行環境が必要です。
- IBM ID(Db2クライアントのパッケージをダウンロードするとき使用)
- 持っていない方はQiita記事(IBMidを作成してみる)をご覧になって作成してください。
- Linux環境とrootのパスワード
- 本記事では CentOS Stream release 8 x86_64環境を用いますが、他LinuxディストリビューションにおいてもDb2サポート対象であれば、同じDb2コマンドを用いて導入できます。
3. 参考資料
- IBMマニュアル
- IBM Data Server Client and driver types
- Db2 installation methods
- Installing IBM data server clients (Linux and UNIX)
- db2_install - Install Db2 database product command
- db2icrt - Create instance command
- Qiita
- 【備忘録】Db2 インストール手順まとめ(Linux)
4. 手順概要
- Data Server Runtime Clientの導入パッケージを取得
- Data Server Runtime Clientを導入
- 任意の名前でユーザーを作成
- 作成したユーザー用のDb2インスタンスを作成
- 作成したユーザーにてCLPプロンプトを確認
5. 手順1) Data Server Runtime Clientの導入パッケージを取得
次のURLを開いてFix Centralに移動します。
https://www.ibm.com/support/fixcentral/
この画面でSelect Productタブを選択し、次に4つのプルダウンメニューを下の通りに選択し、最後にContinueボタンを押します。
次の画面でBrowse for fixesを選択してContinueボタンを押します。
次の画面でIBM Data Server Runtime Client (Linux/x86-64 64bit)を選択します。このバージョンは接続予定のDb2サーバーのバージョンに合わせてください。本記事では11.5.8.0を選択します。
次の画面においてIBM IDでログインしてください。
次の画面に表示される3つのファイルをダウンロードします。
ダウンロードしたファイルをCentOS環境にコピーして(scp等でコピー)それが本物かどうかをopenssl
コマンドで確認します。参考のため1つ目のコマンドでCentOSのバージョンを表示しています。作業フォルダは任意ですが、本記事では20230507
とそのサブディレクトリを用います。
$ ssh root@xxx.xxx.xxx.xxx
[root@cos8b ~]# cat /etc/centos-release
CentOS Stream release 8
[root@cos8b ~]# cd 20230507
[root@cos8b 20230507]# ls
publicKey.pem v11.5.8_linuxx64_rtcl.tar.gz v11.5.8_linuxx64_rtcl.tar.gz.sig
[root@cos8b 20230507]# openssl dgst -sha256 -verify publicKey.pem -signature v11.5.8_linuxx64_rtcl.tar.gz.sig v11.5.8_linuxx64_rtcl.tar.gz
Verified OK
5. 手順2) Data Server Runtime Clientを導入
gzファイルを解凍して内容を確認します。rtclディレクトリに導入コマンドdb2_install等が保存されています。
[root@cos8b 20230507]# tar xzf v11.5.8_linuxx64_rtcl.tar.gz
[root@cos8b 20230507]# ls
publicKey.pem rtcl v11.5.8_linuxx64_rtcl.tar.gz v11.5.8_linuxx64_rtcl.tar.gz.sig
[root@cos8b 20230507]# cd rtcl
[root@cos8b rtcl]# ls
db2 db2_deinstall db2_install db2ls db2prereqcheck db2setup installFixPack
導入前のチェックコマンドdb2prereqcheck
を実行します。オプション-l
を付けると最新バージョン(現時点で11.5.8)のみをチェックします。不足パッケージに対してエラーメッセージが表示されます。
[root@cos8b rtcl]# ./db2prereqcheck -l
...
DBT3507E The db2prereqcheck utility failed to find the following package or file: "kernel-source".
DBT3507E The db2prereqcheck utility failed to find the following package or file: "".
DBT3507E The db2prereqcheck utility failed to find the following package or file: "".
DBT3507E The db2prereqcheck utility failed to find the following package or file: "gcc-c++".
DBT3507E The db2prereqcheck utility failed to find the following package or file: "cpp".
DBT3507E The db2prereqcheck utility failed to find the following package or file: "binutils".
DBT3507E The db2prereqcheck utility failed to find the following package or file: "gcc".
DBT3563E The db2prereqcheck utility determined that SELinux is enabled, which is not supported with GPFS.
DBT3618E The db2prereqcheck utility detected that ksh is not linked to ksh or ksh93. This is required for Db2 High Availability Feature with Tivoli SA MP.
上のパッケージを導入します。なお環境に応じて上のエラーメッセージが異なり、導入するパッケージも異なってきます。
[root@cos8b rtcl]# dnf -y install gcc
Installed:
binutils-2.30-120.el8.x86_64 cpp-8.5.0-19.el8.x86_64 gcc-8.5.0-19.el8.x86_64 glibc-devel-2.28-225.el8.x86_64
glibc-headers-2.28-225.el8.x86_64 isl-0.16.1-6.el8.x86_64 kernel-headers-4.18.0-489.el8.x86_64 libmpc-1.1.0-9.1.el8.x86_64
libpkgconf-1.4.2-1.el8.x86_64 libxcrypt-devel-4.1.1-6.el8.x86_64 pkgconf-1.4.2-1.el8.x86_64 pkgconf-m4-1.4.2-1.el8.noarch
pkgconf-pkg-config-1.4.2-1.el8.x86_64
Complete!
[root@cos8b rtcl]# dnf -y install gcc-c++
Installed:
gcc-c++-8.5.0-19.el8.x86_64 libstdc++-devel-8.5.0-19.el8.x86_64
Complete!
チェックコマンドdb2prereqcheck
を再度実行します。オプション-l
に加えて-c
を付けます。これによってサーバー導入前のチェックは行わず、クライアント導入前のチェックを行います。
[root@cos8b rtcl]# ./db2prereqcheck -c -l
Requirement not matched for DB2 database "Client" . Version: "11.5.8.0".
Summary of prerequisites that are not met on the current system:
DBT3514W The db2prereqcheck utility failed to find the following 32-bit library file: "/lib/libpam.so*".
DBT3514W The db2prereqcheck utility failed to find the following 32-bit library file: "libstdc++.so.6".
上の警告は32bitライブラリに関するものであるため対応せずそのままにして、db2_install
コマンドを用いてDb2クライアントを導入します。
[root@cos8b rtcl]# ./db2_install
Requirement not matched for DB2 database "Server" . Version: "11.5.8.0".
...
The execution completed successfully.
導入結果を確認します。下のようにdb2コマンドはまだ実行できません。
[root@cos8b rtcl]# ls /opt/ibm/db2/V11.5/
adm bin bnd cfg conv desktop function install instance java json lib32 lib64 license logs msg Readme security32 security64 tools
[root@cos8b rtcl]# which db2
/usr/bin/which: no db2 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
5. 手順3) 任意の名前でユーザーを作成
任意のユーザー名として本記事ではyamasakk
を用います。useradd
コマンドにオプション-m
を付けてホームディレクトリを作成します。
[root@cos8b rtcl]# useradd -m yamasakk
[root@cos8b rtcl]# passwd yamasakk
Changing password for user yamasakk.
...
passwd: all authentication tokens updated successfully.
5. 手順4) 作成したユーザー用のDb2インスタンスを作成
db2icrt
コマンドを実行します。上で作成したユーザー名yamasakk
を指定します。オプション-s client
によってサーバー用ではなくクライアント用インスタンスを作成します。
[root@cos8b rtcl]# /opt/ibm/db2/V11.5/instance/db2icrt -s client yamasakk
...
The execution completed successfully.
5. 手順5) 作成したユーザーにてCLPプロンプトを確認
上で作成したユーザーでログインします。ホームディレクトリが作成されたこと、その配下にdb2コマンドが導入されていることを確認します。次にdb2コマンドを実行してCLPのプロンプトが表示されることを確認します。これで本記事の目的(サーバー導入無し、任意のユーザー名)を達成しました。
$ ssh yamasakk@xxx.xxx.xxx.xxx
[yamasakk@cos8b ~]$ pwd
/home/yamasakk
[yamasakk@cos8b ~]$ which db2
~/sqllib/bin/db2
[yamasakk@cos8b ~]$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 11.5.8.0
db2 =>