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/RDE2」に置き換えてお読みください。
(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の設計(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:DistributedTransaction 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.
UAPの設計表
3-3 HiRDB XA
ライブラリでサポートする機能(凡例)
○:HiRDB XAライブラリでサポートしています。
×:HiRDB XAライブラリでサポートしていません。
注※
トランザクションの移行は使用できません。このため,HiRDBクライアント環境変 数の
PDXAMODE
オペランドには0
を指定するか,PDXAMODEオペランドの指 定を省略してください。(6) システムの構成例
OLTP
システムを使用したシステムの構成例を次の図に示します。機能 説明 サポート有無
HiRDB サーバ
XDM/RD E2 サーバ トランザクション
の移行
トランザクションのコミット処理を,UAPが
HiRDBにアクセスしたときと異なるサーバプロセ
スで実行する機能です。ここでいうUAPとは,
HiRDB XAライブラリを使用してHiRDBに接続す るUAPのことです。
○ ×※
一相最適化 二相コミット制御を一相に最適化する機能です。 ○ ○ 読み取り専用 プリペア要求でHiRDBのリソースが更新されてい
ない場合,トランザクションマネジャが二相目にコ ミット要求をしないで最適化する機能です。
○ ○
動的トランザク ションの登録
UAPを実行する直前に,HiRDBが動的にトランザ クションを登録する機能です。
○ ○
非同期XA呼び出 し
トランザクションマネジャが非同期にHiRDB XA ライブラリを呼び出す機能です。
× ×
複数接続機能 一つのUAPからXDM/RD E2に対して複数の
CONNECTを別々に実行する機能です。
X/Open XAインタフェース環境下での複数接続機 能については,マニュアル「HiRDB Version 9 UAP 開発ガイド」を参照してください。
○ ○
図
3-5 OLTP
システムを使用したシステムの構成例(7) トランザクションの移行
トランザクションの移行は,XDM/RD E2に接続する場合には使用できません。
このため,HiRDBクライアント環境変数の
PDXAMODE
オペランドには0
を指定する か,PDXAMODEオペランドの指定を省略してください。(a) トランザクションマネジャが
OpenTP1
の場合XDM/RD E2
に接続する場合は,トランザクションの移行が使用できないため,OpenTP1
のコミット最適化およびプリペア最適化は使用できません。ただし,OpenTP1システムの状態によっては,トランザクションの移行を使用しなくて も,コミット最適化およびプリペア最適化を使用する指定(OpenTP1システム定義のト ランザクションサービス定義の
trnstring
オペランドに-d
オプションを省略)ができま す。OpenTP1
システム定義のトランザクションサービス定義のtrnstring
オペランドの指定3.
UAPの設計と
OpenTP1
システムの状態の組み合わせ可否を次に示します。注
-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
をトランザクションマネジャに登録するときには,次に示すどちらかの方 法を選択してください。• 動的登録方法
• 静的登録方法
なお,一つのトランザクションマネジャに対して,動的登録方法と静的登録方法を混在
条件 組み合わせ可否
trnstringオペランドの指定 OpenTP1システムの状態
-dオプションを省略 同一OpenTP1システム内では一つのAPだけでグ ローバルトランザクションを構成している場合
可能
同一OpenTP1システム 内では複数のAPでグ ローバルトランザクショ ンを構成している場合
一つのAPだけが HiRDB XAライブラリ とリンクしているとき
可能
複数のAPがHiRDB XAライブラリとリンク しているとき
不可能※
-dオプションを指定 該当しない 可能
して使用できません。
(a) 動的登録方法とは
XDM/RD E2
をトランザクションマネジャに動的登録すると,トランザクション内で最 初のSQL
文を発行したときに,UAPがトランザクションマネジャの制御下に入ります。UAP
がXDM/RD E2
を含む複数のリソースマネジャをアクセスする場合,またはUAP
がXDM/RD E2
をアクセスするとは限らない場合などに,トランザクションマネジャか らのXDM/RD E2
に対するトランザクション制御のオーバヘッドを削減できます。(b) 静的登録方法とは
XDM/RD E2
をトランザクションマネジャに静的登録すると,UAPがSQL
文の発行に 関係なく,トランザクションの開始時に常にトランザクションマネジャの制御下に入り ます。トランザクションマネジャが
OpenTP1
の場合,UAPとXDM/RD E2
とのコネクション が切断されたとき(ユニットの異常終了またはサーバプロセスの異常終了などのとき)に,OpenTP1にはトランザクション開始時に再接続をする機能があるため,UAPの再 起動が不要になります。
(c) 動的登録方法と静的登録方法の違い
動的登録方法と静的登録方法の違いを次の表に示します。
表
3-4 動的登録方法と静的登録方法の違い
注※
1
トランザクションマネジャが
OpenTP1
のときに限ります。差異のポイント 動的登録方法 静的登録方法
トランザクション開始時 管理しない • コネクション確立中かどうか の確認
• トランザクションマネジャ制 御下でのトランザクションの 管理を開始
トランザクション内で最初 のSQL発行時
• トランザクションマネジャの制御 下での管理を開始
• XDM/RD E2のトランザクション 開始
• SQL文処理
• XDM/RD E2のトランザク ション開始
• SQL文処理
トランザクション処理中の トランザクションマネジャ とXDM/RD E2間の通信 回数
SQL文数+コミット処理通信回数 SQL文数+コミット処理通信回
数+1(トランザクション開始処
理用の通信分)
トランザクションマネジャ とXDM/RD E2間のコネ クションが,途中で切断し たときの再接続方法※1
次回のトランザクション開始時に自 動的に再接続※2
次回のトランザクション開始時 に自動的に再接続※3