-CANCEL THREAD コマンド ( )Db2
-CANCEL THREAD コマンドは、特定のローカルスレッドまたは分散スレッドの処理をキャンセルします。
省略形: -CAN THD
環境 -CANCEL THREAD
このコマンドは、 z/OS® コンソール、TSO下のDSNセッション、 DB2I パネル( DB2 COMMANDS)、 IMS または CICS® 端末、または計装機能インターフェース(IFI)を使用するプログラムから発行することができます。
データ共用範囲: メンバー
承認 -CANCEL THREAD
- SYSOPR 権限
- SYSCTRL 権限
- SYSADM 権限
LOCAL オプションを指定すると、許可は必要ありません。
ログオンしている z/OS コンソールまたは TSO SDSF から発行された Db2 コマンドは、1 次および 2 次許可 ID を使用して Db2 許可によって検査することができます。
z/OS にログインしたユーザーIDは、 または同様のセキュリティサーバーで定義されている必要があります。 RACF
構文 -CANCEL THREAD
オプションの説明 -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 進数文字からなります。
複数の分散スレッドが同じ LUWID を持つことがあります。 例えば、パッケージ・ベースの連続ブロック・フェッチの場合、リクエスターがアプリケーション内の各ステートメントの 2 次接続を開きます。 サーバーでは、すべてのデータベースが、同じ LUWID を持つそうした 2 次接続に関する作業を処理するスレッドにアクセスします。 この場合、その同じ LUWID に指定されたすべての分散スレッドが取り消されます。
LUWIDは、 Db2 DISPLAY THREADコマンドやその他の Db2 メッセージから決定できます。
- 完全修飾 LU ネットワーク名。以下の要素からなります。
- ( 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)を知る必要があります。 以下のステップを実行してください。
- Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、
CANCEL DDF THREAD により提供されるトークンまたは LUWID です。)これにより、キャンセルしなければならないVTAMセッションIDが取得できます。 以下 の DISPLAY THREAD 出力結果に示されているように、 セッションは列ヘッダー SESSID によって識別されます。
-DIS THD(*) LUWID(123) DETAILDSNV401I - 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 COMPLETIONNは、VTAMでスレッドが処理中であることを示します。
- 取り消すスレッドの SESSID の、位置 3 から 16 を記録する。 (上記の DISPLAY THREAD 出力結果では、値 D3590EA1E89701 と D3590EA1E89822 を 記録することになります。)
- 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 - Db2 スレッドに関連付けられている各VTAM SIDに対して、VTAMコマンドVARY NET,TERMを発行します。 この場合、VTAMで処理中のセッションIDをDISPLAY THREADが示すもののみをキャンセルする必要があるかもしれません( D2D3590EA1E89822 )。
- Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、
CANCEL DDF THREAD により提供されるトークンまたは LUWID です。)
- TCP/IPコマンドでTCP/IP分散スレッドをキャンセルする
- CANCEL コマンドで分散スレッドが終了しない場合には、スレッドが TCP/IP でハングアップしている可能性があります。 TCP/IP DROP コマンドを使用して、
スレッドの接続 ID を取り消します。 これを行うには、その
スレッドに対応する TCP/IP 接続 ID を最初に決めておく必要があります。スレッドが Db2 リクエスト側スレッドであるか、サーバースレッドであるかによって、以下の手順に従います
- リクエスター・スレッドの TCP/IP 接続の終了:
- 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 で処理中であることを示しています。
- 関連する 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 - 次のようにして、接続を終了する。
v tcpip,,drop,conn=0000049d EZZ0060I PROCESSING COMMAND: VARY TCPIP,,DROP, CONN=0000049D EZZ0053I COMMAND VARY DROP COMPLETED SUCCESSFULLY
- Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、DISPLAY THREAD により提供されるトークンまたは LUWID です)。
- サーバー・スレッドの TCP/IP 接続の終了:
- 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 です。
- 関連する 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 を書き留める。
- 次のようにして、接続を終了する。
v tcpip,,drop,conn=0000048e EZZ0060I PROCESSING COMMAND: VARY TCPIP,,DROP, CONN=0000048E EZZ0053I COMMAND VARY DROP COMPLETED SUCCESSFULLY
- Db2 コマンドを発行します。DISPLAY THREAD(*) LUWID(nnnn) DETAIL。 ( nnnn の値は、
CANCEL THREAD により提供されるトークンまたは LUWID です。)
- リクエスター・スレッドの TCP/IP 接続の終了:
- TCP/IPコマンドを使用して加速スレッドをキャンセルする
- CANCEL コマンドでアクセラレーテッド・スレッド (アクティブなアクセラレーター・プロセスが実行されているスレッド) が終了しない場合、そのスレッドは TCP/IP でハングアップしている可能性があります。 TCP/IP DROP コマンドを使用して、
スレッドの接続 ID を取り消します。 これを行うには、その
スレッドに対応する TCP/IP 接続 ID を最初に決めておく必要があります。
- アクセラレーテッド・スレッドの TCP/IP 接続を終了するには:
- Db2 コマンドDISPLAY THREAD(*) ACCEL(*) DETAILを発行します。
- 以下の DISPLAY THREAD 出力で示すような方式で、パートナーへの接続のための IP アドレス
とローカル・ポートを検索する。
この場合は、パートナーの IP アドレスは 9.30.30.177 で、ポートは 446 で、ローカル・ポートは 1080 です。 AC は、スレッドがアクセラレーターで処理中であることを示します。)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 - 関連する TCP/IP 接続 ID を次のように決定する。
この場合、アクセラレーテッド TCP/IP 接続 ID は 000009E3 です。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 - 次のようにして、接続を終了する。
V TCPIP,,DROP,CONN=000009E3 EZZ0060I PROCESSING COMMAND: VARY TCPIP,,DROP,CONN=000009E3 EZZ0053I COMMAND VARY DROP COMPLETED SUCCESSFULLY
- アクセラレーテッド・スレッドの TCP/IP 接続を終了するには:
例 -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)
