リリース情報


33.7 db2XaListIndTrans (sqlxphqr を 入れ替える新規 API)

db2XaListIndTrans - 未確定トランザクションをリストする

現在接続されているデータベースの全未確定トランザクションのリストを 提供します。

効力範囲

この API は、発行されたノードにだけ影響します。

権限

以下のいずれかとなります:

必須な接続

データベース

db2ApiDf.h

C API 構文



   /* File: db2ApiDf.h */
   /* API: 未確定トランザクションのリスト */
   /* ... */
   SQL_API_RC SQL_API_FN
   db2XaListIndTrans (
     db2Uint32 versionNumber,
     void * pParmStruct,
     struct sqlca * pSqlca);
 
   typedef SQL_STRUCTURE db2XaListIndTransStruct
   {
     db2XaRecoverStruct * piIndoubtData;
     db2Uint32            iIndoubtDataLen;
     db2Uint32            oNumIndoubtsReturned;
     db2Uint32            oNumIndoubtsTotal;
     db2Uint32            oReqBufferLen;
   } db2XaListIndTransStruct;
 
   typedef SQL_STRUCTURE db2XaRecoverStruct
   {
     sqluint32      timestamp;
     SQLXA_XID      xid;
     char           dbalias[SQLXA_DBNAME_SZ];
     char           applid[SQLXA_APPLID_SZ];
     char           sequence_no[SQLXA_SEQ_SZ];
     char           auth_id[SQL_USERID_SZ];
     char           log_full;
     char           connected;
     char           indoubt_status;
     char           originator;
     char           reserved[8];
   } db2XaRecoverStruct;

API パラメーター

versionNumber
入力。2 番目のパラメーター pParmStruct で切られている構造の バージョンとリリース・レベルを指定します。

pParmStruct
入力。db2XaListIndTransStruct 構造へのポインター。

pSqlca
出力。 sqlca 構造へのポインター。 この構造体の詳細について詳しくは、管理 API 解説書 をご覧ください。

piIndoubtData
入力。未確定データのバッファーを提供したアプリケーションへのポインターが、 返されます。 未確定データは db2XaRecoverStruct の形式です。 アプリケーションは db2XaRecoverStruct 構造のサイズを使用し、このパラメーターにより提供されたアドレスで始動することで 未確定トランザクションのリストを traverse することができます。

その値が NULL の場合、DB2 は必要なバッファーのサイズを計算し、 oReqBufferLen でのこの値を返します。oNumIndoubtsTotal は未確定トランザクションの数の合計を 含んでいます。 このアプリケーションは、必要なバッファー・サイズを割り振り、 API を再度発行します。

oNumIndoubtsReturned
出力。 未確定トランザクション・レコードの数は、pIndoubtData で指定された バッファーに返されます。

oNumIndoubtsTotal
出力。 未確定トランザクション・レコードの合計数は、API 呼び出し時に 使用可能です。 piIndoubtData バッファーがすべてのレコードを含めるのに小さすぎる 場合は、oNumIndoubtsTotaloNumIndoubtsReturned の合計を 超えます。 アプリケーションはすべてのレコードを取得するために、API を再発行 する場合があります。

注:
この数は、未確定トランザクションが自動的に、もしくは試行錯誤的に 繰り返し同期化しようとした結果、または他のトランザクションが未確認状態に入った結果として、 API 呼び出しの間で変化する場合があります。

oReqBufferLen
出力。 API 呼び出し時に、すべての未確定トランザクション・レコードを保留できる バッファー長が要求されました。 アプリケーションはこの値を、pIndoubtData の設定を NULL にした API 呼び出しにより、必要なバッファー・サイズを決定するために使用します。 この値は、その結果、必要なバッファーを割り振るために使用できるので、割り振られた バッファーのアドレスへの pIndoubtData 設定で、API を発行することができます。

注:
必須のバッファー・バッファー・サイズは、未確定トランザクションが自動的に、もしくは試行錯誤的に 繰り返し同期化しようとした結果、または他のトランザクションが未確認状態に入った結果として、 API 呼び出しの間で変化する場合があります。アプリケーションは これらを計算に入れて大規模なバッファーを割り振る場合があります。

timestamp
出力。 トランザクションが未確定状態に入った時点で、時刻を 指定します。

xid
出力。 グローバル・トランザクションを一意的に識別するためのトランザクション・マネージャーにより 割り当てられた XA ID を指定します。

dbalias
出力。 未確定トランザクションが検出されたデータベースの別名を指定 します。

applid
出力。 このトランザクションのデータベース・マネージャーにより割り当てられた アプリケーション ID を指定します。

sequence_no
出力。 applid の拡張版としてデータベース・マネージャーに割り当てられた シーケンス番号を指定します。

auth_id
出力。 トランザクションを実行するユーザーの許可 ID を指定します。

log_full
出力。 ログのフル状態がこのトランザクションが原因かどうか指示 します。 有効な値は 以下の通りです:

SQLXA_TRUE
この未確定トランザクションがログのフル状態の原因となっています。

SQLXA_FALSE
この未確定トランザクションはログのフル状態の原因になっていません。

connected
出力。 アプリケーションが接続されているかどうか指示します。有効な値は 以下の通りです:

SQLXA_TRUE
このトランザクションは、通常同期点処理を実行中で、2 フェーズ・コミットの 第 2 フェーズを待機しています。

SQLXA_FALSE
このトランザクションは、早期の障害により未確定のままであり、現在は トランザクション・マネージャーからの再同期化を待機しています。

indoubt_status
出力。 この未確定トランザクションの状況を指示します。 有効な値は 以下の通りです:

SQLXA_TS_PREP
このトランザクションは準備済みです。 この接続パラメーターは、トランザクションが 通常コミット・プロセスの第 2 フェーズを待機しているのか、エラーが発生し、 トランザクション・マネージャーが要求した再同期化を行っているのか 判定するために使用することができます。

SQLXA_TS_HCOM
このトランザクションは、試行錯誤的にコミットされました。

SQLXA_TS_HROL
このトランザクションは試行錯誤的にロールバックされました。

SQLXA_TS_MACK
このトランザクションは区分に分割されたデータベース内の 1 つのノードから コミットの承認が未着です。

SQLXA_TS_END
このトランザクションはこのデータベースで終了しています。 このトランザクションは 後で再活動化、コミット、ロールバックなどをする場合があります。またトランザクションが エラーになった場合、トランザクションが完了しなかった場合でも 可能です。これがそのケースの場合、このトランザクションは、試行錯誤の処置を要求します。 それは、トランザクションがロックしたままになったり、データ・アクセスが他のアプリケーションの妨げ になる場合があるためです。

使用上の注意

通常のアプリケーションは、データベースもしくは 分割データベース座標ノードへの現行接続を設定した後、以下のステップを実行 します:

  1. piIndoubtData に NULL をセットして db2XaListIndTrans をコールします。 これは oReqBufferLenoNumIndoubtsTotal で値を返します。
  2. バッファーを割り振るため、oReqBufferLen で戻り値を使用します。 このバッファーは 追加の未確定トランザクションがあると、大きさが十分でない場合があります。それは、 oReqBufferLen を取得するための API の初期呼び出しのためです。このアプリケーションは oReqBufferLen より大きなバッファーを提供する場合があります。
  3. すべての未確定トランザクション・レコードが取得されたか決定します。 これは oNumIndoubtsReturnedoNumIndoubtTotal の比較により行うことができます。oNumIndoubtsTotaloNumIndoubtsReturned より大きい場合、アプリケーションは以上のステップを繰り返すことが できます。

参考記述

管理 API 解説書 に「sqlxhfrg - トランザクション状態の喪失」、「sqlxphcm - 未確定トランザクションのコミット」、 および「sqlxphrl - 未確定トランザクションのロールバック」があります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]