11 Oracle XAライブラリ
Oracle XAライブラリは、Oracleサーバー以外のトランザクション・マネージャでグローバル・トランザクションを調整できるようにする外部インタフェースです。Oracle XAライブラリでは、分散トランザクションにおいてOracle以外のリソース・マネージャがサポートされます。これは、複数のデータベースおよびリソース間のトランザクションで特に有効です。
Oracle XAライブラリの実装は、X/Open Distributed Transaction Processing (DTP)ソフトウェア・アーキテクチャのXAインタフェース仕様に準拠しています。Oracle XAライブラリは、Oracle Database Enterprise Editionの一部としてインストールされます。
この章には次のトピックが含まれます:
関連項目:
-
Oracle XAライブラリおよびアーキテクチャの詳細は、『Oracle Database開発ガイド』を参照してください。
11.1 XAおよびOCCIを使用したアプリケーションの開発
Oracleデータベースで接続、切断およびトランザクションを制御するには、アプリケーションとトランザクション・マネージャが連係している必要があります。OCCIには、XA内でEnvironment
オブジェクトおよびConnection
オブジェクトと対話し、これらをSELECT
問合せ、DML文、オブジェクト・アクセスなどのOracleデータベース・アクセスに使用できるようにするためのAPIがあります。
例11-1 XAによるトランザクション・マネージャの使用方法
/* Transaction manager opens connection to the Oracle server*/ tpopen("oracle_xa+acc=p/HR/password+sestm=10", 1, TMNOFLAGS); /* Transaction manager issues XA commands to start a global transaction*/ tpbegin(); /* Access the underlying Oracle database using OCCI */ Environment *xaenv = Environment::getXAEnvironment( "oracle_xa+acc=p/HR/password+sestm=10"); Connection *xaconn = xaenv->getXAConnection( "oracle_xa+acc=p/HR/password+sestm=10"); /* Use the Environment & Connection objects */ Statement *stmt = xaconn->createStatement( "Update Emp set sal = sal * 0.2"); ... /* Release the Environment & Connection objects */ xaenv->releaseXAConnection(xaconn); Environment::releaseXAEnvironment(xaenv);
11.2 XAサポート用のAPI
Environmentクラスの次のメソッドは、XAライブラリの使用をサポートしています。
さらに、SQLエラー(XA_OK
)またはXAエラー(XAエラー・コード)のどちらが原因で例外が発生したのかを判断するには、XA対応アプリケーションにSQLExceptionクラスのgetXAErrorCode()メソッドが必要です。