目次 前 次 PDF


トランザクション対応のATMIアプリケーションの構成

トランザクション対応のATMIアプリケーションの構成
このトピックには次の項が含まれます:
注意:
Oracle Tuxedo CORBA環境でトランザクションを使用する方法の詳細は、『CORBAトランザクションの使用』を参照してください。
UBBCONFIGファイルをATMIトランザクションに対応させて変更する
トランザクションに対応させるには、次に示すようにアプリケーションのUBBCONFIGファイルのRESOURCESMACHINESGROUPSおよびSERVICESセクションを変更する必要があります。
 
各マシンのTLOG情報を指定します。
RESOURCESセクションでグローバル・トランザクションのパラメータを指定する
次の表に、RESOURCESセクションに指定するトランザクション関連のパラメータの説明を示します。
 
一度に1台のマシン上で設定できるグローバル・トランザクション識別子(GTRID)の合計数を制限します。指定可能な最大値は2048、最小値は0、デフォルト値は100です。MAXGTTの値は、MACHINESセクションでマシンごとにオーバーライドできます。
TP_COMMIT_CONTROL特性の初期設定が次のいずれかであることを示します。
LOGGED - TP_COMMIT_CONTROL特性はTP_CMT_LOGGEDに設定されます。すべての参加リソースが正常にプリコミットを行った場合にtpcommit()が返されることを示します。
COMPLETE - TP_COMMIT_CONTROL特性はTP_CMT_COMPLETEに設定されます。すべての参加リソースが正常にコミットするまでtpcommit()が返されないことを示します。
デフォルトはCOMPLETEです。
適切な設定を判別するには、リソース・マネージャ(RM)ベンダーに問い合せてください。アプリケーションにXA標準のレイト・コミット実装を使用するリソース・マネージャがある場合、COMPLETEに設定する必要があります。すべてのリソース・マネージャがアーリー・コミット実装を使用する場合は、パフォーマンス上の理由によりLOGGEDに設定します。(この設定はtpscmt()を使用してオーバーライドできます。)
注意:
MAXTRANTIMEの詳細は、UBBCONFIG(5)RESOURCESセクションにあるMAXTRANTIME、またはTM_MIB(5)T_DOMAINクラスにあるTA_MAXTRANTIMEを参照してください。
MACHINESセクションでトランザクション・ログ(TLOG)を作成する
TLOGを作成するには、次のタスクを実行します。
MACHINESセクションでトランザクション関連のパラメータを定義します。
UDLを作成する
汎用デバイス・リスト(UDL)はOracle Tuxedoファイル・システムのマップです。UDLは、アプリケーションの起動時に共有メモリーにロードされます。TLOGは、トランザクションが完了するまでトランザクションの情報が格納されるログを表します。UDL内にTLOGデバイス用のエントリを作成するには、グローバル・トランザクションを使用して各マシンにUDLを作成します。(TLOGDEVICEが2台のマシン間でミラーリングされる場合、対になるマシンでこれを行う必要はありません。)BBLは、起動時にTLOGを初期化して開きます。
UDLを作成するには、アプリケーションを起動する前に次のコマンドを実行します。
tmadmin -c crdl -z config -b blocks
注意:
configの値は、UDLの作成先デバイスのフルパス名です。これは、構成ファイルのMACHINESセクションにあるTLOGDEVICEパラメータの値と一致している必要があります。blocksには、デバイス上に割り当てるブロックの数を指定します。
注意:
blocksの値がTLOGSIZEの値より小さいと、パフォーマンスが低下するおそれがあります。したがって、blocksにはTLOGSIZEより大きい値を指定してください。たとえば、TLOGSIZEに200ブロックが指定されている場合、-b 500を指定すると、パフォーマンスは低下しません。
TLOGの格納方法の詳細は、『Oracle Tuxedoシステムのインストール』を参照してください<Default ?Font>
MACHINESセクションでトランザクション関連のパラメータを定義する
グローバル・トランザクション・ログ(TLOG)を定義するには、UBBCONFIGファイルのMACHINESセクションでパラメータをいくつか設定する必要があります。
これらのパラメータのうち、TLOGDEVICEについては、TLOGが必要なマシン上にTLOGDEVICEのデバイス・リスト・エントリを手動で作成する必要があります。これは、TUXCONFIGがロードされる前でも後でも作成できますが、必ず、システムを起動する前に作成してください。
次の表に、MACHINESセクションに指定するトランザクション関連のパラメータの説明を示します。
 
マシンのDTPトランザクション・ログの名前を指定します。
マシンのDTPトランザクション・ログ(TLOG)を含むOracle Tuxedoファイル・システムを指定します。このパラメータを指定しないと、マシンにはTLOGがないと見なされます。値に使用できる文字数は、最大64文字です。
TLOGファイルのサイズを指定します(物理ページ単位)。この値には、1 - 2048の範囲の値を設定します。デフォルト値は100です。指定した時点で、未処理トランザクションを十分保持できるマシン上のサイズを指定します。1ページにつき1つのトランザクションがログに記録されます。ほとんどのアプリケーションではデフォルト値で十分です。
TLOGDEVICEの始めから、マシンのトランザクション・ログを含むVTOCの開始までのオフセット(ページ数)。この値は0以上で、デバイス上のページ数より小さい値である必要があります。デフォルトは0です。
TLOGOFFSETが必要になることはほとんどありません。ただし、2つのVTOCが同じデバイスを共有したり、VTOCが別のアプリケーションに共有されるデバイス(ファイル・システムなど)上に格納される場合は、TLOGOFFSETを使用してデバイスのアドレスに関連する開始アドレスを指定できます。
Oracle DatabaseへのTLOGの書込み
Oracleデータベースにtlogを書き込む場合、UDLを作成する必要はありません
次の手順を実行する必要があります。
1.
Oracle Database 10gクライアント(以降)をインストールし、libclntsh.so.x.x (たとえば、libclntsh.so.10.1)のリンクlibclntsh.soを作成して、Linuxプラットフォームでリンクlibclntsh.soLD_LIBRARY_PATHを設定します。
2.
DB:Oracle_XA: ….」という形式を使用して、UBBCONFIG(5) TLOGDEVICEまたはDMCONFIG(5) DMTLOGDEVを設定します。
3.
tmadminおよびdmadminコマンドを使用してtlogを作成します。
注意:
Domainsトランザクション・ログを作成する
Domainsゲートウェイ・グループを起動する前に、Domainsトランザクション・ログを作成する必要があります。特に、Domainsトランザクション・ログは、現在のマシン(DMADMを実行中のマシン)の指定されたローカル・ドメインに作成してください。ログを作成するには、次のコマンドを入力します。
dmadmin crdmlog crdlog -d local_domain_name
このコマンドでは、DMCONFIGファイルで指定したパラメータが使用されます。指定したローカル・ドメインが現在のマシン上でアクティブであるか、またはログがすでに存在する場合、このコマンドは失敗します。トランザクション・ログがない場合は、Domainsゲートウェイ・グループの起動時に作成されます。
関連項目
『Oracle Tuxedoアプリケーション実行時の管理』「トランザクション・ログ(TLOG)とは」
GROUPSセクションでリソース・マネージャとトランザクション・マネージャ・サーバーを定義する
GROUPSセクションのエントリのパラメータにより、特定のグループに対してトランザクション・マネージャ・サーバー(TMS)およびリソース・マネージャ(RM)の属性を定義できます。
TMSNAMEには、エントリで定義済のグループに関連付けられた、トランザクション・マネージャ・サーバー用の実行可能ファイル名を指定します。Oracle Tuxedoシステムには、トランザクションに参加してもRMは使用しないグループ用に、NULLトランザクション・マネージャ・サーバー(TMS)が用意されています。 このTMSサーバーは、どのRMとも通信しません。RMとは通信せず、トランザクションの管理だけを行います。
TMSCOUNTには、起動するTMSの数(最小2、最大10、デフォルト3)を指定します。
各リソース・マネージャに対しては、OPENINFOおよびCLOSEINFOパラメータを定義できます。これらのパラメータの値は、リソース・マネージャを開くまたは閉じるために必要な情報を含む文字列です。適切なパラメータ値は、リソース・マネージャのベンダー側で用意されます。たとえば、リソース・マネージャとしてOracleデータベースを使用している場合、次のような値を指定します。
OPENINFO=”ORACLE_XA:
Oracle_XA+Acc=P/Scott/*****+SesTm=30+LogDit=/tmp”
GROUPSセクションの例
次は、Oracle Tuxedoシステムに同梱されている銀行業務サンプル・アプリケーションbankappGROUPSセクションのサンプル・エントリです。
BANKB1 GRPNO=1 TMSNAME=TMS_SQL TMSCOUNT=2
OPENINFO=”TUXEDO/SQL:
APPDIR/bankdl1:bankdb:readwrite”
GROUPSセクションの例でのトランザクション値
この表は、GROUPSエントリの例のトランザクション値を説明します。
 
トランザクション・マネージャ・サーバーの名前(TMS_SQL)と、グループBANKB1で起動するサーバーの数(2)を指定します
APPDIR/bankdl1
TMSNAME、TMSCOUNT、OPENINFO、およびCLOSEINFOパラメータの特性
次の表に、TMSNAMETMSCOUNTOPENINFOおよびCLOSEINFOパラメータの特性を示します。
 
TMSは、NULLトランザクション・マネージャ・サーバーです。
SERVICESセクションでサービスに対するトランザクションの開始を有効にする
状況によっては、SERVICESセクションにAUTOTRANTRANTIMEおよびROUTINGという3つのトランザクション関連パラメータの設定が必要になる場合があります。
クライアントのかわりに、サービスにトランザクションを開始させる場合は、AUTOTRANフラグをYに設定する必要があります。この設定は、サービスが大規模なトランザクションの一部でない場合や、トランザクションの決定に関わるクライアント側の負担を軽減したい場合に役立ちます。既存のトランザクションがある場合にサービスが呼び出されると、この呼出しは既存のトランザクションの一部になります。(デフォルトはNです。)
注意:
AUTOTRANYに設定されている場合、TRANTIMEパラメータを設定する必要があります。これはトランザクション作成時のタイムアウト値です。この値は0以上である必要があり、2,147,483,647 (231 - 1、または約70年)を超えることはできません。0は、トランザクションにタイムアウトが設定されていないことを示します。(デフォルトは30秒です。)
データ依存型ルーティングを使用するトランザクションには、ROUTINGパラメータを定義する必要があります。
AUTOTRAN、TRANTIME、およびROUTINGパラメータの特性
次の表に、AUTOTRANTRANTIMEおよびROUTINGパラメータの特性を示します。
 
AUTOTRANトランザクションのタイムアウト値を指定します。
トランザクションをサポートするようにDomains構成ファイルを変更する
ドメイン全体でトランザクションを有効にするには、Domains構成ファイル(DMCONFIG)のDM_LOCALDM_IMPORTの両方のセクションでパラメータを設定する必要があります。DM_LOCALセクションのエントリでは、ローカル・ドメインの特性を定義します。DM_IMPORTセクションのエントリでは、インポートされたサービスや、リモート・ドメインで使用可能なサービスを定義します。
DMTLOGDEV、DMTLOGNAME、DMTLOGSIZE、MAXRAPTRAN、およびMAXTRANパラメータの特性
Domains構成ファイルのDM_LOCALセクションでは、ローカル・ドメインおよびそれに関連するゲートウェイ・グループを指定します。ゲートウェイ・グループ(ローカル・ドメイン)ごとに、そのグループで実行するドメイン・ゲートウェイ・プロセスに必要なパラメータを指定するエントリを作成する必要があります。
次の表に、このセクションの5つのトランザクション関連パラメータであるDMTLOGDEVDMTLOGNAMEDMTLOGSIZEMAXRAPTRANおよびMAXTRANの説明を示します。
 
このマシンのDomainsトランザクション・ログ(DMTLOG)を含むOracle Tuxedoファイル・システムを指定します。DMTLOGは、TLOGDEVICE (Oracle Tuxedoファイル・システム)上にOracle TuxedoのVTOC表として格納されます。このパラメータを指定しない場合、Domainsゲートウェイ・グループはリクエストをトランザクション・モードで処理できません。同じマシン上で実行するローカル・ドメインは、同じDMTLOGDEVファイル・システムを共有できますが、ローカル・ドメインごとに個別のログ(DMTLOGDEV)を作成する必要があります。各ログの名前は、DMTLOGNAMEパラメータによって決まります。
このドメインのDomainsトランザクション・ログの名前を指定します。このドメインが他のローカル・ドメインと同じファイル・システム上にある場合(DMTLOGDEVの値が同じ)、DMTLOGNAMEの値はログごとに一意である必要があります。値には30文字以内の文字を使用できます。デフォルトはDMTLOGです。
注意:
トランザクション内のドメインの数により、DMTLOGSIZEパラメータで指定するページ数が決まります。トランザクションとログのページ数は、1対1でマッピングされません。
AUTOTRANおよびTRANTIMEパラメータの特性
Domains構成ファイルのDM_IMPORTセクションでは、インポートされ、リモート・ドメインで使用可能になったサービスに関する情報を提供します。各リモート・サービスは、特定のリモート・ドメインに関連付けられています。
DM_IMPORTセクションに、トランザクションをサポートするAUTOTRANTRANTIMEの2つのパラメータを設定することもできます。次の表では、これらのパラメータを説明します。
 
UBBCONFIGファイルのRESOURCESセクションでは、MAXTRANTIMEという追加のトランザクション・タイムアウト・プロパティも使用できます。MAXTRANTIMEタイムアウト値がTRANTIMEタイムアウト値またはトランザクションを開始するtpbegin(3c)の呼出しで渡されたタイムアウト値より小さい場合、トランザクションのタイムアウトはMAXTRANTIMEの値に削減されます。MAXTRANTIMEは、<Default ?Font>Oracle Tuxedo 8.0以前を実行するマシン上で開始されるトランザクションには影響を与えません。ただし、Oracle 8.1以降を実行するマシンがトランザクションの影響を受ける場合は、そのノードに対して構成されているMAXTRANTIME値までトランザクション・タイムアウト値が制限(必要に応じて減少)されます。
Domains構成の場合は、以下のようなトランザクション処理のシナリオが考えられます。
ドメイン間トランザクションでMAXTRANTIMEパラメータを認識しないノードが影響を受ける場合、またはMAXTRANTIMEパラメータを認識するがパラメータが設定されていない場合、トランザクションのタイムアウト値はTRANTIME、またはトランザクションを開始したtpbegin()呼出しで渡されたタイムアウト値によって決まります。TRANTIMEまたはtpbegin()のタイムアウト値を超えると、トランザクションの影響を受けるすべてのOracleノード(トランザクションを開始したノードも含む)はTMSタイムアウト・メッセージを生成します。
ドメイン間トランザクションがMAXTRANTIMEパラメータを認識するノードに影響を及ぼし、そのノードに対してパラメータが設定されている場合、トランザクションのタイムアウト値はそのノードのMAXTRANTIME値を超えない値にまで削減されます。
TRANTIMEまたはtpbegin()タイムアウト値がMAXTRANTIME以下である場合、トランザクション処理は前に説明したシナリオになります。
TRANTIMEまたはtpbegin()タイムアウト値がMAXTRANTIMEより大きい場合、トランザクションのタイムアウト値は影響を受けるノードによってMAXTRANTIMEに削減されます。MAXTRANTIMEタイムアウト値を超えると、影響を受けるノードはTMSタイムアウト・メッセージを生成します。
MAXTRANTIMEの詳細は、UBBCONFIG(5)RESOURCESセクションにあるMAXTRANTIME、またはTM_MIB(5)T_DOMAINクラスにあるTA_MAXTRANTIMEを参照してください。
例:トランザクションを使用する分散アプリケーション
この項では、3つのサイトに分散される、トランザクション対応のbankappアプリケーションを定義する構成ファイルのサンプル・エントリを示します。アプリケーションには次の特徴があります。
ACCOUNT_IDに対してデータ依存型ルーティングが実行されます
ATMIインタフェースを使用してシステムと通信するBRIDGEプロセスが実行されます
ファイルは、7つのセクション(RESOURCESMACHINESGROUPSNETWORKSERVERSSERVICESおよびROUTING)で構成されます。
RESOURCESセクションの例
次のリストに、RESOURCESセクションの例を示します。
リスト5-1 RESOURCESセクションの例
*RESOURCES
#
IPCKEY 99999
UID 1
GID 0
PERM 0660
MAXACCESSERS 25
MAXSERVERS 25
MAXSERVICES 40
MAXGTT 20
MASTER SITE3, SITE1
SCANUNIT 10
SANITYSCAN 12
BBLQUERY 180
BLOCKTIME 30
DBBLWAIT 6
OPTIONS LAN, MIGRATE
MODEL MP
LDBAL Y
 
このリストでは、次の点に注意してください。
MAXSERVERSMAXSERVICESおよびMAXGTTは、デフォルト値より小さい値に設定されています。これは、掲示板のサイズを小さくするためです。
MASTERSITE3で、バックアップ・マスターはSITE1です。
MODELMPに設定されており、OPTIONSLANMIGRATEに設定されているため、ネットワーク接続された構成を使用して移行を行うことができます。
BBLQUERY180に設定されており、SCANUNIT10に設定されているため、DBBLはリモートのBBL1800秒おき(30分おき)にチェックします。
MACHINESセクションの例
次のリストに、MACHINESセクションの例を示します。
リスト5-2 MACHINESセクションの例
*MACHINES
giselle LMID=SITE1
TUXDIR=”/usr/tuxedo”
APPDIR=”/usr/home”
ENVFILE=”/usr/home/ENVFILE”
TLOGDEVICE=”/usr/home/TLOG”
TLOGNAME=TLOG
TUXCONFIG=”/usr/home/tuxconfig”
TYPE=”3B600”

romeo LMID=SITE2
TUXDIR=”/usr/tuxedo”
APPDIR=”/usr/home”
ENVFILE=”/usr/home/ENVFILE”
TLOGDEVICE=”/usr/home/TLOG”
TLOGNAME=TLOG
TUXCONFIG=”/usr/home/tuxconfig”
TYPE=”SEQUENT”

juliet LMID=SITE3
TUXDIR=”/usr/tuxedo”
APPDIR=’/usr/home”
ENVFILE=”/usr/home/ENVFILE”
TLOGDEVICE=”/usr/home/TLOG”
TLOGNAME=TLOG
TUXCONFIG=”/usr/home/tuxconfig”
TYPE=”AMDAHL”
 
このリストでは、次の点に注意してください。
TLOGDEVICEおよびTLOGNAMEが指定され、トランザクションが行われることを示します。
TYPEパラメータはすべて異なりますが、これはマシン間で送られるすべてのメッセージにエンコード/でコードが行われることを示します。
GROUPSセクションおよびNETWORKセクションの例
次のリストに、GROUPSおよびNETWORKセクションの例を示します。
リスト5-3 GROUPSおよびNETWORKセクションの例
*GROUPS
DEFAULT: TMSNAME=TMS_SQL TMSCOUNT=2
BANKB1 LMID=SITE1 GRPNO=1
OPENINFO=”TUXEDO/SQL:/usr/home/bankdl1:bankdb:readwrite”
BANKB2 LMID=SITE2 GRPNO=2
OPENINFO=”TUXEDO/SQL:/usr/home/bankdl2:bankdb:readwrite”
BANKB3 LMID=SITE3 GRPNO=3
OPENINFO=”TUXEDO/SQL:/usr/home/bankdl3:bankdb:readwrite”

*NETWORK
SITE1 NADDR=”0X0002ab117B2D4359”
BRIDGE=”/dev/tcp”
NLSADDR=”0X0002ab127B2D4359”

SITE2 NADDR=”0X0002ab117B2D4360”
BRIDGE=”/dev/tcp”
NLSADDR=”0X0002ab127B2D4360”

SITE3 NADDR=”0X0002ab117B2D4361”
BRIDGE=”/dev/tcp”
NLSADDR=”0X0002ab127B2D4361”
 
このリストでは、次の点に注意してください。
TMSCOUNT2も設定されますが、これはグループ当たり2つのTMS_SQLトランザクション・マネージャ・サーバーのみが起動されることを示します。
OPENINFO文字列は、アプリケーションがデータベース・アクセスを行うことを示します。
SERVERS、SERVICES、およびROUTINGセクションの例
次のリストに、SERVERSSERVICESおよびROUTINGセクションの例を示します。
リスト5-4 SERVERS、SERVICESおよびROUTINGセクションの例
*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 REPLYQ=N CLOPT=”-A”
TLR SRVGRP=BANKB1 SRVID=1 CLOPT=”-A -- -T 100"
TLR SRVGRP=BANKB2 SRVID=3 CLOPT=”-A -- -T 400"
TLR SRVGRP=BANKB3 SRVID=4 CLOPT=”-A -- -T 700"
XFER SRVGRP=BANKB1 SRVID=5 REPLYQ=Y
XFER SRVGRP=BANKB2 SRVID=6 REPLYQ=Y
XFER SRVGRP=BANKB3 SRVID=7 REPLYQ=Y

*SERVICES
DEFAULT: AUTOTRAN=N
WITHDRAW ROUTING=ACCOUNT_ID
DEPOSIT ROUTING=ACCOUNT_ID
TRANSFER ROUTING=ACCOUNT_ID
INQUIRY ROUTING=ACCOUNT_ID

*ROUTING
ACCOUNT_ID FIELD=ACCOUNT_ID BUFTYPE=”FML”
RANGES=”MON - 9999:*,
10000 - 39999:BANKB1
40000 - 69999:BANKB2
70000 - 100000:BANKB3
“”
 
このリストでは、次の点に注意してください。
TLRサーバーがtpsvrinit()関数を呼び出す場合は、-Tオプションに数値(100、400または700)を指定します。
すべてのサービス・リクエストはACCOUNT_IDフィールドでルーティングされます。
AUTOTRANモードではサービスは行われません。
関連項目
『C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』グローバル・トランザクションのコーディングに関する項
『Oracle Tuxedo ATMIの紹介』ATMIの使用に関する項
Oracle Tuxedo CORBA環境でトランザクションを使用する方法の詳細は、『CORBAトランザクションの使用』を参照してください

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved