リリース情報


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

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

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

有効範囲

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

権限

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

必要な接続

データベース

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 - 未確定トランザクションのロールバック」があります。


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