Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


4.5.1 OpenTP1のトランザクション処理との関係

DBMSを使う場合,X/Openで規定したDTPモデルのXAインタフェースをサポートしたDBMSかどうかで,OpenTP1のトランザクションと連携できるかどうか決まります。

〈この項の構成〉

(1) XAインタフェースをサポートしたDBMSの場合

XAインタフェースをサポートしたDBMSの場合は,OpenTP1のトランザクションと同期を取って更新できます。同期を取る場合は,OpenTP1の同期点を制御する関数(dc_trn_begin関数,dc_trn_unchained_commit関数,tx_begin(),tx_commit() など)を使います。DBMSで提供する同期点を制御する機能は,OpenTP1の同期点を制御する関数と併用できません。DBMSの同期点を制御する機能を使った場合,リソースの不整合が起こってしまう場合があります。

OpenTP1のトランザクション処理で制御できるDBMSは,XAインタフェースをサポートした製品に限ります。

XAインタフェースをサポートしている場合,複数のデータベースへアクセスするUAPでは,複数のデータベースを,整合性を保ちながら更新できます。次に示すOpenTP1のリソースマネジャは,XAインタフェースをサポートしています。

そのため,XAインタフェースに準拠したDBMSと,OpenTP1のリソースマネジャの両方にアクセスするUAPでも,OpenTP1のトランザクションとして処理できます。障害が原因でUAPが異常終了した場合や,OpenTP1を再開始(リラン)した場合でも,DBMSとOpenTP1リソースマネジャの両方のトランザクションを,OpenTP1で決着します。

(2) XAインタフェースをサポートしていない,またはXAインタフェースでOpenTP1と連携していないDBMSの場合

XAインタフェースをサポートしていないDBMSの場合,DBMSへのアクセスはできますが,OpenTP1のトランザクションとは同期を取れません。

XAインタフェースでOpenTP1と連携していないため,DBMSへのアクセス中に,障害が原因でUAPが異常終了した場合や,OpenTP1を再開始(リラン)した場合には,OpenTP1からDBMSへトランザクションの決着を指示しません。そのため,DBMS独自の機能でトランザクションを回復する必要があります。