更新情報については、『ルーチン・デバッガーに関する既知の問題 (Known problems with the Routine debugger)』を参照してください。
PL/SQL ルーチン・デバッガーは、グローバル変数はサポートしません。PL/SQL ストアード・プロシージャー、関数、または PL/SQL パッケージ内で使用されるグローバル変数は、「変数」ビューには表示されません。
ローカル DB2 データベース上のルーチンをデバッグする場合、エラー番号 SQL1224N:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N A database agent could not be started to service a request, or was terminated as a result of a database system shutdown or a force command. SQLSTATE=55032 を受け取ることがあります。
これは、Linux カーネルの問題によるものです (Linux kernel Bugzilla bug #351)。 以下の説明は、コール・レベル・インターフェース (CLI) の代わりに DB2 の TCPIP 接続方法を (ループバックとして) 使用する回避策です。 この手順により、デバッガーは前と同じデータベースの別名を使用します。
ステップ 2 から 7 は、DB2 インスタンスの所有者としてログインする必要があります。
db2set db2comm
出力にキーワード tcpip が含まれない場合は、以下のコマンドを入力して db2comm レジストリー変数に tcpip が含まれるように更新する必要があります。
db2set db2comm=<既存のプロトコル名>,tcpip
db2comm レジストリー変数により、データベース・マネージャーが開始したときにどの接続マネージャーが有効になるかが決定されます。 キーワードをコンマで区切ることによって、この変数を複数の通信プロトコルに設定できます。
db2comm レジストリー・パラメーターで指定したプロトコルの接続マネージャーを開始するためには、db2start コマンドを再発行しなければなりません。 ステップ 7 で DB2 を再始動するので、ここでは必要ありません。
SVCENAME の現行の設定を確認するには、以下のコマンドを入力します。
db2 get dbm cfg | grep -i svcename
SVCENAME の設定を更新する必要がある場合は、以下のコマンドを入力します。
db2 update dbm cfg using svcename <接続サービス名>
ここで、<接続サービス名> はケース・センシティブで、/etc/services に置いたサービス・ポート名 (例えば db2 update dbm cfg using svcename db2c_db2inst1) に一致しなければなりません。
データベース・マネージャーの構成の更新は、次に db2start コマンドが発行されたときに有効になります。 これは、ステップ 7 で行います。
db2 catalog tcpip node <ノード名> remote <ホスト名> server <接続サービス名>
ここで、
カタログ・コマンドが正しく動作したことを確認するには、以下のコマンドを発行します。
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.1 Service name = db2c_db2inst1
例:db2 catalog db WAS as WASLOOP db2 uncatalog db WAS db2 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
Sample output of 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