4.1.3 Oracle連携時の環境設定
- 〈この項の構成〉
(1) Oracleの登録
Oracleをリソースマネジャとして登録する方法は,Microsoft SQL Serverの場合と同じです。詳細は,「4.1.1(1) Microsoft SQL Serverの登録」を参照してください。また,Oracleを登録するときに入力に必要となる「関連オブジェクト名称」などについては,OracleのXAインタフェースに関して記載されたマニュアルを参照してください。
[リソースマネジャのXA関連オブジェクト]ダイアログボックスでの指定例を次に示します。
C:\orant\rdbms\XA\ORAXA9.LIB
(2) Oracle連携時のOPEN,CLOSE文字列の設定
TP1/LiNKでは,X/OpenのXAインタフェースで定められているリソースマネジャのOpen,Close文字列を設定する必要があります。Open,Close文字列は,[OPEN,CLOSE文字列]ダイアログボックスで設定します。ダイアログボックスについては,「2.1.3(4) Open,Close文字列の指定」を参照してください。Open,Close文字列として指定する内容については,Oracleのマニュアルを参照してください。
なお,[トランザクションサービス用xa_open関数用文字列(T)]で指定するuidには,OracleのDB管理者を指定してください。指定したuidがOracleのDB管理者でなかった場合,またはDBA権限を持っていない場合にはUAPの部分回復,およびTP1/LiNKシステム再開始後のトランザクション回復処理が正常に行われない場合があります。
[OPEN,CLOSE文字列]ダイアログボックスでの指定例を次に示します。
- [トランザクションサービス用xa_open関数用文字列(T)]
-
Oracle_XA+Acc=P/system/manager+SesTm=60
- [トランザクションサービス用xa_close関数用文字列(S)]
-
設定は不要です。
- [ユーザサーバ用xa_open関数用文字列(U)]
-
Oracle_XA+Acc=P/scott/tiger+SesTm=60
- [ユーザサーバ用xa_close関数用文字列(F)]
-
設定は不要です。
(3) Oracle連携時の環境変数の設定
Oracleにアクセスするためには,Oracleが定めた環境変数に値を設定する必要があります。環境変数の設定は,次のダイアログボックスを使用します。
-
[オプション]ダイアログボックス
詳細は,「2.1.3(6) トランザクションサービスの環境変数の設定」を参照してください。
-
[SPP環境設定]ダイアログボックスまたは[SUP環境設定]ダイアログボックス
詳細は,「3.2.1 SPPの実行環境の設定」および「3.3.1 SUPの実行環境の設定」を参照してください。
また,設定が必要な環境変数名や設定値などについては,Oracleのインストール時に設定した値や,環境設定に関して記載されたマニュアルを参照してください。
Oracle連携時の各ダイアログボックスでの指定例を次に示します。
項番 |
[トランザクションサービスの環境変数]欄 [変数(V)] |
[トランザクションサービスの環境変数]欄 [値(A)] |
---|---|---|
1 |
ORACLE_HOME |
c:\orant |
2 |
ORACLE_SID |
ORCL |
項番 |
[ユーザサーバの環境変数]欄 [変数(Y)]※ |
[ユーザサーバの環境変数]欄 [値(Z)] |
---|---|---|
1 |
ORACLE_HOME |
c:\orant |
2 |
ORACLE_SID |
ORCL |
- 注※
-
[SUP環境設定]ダイアログボックスの場合は[変数(B)]になります。
(4) Oracle連携時のUAPのコンパイルとリンケージ
UAPのコンパイルとリンケージは,Microsoft SQL Serverの場合と同じです。詳細は,「4.1.1(3) Microsoft SQL Server連携時のUAPのコンパイルとリンケージ」を参照してください。
(5) TP1/LiNKから複数のOracle DBMSにアクセスする場合
TP1/LiNKから複数のOracle DBMSにアクセスする場合には,OracleのOpen,Close文字列指定の仕様によって,SQL*Netが必要です。Oracleのマニュアルを参照しSQL*Netのセットアップを行ってください。
また,Open,Close文字列の指定方法が通常の場合と異なります。[OPEN,CLOSE文字列]ダイアログボックスの[リソースマネジャ拡張子(R)]を使用して,「リソースマネジャ名+リソースマネジャ拡張子」によって,DBMSを識別できるように指定します。[OPEN,CLOSE文字列]ダイアログボックスで指定したリソースマネジャ拡張子を,[SPP詳細設定]ダイアログボックスまたは[SUP詳細設定]ダイアログボックスでも指定して,各UAPが使用するOracleのOPEN,CLOSE文字列を設定します。[SPP詳細設定]ダイアログボックスまたは[SUP詳細設定]ダイアログボックスについては,「3.2.2 SPPの詳細設定」または「3.3.2 SUPの詳細設定」を参照してください。
また,OracleのDBMSが一つの場合でも,複数のOracleのuidでアクセスする場合でも,複数のOracleをアクセスするときと同様の指定が必要です。
(6) Oracle RACとの連携方法
Oracle RAC機能を使用した場合,フェイルオーバーが発生すると,障害が発生したフェイルオーバー元から,フェイルオーバー先へインダウトトランザクション(未決着トランザクション情報)が転送されます。このインダウトトランザクションの転送処理をしている間,TP1/LiNKのトランザクション回復処理を抑止できます。この機能を使用しない場合には,Oracleの仕様によってTP1/LiNKとOracle間でトランザクション決着種別に不一致が発生するおそれがあります。
これを回避するためには,リソースマネジャ接続としてOracleを接続後に,トランザクションサービス定義(%DCDIR%\conf\trnファイル)のtrnstring定義コマンドで,-rオプションを指定してください。trnstring定義コマンドで-rオプションを指定した場合,リソースマネジャからの待ち合わせを行うので,トランザクション回復プロセスが占有され,回復処理が滞るためトランザクション回復プロセス数(trn_recovery_process_countオペランド)も,trnstring 定義コマンドの-rオプションで指定したリソースマネジャ数分増やしてください。また,trnstring定義コマンドの-rオプションを有効にするためには,[OPEN,CLOSE文字列]ダイアログボックスに"OPS_FAILOVER=T"を指定する必要があります。
この機能を使用して,開始処理中またはオンライン処理中にリソースマネジャに障害が発生した場合に,そのリソースマネジャが参加したトランザクションの該当リソースマネジャの障害が回復されるまでトランザクション回復処理が遅れます。
trn_recovery_process_countオペランドの説明を次に示します。
形式
set trn_recovery_process_count = 並行回復プロセス数 〜<符号なし整数>((1〜128))《1》
説明
トランザクションブランチが異常終了したときに,トランザクションブランチの回復処理を並行してできる数を指定します。
トランザクションブランチが異常終了した場合は,ここで指定した数だけ並行してトランザクションブランチの回復処理をします。
回復プロセス数に2以上を指定した場合,[システム環境設定]の[サーバ数]欄の[SPP(P)]に指定値を加えてください。なお,定義追加後にリソースマネジャ接続で設定を変更した場合は,再度指定してください。
定義例
定義の最終行には,改行を入力してください。
# ALL RIGHTS RESERVED, COPYRIGHT (C)1994, HITACHI, LTD. # LICENSED MATERIAL OF HITACHI,LTD. # * # * トランザクションサービス定義 # * 環境名: trn # * # TP1/LiNK (trn) set trn_tran_process_count = 32 set trn_wait_rm_open = continue trnstring -n Oracle_XA -e -r \ -o "Oracle_XA+Acc=P/sys/syspass+SesTm=30"\ -o "Oracle_XA+Acc=P/scott/tiger+SesTm=30" set trn_recovery_process_count = 1 putenv ORACLE_SID \ ORCL putenv ORACLE_HOME \ E:\orant
(7) Oracle連携時の注意事項
リソースマネジャにOracleを使用する場合,次の点に注意してください。
-
次の場合,KFCA00901-WメッセージやSQLのアクセスでOracleのORA-1012メッセージが出力されることがあります。Oracle DBMS,通信プロセスなどが起動されているかを確認してください。
-
TP1/LiNKとOracleをX/OpenのXAインタフェースで連携した場合
-
トランザクション中にOracleのSQL*Net機能の一部である通信プロセスが未起動の場合
-
障害が発生した場合
-
-
TP1/LiNKとOracleをX/OpenのXAインタフェースで連携した場合,Oracleの"SESSIONS"定義指定値を超えてOracleをXAインタフェースでアクセスするプロセスを起動した場合,KFCA00901-Wが出力されます。次の計算式を参考に,OracleのSESSIONS定義を見直してください。
Oracleアクセス基礎値 ≧ ((Oracleにアクセスするユーザサーバプロセスの総数+1※1+1※2) ×OracleのDBMS数)SESSIONSの最小値≧Oracleアクセス基礎値×n※3
- 注※1
-
TP1/LiNKのトランザクション回復プロセス分
- 注※2
-
TP1/LiNKのリソースマネジャ監視プロセス分
- 注※3
-
xa_open,xa_start,UOC(SQL),xa_end,xa_closeの間に必要なSESSION数(通常1〜5程度です。詳細は,Oracleのマニュアルを参照してください)
-
TP1/LiNKとOracleをX/OpenのXAインタフェースで連携した場合,Oracleの[OPEN,CLOSE文字列]ダイアログボックスに指定する「SesTm」は,Oracleのグローバルトランザクション監視時間値です。指定値に小さい値を指定した場合,監視時間経過後,OracleがTP1/LiNKの指示を待たないでトランザクションを決着させることがあります。そのため,ユーザサーバやTP1/LiNKシステムがダウンすることがあります。この指定値には,余裕のある値を指定してください。
-
TP1/LiNKとOracleをX/OpenのXAインタフェースで連携した場合,トランザクション実行中にOracleがダウンして再起動したとき,Oracleダウン前にOracleにアクセスしていたプロセスからの要求を,Oracleが受け付けなくなることがあります。その場合は,KFCA00901-W,KFCA00905-E,またはKFCA00906-Eメッセージが出力されます。該当サーバを終了したあと,再起動してください。該当サーバが 「_trnrcv」の場合は,TP1/LiNKシステムを終了させ,再起動してください。なお,KFCA00907-Eメッセージが出力された場合は,TP1/LiNKシステムダウンとなります。