Db2関係のプロジェクトのメンバーでも意外に知らない人がいるので、簡単にまとめておきます(´・ω・`) もっともポピュラーな起動方法(だとわたしが勝手に思っている)のがdb2start
。db2start
を発行したユーザがインスタンスユーザとして管理しているインスタンスを起動します。
su - db2inst1
db2start
# あるいは
su - db2inst1 -c "db2start"
select文やinsert文と同じ階層(?)で、インスタンスを起動したい場合はstart database manager
を利用します。db2 -f path
とするとpathに指定したファイルを読み込んで、SQLを実行することはDb2ユーザの中では比較的よく知られていますが、その入力としてstart database manager
は使いやすかったです(実体験)。
# すべて同じ
db2 "start database manager"
db2 "start db manager"
db2 "start dbm"
最後にdb2gcf
。db2gcf
はインスタンスの起動・終了・監視をつかさどるコマンドで、起動の場合は-u
オプションを指定します。db2start
にしろstart database manager
とは違いsu
の必要がないので、単一のシェルスクリプトから複数のインスタンスの起動を行う場合などに有用でした(実体験)。ただし実行にはroot
権限が必要になります。
# ひとつのシェルスクリプトから複数インスタンスを起動する
db2gcf -u -i db2inst1
db2gcf -u -i db2inst2
db2gcf -u -i db2inst3
"起動"があれば、当然"停止"コマンドも存在します。db2start
に対応するものがdb2stop
、start database manager
に対応するものがstop database manager
。db2gcf
の場合は-d
オプションを指定すると"停止"モードになります。
# すべて停止コマンド
su - db2inst1 -c "db2stop"
db2 "stop database manager"
db2gcf -d -i db2inst1
ところで上述のコマンドをたたいたとき、次のようなエラーメッセージが出力され、インスタンスが停止しないということがあります:「SQL1025N The database manager was not stopped because databases are still active.」。たいていは何らかのアプリケーションが対象のインスタンスに接続しているために起きるのですが、これを無視して強制的にインスタンス停止を行うにはどうすればよいでしょうか。
まずdb2stop
の場合はdb2stop force
、stop database manager
の場合はstop database manager force
とそれぞれforce
を付与します。次にdb2gcf
ですが、-k
オプションを付与するとdb2stop force
に近い挙動を示すようです(´・ω・`)
すべて強制停止コマンド
su - db2inst1 -c "db2stop force"
db2 "stop database manager force"
db2gcf -k -d -i db2ins1
参考: