XAインタフェースでは、サービスを関数として規定します。Symfoware/RDBがサポートする関数を“表14.1 XAインタフェースのサポート範囲”に示します。
Symfoware/RDBでは、以下の機能はサポートしません。
動的登録
複数のプロセスでの同一XIDの使用
以下のシーケンスでの関数呼び出しは、エラーとなります。
すでに実行済みのxa_commit/xa_rollbackで指定されたXIDを指定したxa_startの実行
名前 | サポート | 機能 |
---|---|---|
ax_reg | × | ――――― |
ax_unreg | × | ――――― |
xa_open | ○ | xa関数を発行するプロセスで最初に発行する必要があります。 |
xa_close | ○ | xa_openを発行したプロセスで発行してください。 |
xa_start | ○ | グローバルトランザクションをSymfoware/RDBトランザクションと対応づけます。 |
xa_end | ○ | xa_startで対応づけた、グローバルトランザクションとSymfoware/RDBのトランザクションの関係を解除または一時的に中断します。 中断したトランザクションは同一プロセスからxa_startが再開モードで発行された時に再開されます。 |
xa_recover | ○ | プリペア状態にあるSymfoware/RDBのトランザクションを通知します。 |
xa_prepare | ○ | Symfoware/RDBのトランザクションをプリペア状態にします。 |
xa_commit | ○ | Symfoware/RDBのトランザクションをコミットします。 |
xa_rollback | ○ | Symfoware/RDBのトランザクションをロールバックします。 |
xa_forget | ○ | 指定されたXIDに関する情報を削除します。 |
xa_complete | × | ――――― |
○:サポート
×:未サポート
Oracle Tuxedoにおいて以下の条件を満たす場合には、複数のOracle Tuxedoサーバアプリケーションは、Symfoware/RDBに対して同一XIDを使用します。
Symfoware/RDBをRMとして使用する。かつ
同一のグローバルトランザクション内で呼び出される。かつ
Oracle Tuxedoサーバアプリケーションのサーバグループが同一である。
上記に該当する場合には、以下のいずれかの対処を行ってください。
同一グローバルトランザクション内でSymfoware/RDBにアクセスするOracle Tuxedoサーバアプリケーションの呼び出しを1回にする。
同一グローバルトランザクション内でSymfoware/RDBにアクセスするOracle Tuxedoサーバアプリケーションのサーバグループをそれぞれ別にする。