1. スレッド 1 で表 1 を更新 2. スレッド 2 で表 2 を更新
3.4 他プログラムプロダクトとの関連
3.4.1 OpenTP1 との関連(XA インタフェースを使用する場合)
X/Open に準拠した API を使用して,OLTP 環境でリソースマネジャとして XDM/RD E2 を使用できま す。
このとき,OLTP システムは XDM/RD E2 を HiRDB サーバとみなして動作します。したがって,HiRDB の関連マニュアルをお読みになる場合は,「HiRDB」を「XDM/RD E2」に置き換えてお読みください。
(1) 必要となるプログラムプロダクトのバージョン
X/Open に準拠した API を使用して,XDM/RD E2 に接続する場合に必要な VOS3 のプログラムプロダ クトのバージョンを次に示します。
• XDM/RD E2:06-03 以降
• DB コネクションサーバ:03-02 以降
上記のプログラムプロダクトに関連するプログラムプロダクトのバージョンについては,上記プログラム プロダクトのマニュアルを参照してください。
(2) VOS3 のプログラムプロダクトの定義
X/Open に準拠した API を使用して,XDM/RD E2 に接続する場合に必要な VOS3 のプログラムプロダ クトの定義を次に示します。詳細については,各プログラムプロダクトのマニュアルを参照してください。
(a) XDM/RD E2
OLTP システムが OpenTP1 の場合,XDM/RD E2 に接続できるユーザ数を一つ多く定義します。
(b) DB コネクションサーバ
• 二相コミット機能を使用する定義。
• OLTP システムが OpenTP1 の場合,DB コネクションサーバに接続できる TCP コネクション数を一 つ多く定義します。
(3) UAP 作成上の留意事項
(a) SQL 関連の注意事項
使用できない SQL
X/Open に準拠した API を使用している UAP からは,次に示す SQL は使用できません。
• 定義系 SQL
• PURGE TABLE 文
• COMMIT 文
• CONNECT 文
• DISCONNECT 文
• ROLLBACK 文
暗黙的ロールバック
X/Open に準拠した API を使用している場合,SQL 実行時に XDM/RD E2 で暗黙的ロールバック要 因が発生すると,XDM/RD E2 は自動的にロールバックします。
このため,暗黙的ロールバック要因が発生した場合は,XDM/RD E2 以外の資源に対する整合性を保 つために,速やかにトランザクションのロールバック※をする必要があります。
暗黙的ロールバック要因が発生すると,XDM/RD E2 はロールバック以外の要求を実行できなくなり ます。
XDM/RD E2 で暗黙的ロールバック要因が発生したかどうかは,SQL 連絡領域(SQLCA)の
SQLWARN6 を参照して判断してください。暗黙的ロールバック要因が発生している場合,'W'が設定 されています。なお,暗黙的ロールバック要因が発生した場合は,SQLCODE は負の値となります。
注※
ここで説明しているロールバックとは,トランザクションマネジャが用意するロールバック関数な どの発行を示すものであり,SQL の ROLLBACK 文ではありません。
(b) マルチスレッド用のライブラリに関する注意事項
一つのトランザクションから XDM/RD E2 に対して複数のスレッドを使用して別々に接続できません。
マルチスレッド環境での XA 接続は未サポートです。したがって,一つのトランザクションから同時に実 行できるスレッドは一つであり,同一トランザクション内で複数のスレッドを使用して SQL 文を同時に実 行できません。
(4) HiRDB XA ライブラリ
X/Open XA インタフェースとは,分散トランザクション処理(DTP:Distributed Transaction
Processing)システムのトランザクションマネジャ(TM:Transaction Manager)とリソースマネジャ
(RM:Resource Manager)の接続インタフェースを規定した X/Open の標準仕様です。X/Open XA インタフェースを使用すると,リソースマネジャのトランザクション処理をトランザクションマネジャで 制御できます。リソースマネジャのトランザクション処理をトランザクションマネジャで制御するには,
リソースマネジャが提供するライブラリとトランザクションマネジャが提供するライブラリを UAP にリ ンケージします。
XDM/RD E2 の UAP の処理をトランザクションマネジャで制御するために,HiRDB は
HiRDB XA ライ ブラリを提供しています
※。HiRDB XA ライブラリは,X/Open DTP ソフトウェア・アーキテクチャの XA インタフェースの仕様に準拠しています。注※
XDM/RD E2 に接続する場合も,HiRDB サーバに接続する場合と同じ HiRDB XA ライブラリを使用 します。
X/Open DTP モデルでの XDM/RD E2 の位置づけを次の図に示します。
図 3‒4 X/Open DTP モデルでの XDM/RD E2 の位置づけ
(5) HiRDB XA ライブラリでサポートする機能
HiRDB XA ライブラリでサポートする機能を次の表に示します。
ただし,XDM/RD E2 をサーバとして使用する場合と HiRDB サーバを使用する場合では,サポートする 機能が異なります。
表 3‒3 HiRDB XA ライブラリでサポートする機能
機能 説明 サポート有無
HiRDB サーバ
XDM/RD E2 サーバ トランザクションの
移行
トランザクションのコミット処理を,UAP が HiRDB にアクセ スしたときと異なるサーバプロセスで実行する機能です。ここ でいう UAP とは,HiRDB XA ライブラリを使用して HiRDB に接続する UAP のことです。
○ ×※
一相最適化 二相コミット制御を一相に最適化する機能です。 ○ ○
読み取り専用 プリペア要求で HiRDB のリソースが更新されていない場合,
トランザクションマネジャが二相目にコミット要求をしないで 最適化する機能です。
○ ○
機能 説明 サポート有無 HiRDB サーバ
XDM/RD E2 サーバ 動的トランザクション
の登録
UAP を実行する直前に,HiRDB が動的にトランザクションを 登録する機能です。
○ ○
非同期 XA 呼び出し トランザクションマネジャが非同期に HiRDB XA ライブラリを 呼び出す機能です。
× ×
複数接続機能 一つの UAP から XDM/RD E2 に対して複数の CONNECT を 別々に実行する機能です。
X/Open XA インタフェース環境下での複数接続機能について は,マニュアル「HiRDB Version 9 UAP 開発ガイド」を参照 してください。
○ ○
(凡例)
○:HiRDB XA ライブラリでサポートしています。
×:HiRDB XA ライブラリでサポートしていません。
注※
トランザクションの移行は使用できません。このため,HiRDB クライアント環境変数の PDXAMODE オペランドには 0 を指定するか,PDXAMODE オペランドの指定を省略してください。
(6) システムの構成例
OLTP システムを使用したシステムの構成例を次の図に示します。
図 3‒5 OLTP システムを使用したシステムの構成例
(7) トランザクションの移行
トランザクションの移行は,XDM/RD E2 に接続する場合には使用できません。
このため,HiRDB クライアント環境変数の PDXAMODE オペランドには 0 を指定するか,PDXAMODE オペランドの指定を省略してください。
(a) トランザクションマネジャが OpenTP1 の場合
XDM/RD E2 に接続する場合は,トランザクションの移行が使用できないため,OpenTP1 のコミット最 適化およびプリペア最適化は使用できません。
ただし,OpenTP1 システムの状態によっては,トランザクションの移行を使用しなくても,コミット最 適化およびプリペア最適化を使用する指定(OpenTP1 システム定義のトランザクションサービス定義の trnstring オペランドに-d オプションを省略)ができます。
OpenTP1 システム定義のトランザクションサービス定義の trnstring オペランドの指定と OpenTP1 シ ステムの状態の組み合わせ可否を次に示します。
条件 組み合わせ可否 trnstring オペランドの指定 OpenTP1 システムの状態
-d オプションを省略 同一 OpenTP1 システム内では一つの AP だけでグローバルトラ ンザクションを構成している場合
可能
同一 OpenTP1 システム内で は複数の AP でグローバルトラ ンザクションを構成している 場合
一つの AP だけが HiRDB XA ライブラリとリンクしている とき
可能
複数の AP が HiRDB XA ライ
ブラリとリンクしているとき 不可能※
-d オプションを指定 該当しない 可能
注
-d オプションは,TP1/Server Base のバージョンが 03-03 以降のときに指定できます。
注※
同一 OpenTP1 システム内では複数の AP でグローバルトランザクションを構成しており,かつ複数 の AP が HiRDB XA ライブラリとリンクしている場合は,trnstring オペランドに必ず-d オプション を指定してください。
trnstring オペランドについては,マニュアル「OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 システム定義」を参照してください。
コミット最適化およびプリペア最適化については,マニュアル「OpenTP1 Version 7 分散トランザクショ ン処理機能 OpenTP1 プログラム作成の手引」を参照してください。
(8) トランザクションマネジャへの登録
OLTP と連携するには,XDM/RD E2 をトランザクションマネジャに登録する必要があります。
XDM/RD E2 をトランザクションマネジャに登録するには,OpenTP1 の trnlnkrm コマンドを使用します。
XDM/RD E2 をトランザクションマネジャに登録するときには,次に示すどちらかの方法を選択してくだ さい。
• 動的登録方法
• 静的登録方法
なお,一つのトランザクションマネジャに対して,動的登録方法と静的登録方法を混在して使用できません。
(a) 動的登録方法とは
XDM/RD E2 をトランザクションマネジャに動的登録すると,トランザクション内で最初の SQL 文を発 行したときに,UAP がトランザクションマネジャの制御下に入ります。UAP が XDM/RD E2 を含む複 数のリソースマネジャをアクセスする場合,または UAP が XDM/RD E2 をアクセスするとは限らない場