A SNAプロトコル用のゲートウェイ初期化パラメータ
次のトピックでは、ゲートウェイ初期化ファイルのロケーションについて説明し、Oracle Database Gateway for APPCでサポートされている ゲートウェイ初期化パラメータ(特にSNAプロトコル用)をリストします。 これらのパラメータの詳細は、「既存のゲートウェイ・インスタンスからSNAプロトコルを使用する新リリースへの移行」を参照してください。 また、このトピックには、SNAを使用するゲートウェイのサンプルlistener.ora
およびtnsnames
ファイルが含まれています。
ゲートウェイの パラメータ・ファイルは、$ORACLE_HOME/dg4appc/admin
ディレクトリにあり、 init
sid.
ora
と呼ばれます。
ノート:
init
sid.
ora
ファイルには、SNAパラメータとTCP/IPパラメータの両方が含まれています。 これらのファイルを変更してパラメータを適切にする必要があります。
A.1 PGAパラメータ
PGA パラメータは、ゲートウェイのAPPCインタフェース部分を制御します。 PGAパラメータは、SET
ゲートウェイ初期化パラメータを使用して指定します。 たとえば:
SET pga_parm=value
説明:
-
pga_parm
は、次のリストにあるPGAパラメータ名の1つです -
value
は、pga_parm
に依存する内容を含む文字列です
表A-1に、PGAパラメータのリストと説明を示します。
表A-1 SNAを使用したOracle Database Gateway for APPCのPGAパラメータ
パラメータ | 説明 |
---|---|
説明:
|
|
PGAトランザクション機能。 これはゲートウェイを介する更新を許可するかどうかを制御します。 次に示す値が有効です。
デフォルトは |
|
受信APPC
デフォルトは |
|
ゲートウェイがトランザクション・ログを維持するOracleデータベースのOracle Netサービス名。 このパラメータの長さは、 デフォルト値はありません。 |
|
デフォルト値はありません。 |
|
デフォルト値はありません。 |
|
デフォルト値はありません。 |
|
コミット確認 デフォルト値は |
|
デフォルト値はありません。 |
|
APPC対話セキュリティ・オプション。 これは、対話割当て時に、どのようなセキュリティ・パラメータがFMH-5でOLTPに送信されるかを制御します。 次に示す値が有効です。
デフォルトは、 これらのオプションの詳細は、「セキュリティ要件」を参照してください。 |
|
(AIXのみのパラメータ) |
ページング領域が不足していることを示す
デフォルトは |
PGAトレース・レベル。 これは、 デフォルトは
|
A.2 PGA_CAPABILITYパラメータの考慮事項
PGA_CAPABILITY
パラメータの設定を選択する場合は、リモート・トランザクション・プログラムが実行する内容に基づいて正しい設定が使用されていることを確認してください。
READ_ONLY
設定は、リモート・トランザクション・プログラムが読取り専用の場合、つまりリモート・トランザクション・プログラムがデータベース更新を実行しない場合、常に使用する必要があります。 READ_ONLY
は、リモート・トランザクション・プログラムがデータベース更新を実行する場合には使用しないでください。 たとえば、READ_ONLY
設定を選択し、ゲートウェイによって起動されるリモート・トランザクション・プログラムが外部データベースへの更新を実行する場合、 Oracleデータベースでは、これらの更新に対する整合性保護は提供されません。 さらに、READ_ONLY
モードでは、ゲートウェイ・トランザクションを、他の複数のデータベースを更新する分散トランザクションの一部にできます。 ゲートウェイがこの状況で更新を行うリモート・トランザクション・プログラムを呼び出す場合、障害が発生すると、リモート・トランザクション・プログラムによって更新されたデータベースは他のデータベースと同期していません。
リモート・トランザクション・プログラムが外部データベースに対する更新を実行する場合、PGA_CAPABILITY
の値には の2つのオプションがあります:
-
SINGLE_SITE
-
COMMIT_CONFIRM
これらの各オプションは、 COMMIT
および ROLLBACK
リクエストをリモート・トランザクション・プログラムに転送し、ゲートウェイの分散更新およびリカバリ機能について Oracleデータベースに通知することで、データ整合性の問題に対する保護を提供します。 個別のオプションは、リモート・トランザクション・プログラムの設計や、プログラムが実行されるOLTP(オンライン・トランザクション・プロセッサ)の機能により異なります。
OLTPでLU6.2 SYNCLEVEL 1
または2
がサポートされている場合、 COMMIT_CONFIRM
機能は、 OracleデータベースとOLTPの間に限定された2フェーズ・コミットを提供しますが、他のコミット確認サイト(ゲートウェイまたはOracle)は分散トランザクションの一部にできないという制限があります。 COMMIT_CONFIRM
を使用できない場合、SINGLE_SITE
機能は、Oracleデータベースと OLTPの間で更新機能を提供します。OLTPのみが更新を実行でき、Oracle側では更新を実行できないという制限があります。
更新制御用の各PGA_CAPABILITY
オプションは、リモート・トランザクション・プログラムおよびOLTPに特定の要件を適用します。 COMMIT_CONFIRM
機能の場合、これらの要件については、「Oracle Database Gateway for APPCユーザー・ガイド」の第5章、「コミット確認の実装」で詳しく説明します。 このガイドの「コミット確認のためのOLTPの構成」も参照してください。 SINGLE_SITE
機能の場合、リモート・トランザクション・プログラムは、 Oracleデータベースのかわりにゲートウェイから受信したCOMMIT
およびROLLBACK
リクエストに応じて、必要なタスクを実行します。 ゲートウェイは、APPCのCONFIRM
およびSEND_ERR
リクエストを使用して、それぞれCOMMIT
およびROLLBACK
を実装します。 CONFIRM
を受信すると、リモート・トランザクション・プログラムはCOMMIT
処理を実行してから、APPC CONFIRMED
レスポンスでゲートウェイに応答する必要があります。 SEND_ERR
を受信すると、リモート・トランザクション・プログラムはROLLBACK
処理を実行する必要があります。
Oracleデータベースの分散トランザクション機能は、ゲートウェイで使用されるPGA_CAPABILITY
オプションの影響を受けるため、問合せを分離し、それぞれに異なるゲートウェイ・インスタンスを使用してアプリケーションを更新することをお薦めします。 1つのゲートウェイは、PGA_CAPABILITY
をREAD_ONLY
に設定し、PGA_CAPABILITY
をSINGLE_SITE
またはCOMMIT_CONFIRM
に設定して定義できます。
これにより、Oracleデータベースの制御下で、読取り専用トランザクション・プログラムが分散トランザクションに参加することが可能になります。 たとえば、DB2からのデータは、照会のみのリモート・トランザクション・プログラムによってREAD_ONLY
ゲートウェイを介して取得でき、その後、Oracleデータベース上のデータベース更新への入力として使用できます(すべて1つのOracleトランザクション内)。 SINGLE_SITE
ゲートウェイは、Oracleデータベース・コントロールの範囲外で外部データベースに対する更新を実行するリモート・トランザクション・プログラムへのアクセスにのみ使用できます。 データは、Oracleデータベースにアクセスできる任意のデータベースから読み取ることができ、そのデータはゲートウェイを介して更新を実行するために使用できます。
Oracle側とOLTP側の両方でリソースを更新する必要がある場合は、OLTPおよびリモート・トランザクション・プログラムがコミット確認を実装するように設定されていれば、COMMIT_CONFIRM
ゲートウェイを使用できます。
複数のゲートウェイ・インスタンスをセットアップするために必要なのは、各インスタンスについて次をセットアップすることのみです。
-
listener.ora
で定義されているゲートウェイ・インスタンスへの接続に使用する別名を定義する、tnsnames.ora
ファイルのエントリ -
USING
パラメータでtnsnames.ora
ファイルに定義されている別名を指定する、Oracleデータベース内のデータベース・リンク
ゲートウェイ・インスタンスが1つの共有ディレクトリ構造を共有でき、同一の実行可能ファイルを使用することに注意してください。
たとえば、 PGAI
と PGAU
の2つのゲートウェイ(それぞれ照会および更新使用の場合)を設定するには、次のステップが必要です:
-
2つの
sid
、PGAI
およびPGAU
のエントリをlistener.ora
に定義します。 -
2つの新しい
sid
、PGAI
およびPGAU
に接続する2つの別名をtnsnames.ora
に定義します。 -
2つのデータベース・リンクを Oracleデータベースで定義します。1つは
PGAI
に接続し、もう1つはPGAU
に接続します。 -
最後に、初期化ファイル
initPGAI.ora
およびinitPGAU.ora
を作成します。initPGAI.ora
で、PGA_CAPABILITY
をREAD_ONLY
に設定し、initPGAU.ora
で、PGA_CAPABILITY
をSINGLE_SITE
またはCOMMIT_CONFIRM
に設定します。 次に、問合せのみのトランザクションにPGAI
ゲートウェイを使用し、更新トランザクションにPGAU
ゲートウェイを使用します。ゲートウェイ・インスタンスをさらに追加する場合にも、同一のステップを使用します。
A.3 PGA_CONFIRMパラメータの考慮事項
PGA_CONFIRM
パラメータの設定を決定する場合は、各設定の影響を理解することが重要です。 まず、このパラメータは、SYNCLEVEL 1
で実行されている会話にのみ影響することに注意してください。 ほとんどのアプリケーションでは、デフォルト設定のPGA_CONFIRM
=
REJECT
が正しい。 この設定では、リモート・トランザクション・プログラムからCONFIRM
リクエストを受信すると、ゲートウェイはエラーを生成します。 CONFIRM
を使用してゲートウェイがデータを受信したことを確認するリモート・トランザクションがある場合は、PGA_CONFIRM
=
ACCEPT
を使用して、ゲートウェイがCONFIRMED
レスポンスで受信したCONFIRM
リクエストに応答できるようにする必要があります。 OracleアプリケーションがCOMMIT
リクエストを送信したときに、ゲートウェイがCONFIRM
リクエストをリモート・トランザクションに送信することに注意してください。 COMMIT
処理を正しく動作させるには、リモート・トランザクションを書き込んで、ゲートウェイからCONFIRM
リクエストを受信するたびにローカル・コミット処理を実行し、コミット処理が正常に完了した後、CONFIRMED
を使用してゲートウェイに応答する必要があります。 コミット処理中にエラーが発生した場合、リモート・トランザクションは、コミットが失敗したことを示すSEND_ERR
を使用してゲートウェイに応答する必要があります。
PGA_CONFIRM
=
ACCEPT
を使用する特別なケースの1つは、IMS/TMバージョン7です。 IMS/TMバージョン7で提供される暗黙のAPPCサポートを使用する場合、SYNCLEVEL 1
で実行される会話は、SYNCLEVEL 0
で実行される会話とは異なる方法で処理されます。 IMS/TMは、会話がSYNCLEVEL 1
にあるときに、各APPC SEND
の後にCONFIRM
リクエストを自動的に生成します。 ゲートウェイ側で、PGA_CONFIRM
= ACCEPT
が指定されていない場合、IMS/TMによって送信されたCONFIRM
リクエストによって、ゲートウェイによってエラーが生成されます。 PGA_CONFIRM
= ACCEPT
を使用すると、この問題が軽減され、ゲートウェイがCONFIRMED
レスポンスで受信CONFIRM
リクエストに応答できるようになります。 この方法を実行する唯一の制限は、IMSによって提供される暗黙のAPPCサポートが、ゲートウェイからCONFIRM
リクエストを受信したときにアプリケーションに通知しないことです。 つまり、ゲートウェイはCONFIRM
を使用してCOMMIT
を実装できないため、COMMIT
およびROLLBACK
を使用して会話のIMS側での更新を制御できません。
A.4 SNAを使用するゲートウェイのサンプルlistener.oraファイル
LISTENER = (ADDRESS_LIST = (ADDRESS= (COMMUNITY= TCP.world) (Host = bay) (PROTOCOL= TCP) (Port= 2621) ) (ADDRESS= (COMMUNITY= TCP.world) (Host = bay) (PROTOCOL= TCP) (Port= 2623) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PGA) (ORACLE_HOME = /oracle/pga/12.2) (PROGRAM = pg4asrv) ) )
A.5 SNAを使用するゲートウェイのサンプルtnsnames.oraファイル
ORA920 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = bay.us.example.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORA920.bay) ) ) PGA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = bay)(PORT = 2621)) ) (CONNECT_DATA = (SID = PGA) ) (HS = OK) )