プライマリ・コンテンツに移動
Oracle® C++ Call Interfaceプログラマーズ・ガイド
12c リリース1 (12.1)
B72464-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 Oracle XAライブラリ

Oracle XAライブラリは、Oracleサーバー以外のトランザクション・マネージャでグローバル・トランザクションを調整できるようにする外部インタフェースです。Oracle XAライブラリでは、分散トランザクションにおいてOracle以外のリソース・マネージャがサポートされます。これは、複数のデータベースおよびリソース間のトランザクションで特に有効です。

Oracle XAライブラリの実装は、X/Open Distributed Transaction Processing (DTP)ソフトウェア・アーキテクチャのXAインタフェース仕様に準拠しています。Oracle XAライブラリは、Oracle Database Enterprise Editionの一部としてインストールされます。

ここでは、次の項目について説明します。


関連項目:


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);

XAサポートのためのAPI

Environmentクラスの次のメソッドは、XAライブラリの使用をサポートしています。

さらに、SQLエラー(XA_OK)またはXAエラー(XAエラー・コード)のどちらが原因で例外が発生したのかを判断するには、XA対応アプリケーションにSQLExceptionクラスgetXAErrorCode()メソッドが必要です。