この問題を回避するために、 ストアード・プロシージャーをデバッグする前にデータベースをインポートすることをお勧めします。
ローカル・データベースの SQL ストアード・プロシージャーをデバッグするとき、エラー番号 SQL1224N を受け取る可能性があります。
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N A データベース・エージェントが、要求に応じるために開始できなかったか、 データベース・システム・シャットダウンまたは強制コマンド の結果として終了されました。 SQLSTATE=55032
これは、 Linux カーネル (Linux カーネル Bugzilla bug #351) での 問題が原因です。 次の説明は、コール・レベル・インターフェース (CLI) では なく DB2 の TCPIP 接続メソッド (ループバックとして) を使用する解決策です。 このプロシージャーによって、デバッガーは以前と同じデータベース別名を使用します。
以下のステップ 2 から 7 では、DB2 インスタンス所有者としてログインする必要があります。
db2set db2comm
出力にキーワード tcpip が含まれていない 場合、次のコマンドを入力して、db2comm レジストリー変数を 更新し、tcpip を組み込む必要があります。
db2set db2comm=<existing protocol names>,tcpip
db2comm レジストリー変数は、 データベース・マネージャーの開始時に使用可能になるプロトコルの接続マネージャー を決定します。 キーワードを、 例えば、db2set db2comm=tcpip,appc のように コンマで区切ることにより、この変数を複数の通信プロトコルに設定できます。
db2start レジストリー・パラメーターによって 指定されたプロトコルの接続マネージャーを 開始するには、db2comm コマンドを再実行する必要があります。 ステップ 7 で DB2 を再開するため、ここで再実行する必要はありません。
.SVCENAME の現行の設定を確認するために、次のコマンドを入力します。
db2 get dbm cfg | grep -i svcename
SVCENAME の設定を更新する必要がある場合、次のコマンドを入力します。
db2 update dbm cfg using svcename <connection service name>
ここで、<connection service name> は 大/小文字の区別があり、/etc/services に入れた サービス・ポートの名前と一致する必要 があります (例えば、db2 update dbm cfg using svcename db2c_db2inst1)。
データベース・マネージャー構成の更新は、 次回 db2start コマンドを実行するまでは有効ではありません。 これは、ステップ 7 で行います。
db2 catalog tcpip node <nodename> remote <hostname> server <connection service name>
ここで、
カタログ・コマンドが正しく機能したことを検査するために、次のコマンドを実行します。
db2 list node directory
このコマンドのサンプル出力 (読みやすさを考慮してブランク行を除去してあります):
Node Directory Number of entries in the directory = 1 Node 1 entry: Node name = MYNODE Comment = Protocol = TCPIP Hostname = 127.0.0.1Service name = db2c_db2inst1
例:db2 catalog db WAS as WASLOOP db2 uncatalog db WASdb2 catalog db WASLOOP as WAS at node MYNODE
注:
ステップ 5a から 5c のサンプル出力
ステップ 5a の前に、WAS という名前のローカル・データベースが既に作成されています。 コマンド db2 list db directory の出力は、次のメッセージのようになります。
System Database Directory Number of entries in the directory = 1 Database 1 entry: Database alias = WAS Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
ステップ 5a の後、db2 list db directory の出力は、次のメッセージのようになります。
System Database Directory Number of entries in the directory = 2 Database 1 entry: Database alias = WAS Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0 Database 2 entry: Database alias = WASLOOP Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
ステップ 5b の後、db2 list db directory の出力は、次のメッセージのようになります。
System Database Directory Number of entries in the directory = 1 Database 1 entry: Database alias = WASLOOP Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
ステップ 5c の後、db2 list db directory の出力は、次のメッセージのようになります。
System Database Directory Number of entries in the directory = 2 Database 1 entry: Database alias = WAS Database name = WASLOOP Node name = MYNODE Database release level = 9.00 Comment = Directory entry type = Remote Catalog node number = -1 Database 2 entry: Database alias = WASLOOP Database name = WAS Local database directory = /home/ctsui Database release level = 9.00 Comment = Directory entry type = Indirect Catalog node number = 0
catalog db コマンドが正しく機能したことを検査するために、次の 2 つのコマンドを実行します (下記のサンプル出力を参照します)。
db2 connect to wasloop db2 connect to was
ここで、db2 connect to wasloop は接続情報を印刷し、db2 connect to was では SQL1403N が指定されます。
db2 connect to wasloop のサンプル出力:
Database Connection Information System Database Directory Database server = DB2/6000 6.1.0 SQL authorization ID = CTSUI Local database alias = WASLOOP
db2 connect to was のサンプル出力:
Database Connection Information System Database Directory Database server = DB2/6000 6.1.0 SQL authorization ID = CTSUI Local database alias = WAS
db2 update dbm cfg using authentication client
このコマンドが正しく機能したことを検査するために、次のコマンドを使用して新しい設定を表示します。
db2 get dbm cfg
サンプル出力:
.... Database manager authentication(AUTHENTICATION) = CLIENT ....
db2stop db2start
注: db2stop force を使用して、アクティブなデータベース接続をすべて閉じなければならない場合があります。
例えば、db2 attach to MYNODE user myid using mypasswd db2 drop db WAS