SQL ストアード・プロシージャー・デバッグの制限

その他

Linux の制限

ローカル・データベースの SQL ストアード・プロシージャーをデバッグするとき、エラー番号 SQL1224N を受け取る可能性があります。

COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N A データベース・エージェントが、要求に応じるために開始できなかったか、 データベース・システム・シャットダウンまたは強制コマンド の結果として終了されました。 SQLSTATE=55032

これは、 Linux カーネル (Linux カーネル Bugzilla bug #351) での 問題が原因です。 次の説明は、コール・レベル・インターフェース (CLI) では なく DB2 の TCPIP 接続メソッド (ループバックとして) を使用する解決策です。 このプロシージャーによって、デバッガーは以前と同じデータベース別名を使用します。

  1. リモート DB2 クライアントのポートがセットアップされていない場合、 ルートとしてログオンし、/etc/services に TCP/IP ポート を作成します (例えば、db2c_db2inst1 50000/tcp)。 あるいは、コントロール・センター を 使用して TCP/IP ポートを作成できます (データベース・インスタンスの 通信プロパティーを設定して)。 リモート DB2 クライアントの既存のポートは使用できます。

    以下のステップ 2 から 7 では、DB2 インスタンス所有者としてログインする必要があります。

  2. TCP/IP 通信プロトコルの接続マネージャーを開始するようにデータベース・マネージャーを構成します。 既にこのように構成されているかどうかわからない場合は、次のコマンドを実行します。
    db2set db2comm

    出力にキーワード tcpip が含まれていない 場合、次のコマンドを入力して、db2comm レジストリー変数を 更新し、tcpip を組み込む必要があります。

    db2set db2comm=<existing protocol names>,tcpip

    db2comm レジストリー変数は、 データベース・マネージャーの開始時に使用可能になるプロトコルの接続マネージャー を決定します。 キーワードを、 例えば、db2set db2comm=tcpip,appc のように コンマで区切ることにより、この変数を複数の通信プロトコルに設定できます。

    db2start レジストリー・パラメーターによって 指定されたプロトコルの接続マネージャーを 開始するには、db2comm コマンドを再実行する必要があります。 ステップ 7 で DB2 を再開するため、ここで再実行する必要はありません。

    .
  3. SVCENAME データベース・マネージャー構成パラメーター を /etc/services (ステップ 1) に定義されている 接続サービス名で更新します。

    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 で行います。

  4. 次のコマンドを入力することによってループバック・ノードをカタログします。
    db2 catalog tcpip node <nodename> remote <hostname> server <connection service name>

    ここで、

    • <nodename> は、 カタログされるノードのローカル別名です。 これは、ワークステーションでの任意の名前で、 ノードを識別するために使用されます (例えば、db2 catalog tcpip node mynode remote 127.0.0.1 server db2c_db2inst1)。
    • <hostname> は DB2 が インストールされているマシンの名前です。 指定するホスト名は、マシンの正確な名前で、大文字小文字が一致する必要があります。 マシンの名前がわからない場合は、コントロール・センターを 検査してください。

    カタログ・コマンドが正しく機能したことを検査するために、次のコマンドを実行します。

    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
  5. 以下のとおりにデータベースをカタログします。 それぞれのコマンドの結果を追跡する場合、以下のコマンドを参照してサンプル出力を生成します。
    1. db2 catalog db <database name> as <database alias>
    2. db2 uncatalog db <database name>
    3. db2 catalog db <database alias as <database name> at node <nodename>
    例:
    db2 catalog db WAS as WASLOOP
      db2 uncatalog db WASdb2 catalog db WASLOOP as WAS at node MYNODE

    注:

    • データベース別名は任意の名前にできますが、データベース名と同一にはできません。 別名は、8 文字以下でなければなりません。
    • データベースを正しくカタログしなかった場合、エラー番号 SQL1334N を受け取ります。
    • ストアード・プロシージャーをデバッグする際のデータベースごとに、ステップ 5a から 5c を繰り返す必要があります。

    ステップ 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
  6. 認証メカニズムをクライアント認証 に更新します。 次のコマンドを入力します。
    db2 update dbm cfg using authentication client

    このコマンドが正しく機能したことを検査するために、次のコマンドを使用して新しい設定を表示します。

    db2 get dbm cfg

    サンプル出力:

    ....
    Database manager authentication(AUTHENTICATION) = CLIENT
    ....
  7. DB2 を再開してディレクトリー・キャッシュを更新します。 例:
    db2stop
    db2start

    注: db2stop force を使用して、アクティブなデータベース接続をすべて閉じなければならない場合があります。

  8. WAS の場合、admin.config ファイルを更新する必要はありません。 WebSphere アプリケーションの場合、 既存のデータ・ソース構成を変更する必要はありません。
  9. データベースをドロップする場合、次のコマンドを実行します。
    1. db2 attach to <nodename> user <userid> using <password>
    2. db2 drop db <database name>
      例えば、
      db2 attach to MYNODE user myid using mypasswd
      db2 drop db WAS
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2002, 2004. All Rights Reserved.