注: | Oracle Tuxedo CORBA環境でトランザクションを使用する方法については、『CORBAトランザクションの使用』を参照してください。 |
トランザクションに対応させるには、次に示すようにアプリケーションのUBBCONFIG
ファイルのRESOURCES
、MACHINES
、GROUPS
およびSERVICES
セクションを変更する必要があります。
次の表では、RESOURCES
セクションに指定するトランザクション関連のパラメータを説明します。
|
|||
|
汎用デバイス・リスト(UDL : Universal Device List)は、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システムのインストール』を参照してください。
グローバル・トランザクション・ログ(TLOG
)を定義するには、UBBCONFIG
ファイルのMACHINES
セクションでパラメータをいくつか設定する必要があります。
これらのパラメータのうち、TLOGDEVICE
については、TLOG
が必要な各マシン上にTLOGDEVICE
のデバイス・リスト・エントリを手動で作成しなければなりません。これは、TUXCONFIG
がロードされる前でも後でも作成できますが、必ず、システムを起動する前に作成してください。
次の表では、MACHINES
セクションに指定するトランザクション関連のパラメータを説明します。
Oracleデータベースにtlogを書き込む場合、UDLを作成する必要はありません。
次の手順を実行する必要があります。
注: | tlogを書き込むことができるのはOracleデータベースのみです。サードパーティのデータベースはサポートされていません。 |
Domainsゲートウェイ・グループを起動する前に、Domainsトランザクション・ログを作成する必要があります。Domainsトランザクション・ログは、現在のマシン(DMADM
を実行中のマシン)の指定されたローカル・ドメインに作成してください。ログを作成するには、次のコマンドを入力します。
dmadmin
crdmlog
crdlog
-d
local_domain_name
このコマンドでは、DMCONFIG
ファイルで指定したパラメータが使用されます。指定したローカル・ドメインが現在のマシン上でアクティブであるか、またはログがすでに存在する場合、このコマンドは失敗します。トランザクション・ログがない場合は、Domainsゲートウェイ・グループの起動時に作成されます。
GROUPS
セクションのパラメータにより、特定のグループに対してトランザクション・マネージャ・サーバー(TMS)およびリソース・マネージャ(RM)の属性を定義できます。
OPENINFO
およびCLOSEINFO
パラメータを定義します。これらのパラメータの値は、リソース・マネージャを開くまたは閉じるために必要な情報を含む文字列です。適切なパラメータ値は、リソース・マネージャのベンダー側で用意されます。たとえば、リソース・マネージャとしてOracleデータベースを使用している場合、次のような値を指定します。OPENINFO=”ORACLE_XA:
Oracle_XA+Acc=P/Scott/*****+SesTm=30+LogDit=/tmp”
以下は、Oracle Tuxedoシステムに同梱されている銀行業務サンプル・アプリケーションbankapp
のGROUPS
セクションの例です。
BANKB1 GRPNO=1 TMSNAME=TMS_SQL TMSCOUNT=2
OPENINFO=”TUXEDO/SQL:APPDIR
/bankdl1:bankdb:readwrite”
次の表では、GROUPSセクションの例のトランザクション値を説明します。
次の表では、TMSNAME、TMSCOUNT、OPENINFO、およびCLOSEINFOパラメータの特性を説明します。
状況によっては、SERVICES
セクションにAUTOTRAN
、TRANTIME
、およびROUTING
という3つのトランザクション関連パラメータを設定しなければならない場合があります。
AUTOTRAN
フラグをY
に設定する必要があります。この設定は、サービスが大規模なトランザクションの一部でない場合や、トランザクションの決定に関わるクライアント側の負担を軽減したい場合に役立ちます。既存のトランザクションがある場合にサービスが呼び出されると、この呼出しは既存のトランザクションの一部になります。(デフォルトはN
です。)注: | 一般的に、サービスは大規模なトランザクションに参加するため、トランザクションのイニシエータとしてはクライアントが最も適しています。 |
AUTOTRAN
がY
に設定されている場合、TRANTIME
パラメータを設定する必要があります。これはトランザクション作成時のタイムアウト値です。0
- 2,147,483,647
(231 - 1、つまり約70年)の値を指定してください。0は、トランザクションにタイムアウトが設定されていないことを示します。(デフォルトは30
秒です。)ROUTING
パラメータを定義する必要があります。 次の表では、AUTOTRAN
、TRANTIME
、およびROUTING
パラメータの特性を説明します。
ドメインを介してトランザクションを有効にするには、Domains構成ファイル(DMCONFIG
)のDM_LOCAL
およびDM_IMPORT
セクション内のパラメータを設定する必要があります。DM_LOCAL
セクションのエントリでは、ローカル・ドメインの特性を定義します。DM_IMPORT
セクションのエントリでは、インポートされたサービスや、リモート・ドメインで使用可能なサービスを定義します。
Domains構成ファイルのDM_LOCAL
セクションでは、ローカル・ドメインおよびそれに関連するゲートウェイ・グループを指定します。ゲートウェイ・グループ(ローカル・ドメイン)ごとに、そのグループで実行するドメイン・ゲートウェイ・プロセスに必要なパラメータを指定するエントリを作成する必要があります。
次の表では、このセクションの5つのトランザクション関連パラメータ(DMTLOGDEV
、DMTLOGNAME
、DMTLOGSIZE
、MAXRAPTRAN
、およびMAXTRAN
)を説明します。
Domains構成ファイルのDM_IMPORT
セクションでは、インポートされ、リモート・ドメインで使用可能になったサービスに関する情報を提供します。各リモート・サービスは、特定のリモート・ドメインに関連付けられています。
DM_IMPORT
セクションに、トランザクションをサポートするAUTOTRAN
パラメータとTRANTIME
パラメータを設定することもできます。次の表では、これらのパラメータを説明します。
UBBCONFIG
ファイルのRESOURCES
セクションでは、MAXTRANTIME
という追加のトランザクション・タイムアウト・プロパティも使用できます。MAXTRANTIME
タイムアウト値がTRANTIME
タイムアウト値またはトランザクションを開始するtpbegin(3c)
の呼出しで渡されたタイムアウト値より小さい場合、トランザクションのタイムアウトはMAXTRANTIME
の値に削減されます。MAXTRANTIME
はOracle Tuxedo 8.0以前を実行するマシン上で開始されるトランザクションには影響を与えません。ただし、Oracle Tuxedo 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アプリケーションを定義する構成ファイル例を示します。このアプリケーションには、次の特徴があります。
ファイルは、7つのセクション(RESOURCES
、MACHINES
、GROUPS
、NETWORK
、SERVERS
、SERVICES
、およびROUTING
)で構成されます。
*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
*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”
次のリストは、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”
次のリストは、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
“”