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()メソッドが必要です。