DB2は複数インスタンスを作成できます。しかし、1インスタンス内に複数DBを作成できますし、1つ目のインスタンスはインストール時に作成してしまうので、あまり作り方は知られていないようです。
Unix系OSであれば、db2isetupというコマンド(GUI)が用意されているので、rootで実行すればインストーラーの時と同じ操作でインスタンスが作成できます。
手動(CUI)で作成したい場合は、少し段階をふむ必要があります。
1) インスタンスユーザ、Fence(分離)ユーザを作成する。
各OSのコマンドを使用して、インスタンスのオーナーとなるユーザと、分離ユーザ(ストアドプロシージャなどを実行するユーザ)を作成します。この時、グループIDもDB2用の独自のものを作成するのがお勧めです。(db2igrpなどあとで分かる名前で)。この作業はWindowsでは必要ありません。
2) インスタンスを作成する。
db2icrtコマンドでインスタンスを作成します。
- Unix
/opt/IBM/DB2/V8.1/instance/db2icrt -u 分離ユーザ インスタンスユーザ
(Aixでは、/usr/opr/db2_08_01/instanceです)
- Windows (DB2コマンドウィンドウから、管理ユーザで)
db2icrt -u 管理ユーザ,パスワード インスタンス名
この時-sでインスタンスのタイプ(ESEかWSEかなど)、-wで32bit/64Bitインスタンスの指定などが行えます。詳細はこちらで。
3) 作成したインスタンス用にTCP/IPのポートを開けます。
Unixなら/etc/servicesを、Windowsなら、%WINDIR%¥system32¥drivers¥etc¥servicesというファイルに開けるTCPポートの番号とそれに付ける名前を追記します。名前は、db2から始まるようにするなどあとで分かりやすい物にしておくのが良いでしょうね。
例) db2c_db2new 50100/tcp
これで、db2c_db2newというサービス名で50100番のTCP/IPポートが開きます。他で使用しているポート番号とかぶらないようにしてください。また、Unix系OSでは1024より小さい値は使用できません。
4) 作成したインスタンスにTCP/IPの設定をする
db2icrtで作成したインスタンスユーザでログインし、(もしくはsu - する)以下のコマンドを実行します。Windowsはインスタンスユーザの切替えを環境変数DB2INSTANCEで行うので、変数にインスタンス名を設定します。
Unixでの例) su - db2new
Windowsでの例) set DB2INSTANCE=db2new
その後、以下の設定を行います。
db2set DB2COMM=TCPIP
db2 update dbm cfg using svcename サービス名
(今回の例だと、 db2 update dbm cfg using svcename db2c_db2new)
以上でインスタンスが通信可能な状態になっているはずです。db2startしてみてください。
Unix系OSであれば、db2isetupというコマンド(GUI)が用意されているので、rootで実行すればインストーラーの時と同じ操作でインスタンスが作成できます。
手動(CUI)で作成したい場合は、少し段階をふむ必要があります。
1) インスタンスユーザ、Fence(分離)ユーザを作成する。
各OSのコマンドを使用して、インスタンスのオーナーとなるユーザと、分離ユーザ(ストアドプロシージャなどを実行するユーザ)を作成します。この時、グループIDもDB2用の独自のものを作成するのがお勧めです。(db2igrpなどあとで分かる名前で)。この作業はWindowsでは必要ありません。
2) インスタンスを作成する。
db2icrtコマンドでインスタンスを作成します。
- Unix
/opt/IBM/DB2/V8.1/instance/db2icrt -u 分離ユーザ インスタンスユーザ
(Aixでは、/usr/opr/db2_08_01/instanceです)
- Windows (DB2コマンドウィンドウから、管理ユーザで)
db2icrt -u 管理ユーザ,パスワード インスタンス名
この時-sでインスタンスのタイプ(ESEかWSEかなど)、-wで32bit/64Bitインスタンスの指定などが行えます。詳細はこちらで。
3) 作成したインスタンス用にTCP/IPのポートを開けます。
Unixなら/etc/servicesを、Windowsなら、%WINDIR%¥system32¥drivers¥etc¥servicesというファイルに開けるTCPポートの番号とそれに付ける名前を追記します。名前は、db2から始まるようにするなどあとで分かりやすい物にしておくのが良いでしょうね。
例) db2c_db2new 50100/tcp
これで、db2c_db2newというサービス名で50100番のTCP/IPポートが開きます。他で使用しているポート番号とかぶらないようにしてください。また、Unix系OSでは1024より小さい値は使用できません。
4) 作成したインスタンスにTCP/IPの設定をする
db2icrtで作成したインスタンスユーザでログインし、(もしくはsu - する)以下のコマンドを実行します。Windowsはインスタンスユーザの切替えを環境変数DB2INSTANCEで行うので、変数にインスタンス名を設定します。
Unixでの例) su - db2new
Windowsでの例) set DB2INSTANCE=db2new
その後、以下の設定を行います。
db2set DB2COMM=TCPIP
db2 update dbm cfg using svcename サービス名
(今回の例だと、 db2 update dbm cfg using svcename db2c_db2new)
以上でインスタンスが通信可能な状態になっているはずです。db2startしてみてください。