-CANCEL THREAD コマンド ( )Db2

-CANCEL THREAD コマンドは、特定のローカルスレッドまたは分散スレッドの処理をキャンセルします。

省略形: -CAN THD

環境 -CANCEL THREAD

このコマンドは、 z/OS® コンソール、TSO下のDSNセッション、 DB2I パネル( DB2 COMMANDS)、 IMS または CICS® 端末、または計装機能インターフェース(IFI)を使用するプログラムから発行することができます。

データ共用範囲: メンバー

承認 -CANCEL THREAD

このコマンドを実行するには、LOCAL オプションを指定しない場合には、以下のいずれかの権限を含むプロセスの特権セットを使用する必要があります。
  • SYSOPR 権限
  • SYSCTRL 権限
  • SYSADM 権限

LOCAL オプションを指定すると、許可は必要ありません。

ログオンしている z/OS コンソールまたは TSO SDSF から発行された Db2 コマンドは、1 次および 2 次許可 ID を使用して Db2 許可によって検査することができます。 変更の開始 z/OS にログインしたユーザーIDは、 または同様のセキュリティサーバーで定義されている必要があります。 RACF変更の終わり

構文 -CANCEL THREAD

構文図を読むビジュアルシンタックスダイアグラムをスキップするCANCELTHREAD( トークン)DDF THREAD(luwidトークン)DUMPLOCALNOBACKOUTFORCE

オプションの説明 -CANCEL THREAD

スレッド (トークン
処理を取り消したい特定のスレッド (分散でもそれ以外でも) を 識別します。 Db2 Db2 サブシステム内では一意ですが、サブシステム全体では一意とは限りません。各スレッドにトークンを割り当てます。

トークンは 1 から 6 桁の 10 進数です。 トークンが何であるかは、 Db2 コマンドDISPLAY THREADを発行するか、IFCID 147または148に対するIFI READSコールを使用することで確認できます。 トークンは、LUWIDを表示する Db2 メッセージの等号の後に表示されることもあります。 トークンが 0 の場合には、 そのトークンのスレッドを取り消すことはできません。

DDF THREAD
処理を取り消したい分散スレッドを識別します。
( luwid)
作業論理単位 ID (LUWID) であり、以下で構成されています。
  • 完全修飾 LU ネットワーク名。以下の要素からなります。
    • 1 から 8 文字のネットワーク ID
    • ピリオド
    • 1 から 8 文字のネットワーク LU 名
  • LUW インスタンス番号。その作業単位を固有に識別する 12 個の 16 進数文字からなります。
ピリオドで区切られた3つのフィールドを入力すると、 Db2 はLUWIDを入力しているものとみなします。

複数の分散スレッドが同じ LUWID を持つことがあります。 例えば、パッケージ・ベースの連続ブロック・フェッチの場合、リクエスターがアプリケーション内の各ステートメントの 2 次接続を開きます。 サーバーでは、すべてのデータベースが、同じ LUWID を持つそうした 2 次接続に関する作業を処理するスレッドにアクセスします。 この場合、その同じ LUWID に指定されたすべての分散スレッドが取り消されます。

LUWIDは、 Db2 DISPLAY THREADコマンドやその他の Db2 メッセージから決定できます。

( token)
THREAD (token) を参照してください。
ダンプ
CANCEL THREAD が発行された際にダンプが生成され、スレッドが Db2 でアクティブであることを指定します。 ダンプは、診断のために使用できます。

Db2 で現在アクティブではないスレッドをキャンセルすると、 Db2 はハードキャンセルを実行し、ダンプは提供されません。 Db2 を離れ、アプリケーション作業を行うために Db2 にいるスレッドは、現在アクティブではないと見なされます。

LOCAL
Db2 が、 トークンに一致するスレッドを提携エージェントのホームアドレス空間で検索することを指定します。 Db2 がスレッドを見つけた場合、そのスレッドに対してソフトキャンセルを実行します。 LOCAL オプションは、IFI インターフェースを介して発行される CANCEL THREAD コマンドにのみ適用されます。 IFIアプリケーションは、キャンセルする必要のあるスレッドと同じアドレス空間で実行されなければならず、そのスレッドはRRSアタッチメント機能を通じて Db2 に接続されていなければなりません。
NOBACKOUT
Db2 がトランザクションのロールバック処理中にデータを元に戻さないことを指定します。 NOBACKOUT オプションを 指定してスレッドを取り消すと、オブジェクトは不整合状態のままと なります。 データの不整合解決も予定内であるという場合以外、NOBACKOUT オプションを 指定してこのコマンドを発行しないでください。

NOBACKOUT 要求は複数発行することが可能です。 しかし、スレッドがアクティブで、 要求が受け入れられた場合、後続の要求は無視されます。 要求が 失敗した場合のみ、後続の要求を発行することを選択できます。 スレッドが 変更するオブジェクトは、リカバリー (バックアウト) されます。 バックアウト処理が失敗した場合、 そのオブジェクトは REFRESH PENDING (REFP) とマークされます。また、 データベース例外表では RECOVER PENDING (RECP) または REBUILD PENDING (RBDP または PSRBD) と マークされます。 このオブジェクトの REFP 状況を解決するには、RECOVER ユーティリティー を実行してオブジェクトを以前の時点の状況にリカバリーするか、 または LOAD REPLACE をそのオブジェクトに対して実行します。

FORCE
Db2 サーバーからのリモート接続のスレッドをパージしようとします。 FORCEオプションは、FORCEオプションなしでCANCEL THREADのリクエストが発行された後にのみ受け付けられます。
注意: FORCEオプションは、 Db2 サブシステムに影響を与える可能性があります。 Db2 サブシステムに影響を与えるスレッドをキャンセルするために使用します。FORCEを使用しないとキャンセルできません。

変更の開始FORCEオプションは、ネットワークでスレッドがハングした場合に使用できますが、 Db2 がスレッドを処理している間にハングしたスレッドには役立ちません。変更の終わり

使用上の注意事項 -CANCEL THREAD

ローカルスレッドのキャンセル
CANCEL コマンドは、スレッドが終了するようスケジュールします。 Db2 にないスレッドは即座に終了します。
ジョブのキャンセルやトランザクションのパージの前に、 Db2 スレッドをキャンセルする:
アクティブな Db2 スレッドを持つジョブまたはトランザクションをキャンセルまたはパージする必要がある場合、ベスト・プラクティスは、タスクをキャンセルまたはパージする前に Db2 CANCEL THREAD コマンドを発行することです。 CANCEL THREAD コマンドが発行されると、Db2 は、Db2 内の予測可能な場所でスレッドを異常終了させます。 このプロセスにより、タスクが正常に終了します。
NOT LOGGEDテーブルスペースを更新するアプリケーションのスレッドをキャンセルする
NOT LOGGED 表スペースを更新するアプリケーションに対して CANCEL コマンドを発行する場合には、注意が必要です。 CANCEL THREAD コマンドは NOT LOGGED 表スペースを LPL に入れる可能性があります。その場合、 表スペースはリカバリーが必要になります。
分散スレッドのキャンセル
分散スレッドを 取り消すと、スレッドが未確定状態になることがあります。 CANCEL コマンドが原因で DDF スレッドがアクティブ状態から未確定状態 に変わってしまった場合には、メッセージ DSNL450I が出されます。 Db2 疑義状態がコーディネータによる自動疑義解決、またはコマンドRECOVER INDOUBTによる解決によって解消された場合、スレッドが保持するリソースを解放します。

コマンドで指定されたスレッドがグローバル・トランザクションの一部である場合、 コマンドはグローバル・トランザクション内のすべてのスレッドに対して実行されます。

CANCELコマンドは、 Db2 でスレッドを終了するようにスケジュールします。 終了するには、スレッドは Db2 内で処理中である必要があります。 スレッドが終了しない場合、以下のような原因が考えられます。
  • Db2 以外の場所で処理される可能性があり、おそらくアプリケーション内。 その場合、アプリケーションが Db2 にリクエストを送信するまでスレッドは終了しません。 z/OS CANCELコマンドを使用して、アプリケーションを直ちに終了します。
  • ネットワーク操作がハングアップした。 VTAM® またはTCP/IP コマンドを使用して、 ネットワーク操作で処理を Db2 に戻し、スレッドを終了できるようにします。
VTAMコマンドによるSNA分散スレッドのキャンセル
CANCELコマンドで分散スレッドが終了しない場合は、VTAMでハングアップしている可能性がある。 VTAM VARY NET,TERMコマンドを使用して、スレッドのVTAMセッションをキャンセルします。
スレッドの VTAM セッションをキャンセルするには、そのスレッドに対応する VTAM セッション ID(SID)を知る必要があります。 以下のステップを実行してください。
  1. Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、 CANCEL DDF THREAD により提供されるトークンまたは LUWID です。)
    これにより、キャンセルしなければならないVTAMセッションIDが取得できます。 以下 の DISPLAY THREAD 出力結果に示されているように、 セッションは列ヘッダー SESSID によって識別されます。
    -DIS THD(*) LUWID(123) DETAIL
    DSNV401I - DISPLAY THREAD REPORT FOLLOWS:                       
    DSNV402I - ACTIVE THREADS:                                      
    NAME     ST A   REQ ID           AUTHID    PLAN      ASID TOKEN 
    BATCH    TR *     5 BKH2C        SYSADM    BKH2      000D   123 
     V444-DB2NET.LUND0.C4B23F1F4D06=123 ACCESSING DATA AT           
      (  1)SAN JOSE-LUND1                                           
     V447--INDEX SESSID           A ST TIME                         
     V448--(  1) 00D3590EA1E89701     S1    0923816181452           
     V448--(  1) 00D3590EA1E89822   N R1    0923816181584           
    DISPLAY ACTIVE REPORT COMPLETE                                  
    DSN9022I - DSNVDT '-DIS THD' NORMAL COMPLETION     

    Nは、VTAMでスレッドが処理中であることを示します。

  2. 取り消すスレッドの SESSID の、位置 3 から 16 を記録する。 (上記の DISPLAY THREAD 出力結果では、値 D3590EA1E89701 と D3590EA1E89822 を 記録することになります。)
  3. VTAMコマンドDISPLAY NETを発行して、VTAMセッションIDを表示します。 取り消したいスレッドは SESSID の位置 3 から 16 が一致しているもので、 その対応するセッション ID は太字で示されています。 以下はこのコマンドの出力例です。
    D NET,ID=LUND0,SCOPE=ACT
     
    IST097I DISPLAY ACCEPTED
    IST075I NAME = LUND0, TYPE = APPL
       IST486I STATUS= ACTIV, DESIRED STATE= ACTIV
       IST171I ACTIVE SESSIONS = 0000000005, SESSION REQUESTS = 0000000000
       IST206I SESSIONS:
       IST634I NAME     STATUS           SID          SEND   RECV  VR  TP  NETID
       IST635I LUND1    ACTIV-S     D24B171032B76E65  0051   0043   0   0  NET2
       IST635I LUND1    ACTIV-S     D24B171032B32545  0051   0043   0   0  NET2
       IST635I LUND1    ACTIV-R     D2D3590EA1E89701  0022   0031   0   0  NET2
       IST635I LUND1    ACTIV-R     D2D3590EA1E89802  0022   0031   0   0  NET2
       IST635I LUND1    ACTIV-R     D2D3590EA1E89822  0022   0031   0   0  NET2
       IST314I END
  4. Db2 スレッドに関連付けられている各VTAM SIDに対して、VTAMコマンドVARY NET,TERMを発行します。 この場合、VTAMで処理中のセッションIDをDISPLAY THREADが示すもののみをキャンセルする必要があるかもしれません( D2D3590EA1E89822 )。
TCP/IPコマンドでTCP/IP分散スレッドをキャンセルする
CANCEL コマンドで分散スレッドが終了しない場合には、スレッドが TCP/IP でハングアップしている可能性があります。 TCP/IP DROP コマンドを使用して、 スレッドの接続 ID を取り消します。 これを行うには、その スレッドに対応する TCP/IP 接続 ID を最初に決めておく必要があります。
スレッドが Db2 リクエスト側スレッドであるか、サーバースレッドであるかによって、以下の手順に従います
  • リクエスター・スレッドの TCP/IP 接続の終了:
    1. Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、DISPLAY THREAD により提供されるトークンまたは LUWID です)。
      以下の DISPLAY THREAD 出力で示すような方式で、パートナーへの接続のための IP アドレス とローカル・ポートを検索する。
      #display thread(*) detail 
                                         
      DSNV401I  # DISPLAY THREAD REPORT FOLLOWS -                           
      DSNV402I  # ACTIVE THREADS -                                          
      NAME     ST A   REQ ID           AUTHID   PLAN     ASID TOKEN         
      TEST0001 TR       4 CTHDCORID001 SYSADM   DONSQL1  0027    19         
       V444-USIBMSY.SYEC715B.C4B220851392=19 ACCESSING DATA AT              
        (  1)-STL714A-::FFFF:9.112.114.102..446                             
       V447--INDEX SESSID           A ST TIME                               
       V448--(  1) 1028:446         N R2 0923814011448                      
      DISPLAY ACTIVE REPORT COMPLETE                                        
      DSN9022I  # DSNVDT '-DIS THD' NORMAL COMPLETION                                                       

      この場合は、パートナーの IP アドレスとポートは、9.112.114.102 446 で、 ローカル・ポートは 1028 です。 N は、スレッドが TCP/IP で処理中であることを示しています。

    2. 関連する TCP/IP 接続 ID を次のように決定する。
      d tcpip,,netstat,conn,ipaddr=9.112.114.102    
                                 
      EZZ2500I NETSTAT CS V2R10 TCPIP                                       
      USER ID  CONN     LOCAL SOCKET           FOREIGN SOCKET         STATE    
      V71BDIST 0000049D 9.112.114.103..1028    9.112.114.102..446     ESTBLSH  
      1 OF 1 RECORDS DISPLAYED                                                 
    3. 次のようにして、接続を終了する。
      v tcpip,,drop,conn=0000049d 
                           
      EZZ0060I PROCESSING COMMAND: VARY TCPIP,,DROP,   
       CONN=0000049D                                   
      EZZ0053I COMMAND VARY DROP COMPLETED SUCCESSFULLY                                                
  • サーバー・スレッドの TCP/IP 接続の終了:
    1. Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、 CANCEL THREAD により提供されるトークンまたは LUWID です。)
      以下の DISPLAY THREAD 出力で示すような方式で、パートナーへの接続のための IP アドレス とローカル・ポートを検索する。
      !display thread(*) detail                                     
                                                                    
      DSNV401I ! DISPLAY THREAD REPORT FOLLOWS -                    
      DSNV402I ! ACTIVE THREADS -                                   
      NAME     ST A   REQ ID           AUTHID   PLAN     ASID TOKEN 
      TEST0001 RA *     2 CTHDCORID001 SYSADM   DONSQL1  002D    11 
       V445-USIBMSY.SYEC715B.C4B24232F81D=11 ACCESSING DATA FOR     
        (  1)::FFFF:9.112.114.103                                   
       V447--INDEX SESSID           A ST TIME                       
       V448--(  1) 446:1029         W R2 0923816315680              
      DISPLAY ACTIVE REPORT COMPLETE                                
      DSN9022I ! DSNVDT '-DIS THD' NORMAL COMPLETION                              

      この場合は、パートナーの IP アドレスは、9.112.114.103 で、 ローカル・ポートは 1029 です。

    2. 関連する TCP/IP 接続 ID を次のように決定する。
      d tcpip,,netstat,conn,ipaddr=9.112.114.103 
                                   
      EZZ2500I NETSTAT CS V2R8 TCPIP                                       
      USER ID  CONN     LOCAL SOCKET           FOREIGN SOCKET         STATE   
      V61ADIST 0000048E 9.112.114.102..446     9.112.114.103..1029    ESTABLS 
      1 OF 1 RECORDS DISPLAYED                                                                                              

      外部ソケット (FOREIGN SOCKET) がパートナーの IP アドレスとポート (9.112.114.103 1029) を 示している項目を検索し、CONN を書き留める。

    3. 次のようにして、接続を終了する。
      v tcpip,,drop,conn=0000048e 
                            
      EZZ0060I PROCESSING COMMAND: VARY TCPIP,,DROP,    
       CONN=0000048E                                    
      EZZ0053I COMMAND VARY DROP COMPLETED SUCCESSFULLY 
TCP/IPコマンドを使用して加速スレッドをキャンセルする
CANCEL コマンドでアクセラレーテッド・スレッド (アクティブなアクセラレーター・プロセスが実行されているスレッド) が終了しない場合、そのスレッドは TCP/IP でハングアップしている可能性があります。 TCP/IP DROP コマンドを使用して、 スレッドの接続 ID を取り消します。 これを行うには、その スレッドに対応する TCP/IP 接続 ID を最初に決めておく必要があります。
  • アクセラレーテッド・スレッドの TCP/IP 接続を終了するには:
    1. Db2 コマンドDISPLAY THREAD(*) ACCEL(*) DETAILを発行します。
    2. 以下の DISPLAY THREAD 出力で示すような方式で、パートナーへの接続のための IP アドレス とローカル・ポートを検索する。
       )DISPLAY THREAD(*) ACCEL(*) DETAIL
                        
       DSNV401I  ) DISPLAY THREAD REPORT FOLLOWS -
       DSNV402I  ) ACTIVE THREADS - 681
       NAME     ST A   REQ ID           AUTHID   PLAN     ASID TOKEN
       BATCH    AC *    39 ACCEL1       SYSADM   DSNTEP2  002B     3
        V666 ACC=BLINK1,ADDR=::FFFF:9.30.30.177..446:1080
        V436-PGM=DSNTEP2.DSNTEP2, SEC=1, STMNT=2256
       DISPLAY ACTIVE REPORT COMPLETE
       DSN9022I  ) DSNVDT '-DIS THD' NORMAL COMPLETION
      この場合は、パートナーの IP アドレスは 9.30.30.177 で、ポートは 446 で、ローカル・ポートは 1080 です。 AC は、スレッドがアクセラレーターで処理中であることを示します。
    3. 関連する TCP/IP 接続 ID を次のように決定する。
      D TCPIP,,NETSTAT,CONN,IPADDR=9.30.30.177
                        
       EZD0101I NETSTAT CS V1R10 TCPIP
       USER ID  CONN     STATE
       V91ADBM1 000009E3 ESTBLSH
         LOCAL SOCKET:   ::FFFF:9.30.222.34..1080
         FOREIGN SOCKET: ::FFFF:9.30.30.177..446
       1 OF 1 RECORDS DISPLAYED
       END OF THE REPORT
      この場合、アクセラレーテッド TCP/IP 接続 ID は 000009E3 です。
    4. 次のようにして、接続を終了する。
       V TCPIP,,DROP,CONN=000009E3
                        
       EZZ0060I PROCESSING COMMAND: VARY TCPIP,,DROP,CONN=000009E3
       EZZ0053I COMMAND VARY DROP COMPLETED SUCCESSFULLY

-CANCEL THREAD

例: ローカル・スレッドを取り消す
DISPLAY THREAD コマンドを使用して検出したトークンを持つ非分散スレッドを取り消し、診断ダンプを作成するには、以下のコマンドを発行します。
-CANCEL THREAD (123) DUMP
例: 分散スレッドを取り消す
DISPLAY THREAD コマンドを使用して検出した LUWID を持つ 分散スレッドを取り消すには、以下のコマンドを出します。
-CANCEL DDF THREAD (LUDALLAS.DB2SQL1.3042512B6425)
-DISPLAY THREAD からの出力結果が、この LUWID に関連したスレッド ID と トークンが 45162 であったことを示しているものとします。 このスレッドは、さらに 以下のいずれかのコマンドを出して取り消すことが可能です。
-CANCEL DDF THREAD (45162)
-CANCEL THREAD (45162)