A SNAプロトコル用のゲートウェイ初期化パラメータ
次のトピックでは、ゲートウェイ初期化ファイルのロケーションについて説明し、特にSNAプロトコル用のOracle Database Gateway for APPCでサポートされる ゲートウェイ初期化パラメータを示します。 これらのパラメータは、「"SNAプロトコルを使用して既存のゲートウェイ・インスタンスを新しいリリースに移行"」で完全に文書化されています。 さらに、トピックには、SNAを使用するゲートウェイのサンプルlistener.ora
およびtnsnames
ファイルが含まれています。
ゲートウェイのパラメータ・ファイルは、$ORACLE_HOME/dg4appc/admin
ディレクトリにあり、 init
sid.
ora
と呼ばれます。
注意:
init
sid.
ora
ファイルには、SNAパラメータとTCP/IPパラメータの両方が入っています。 これらのファイルを変更してパラメータを適切にする必要があります。
PGAパラメータ
PGAパラメータは、ゲートウェイのAPPCインタフェース部分を制御します。 PGAパラメータは、SET
ゲートウェイ初期化パラメータを使用して指定されます。 次に例を示します。
SET pga_parm=value
説明:
-
pga_parm
は、後続のリスト内のPGAパラメータ名の1つです -
value
は、内容がpga_parm
に依存する文字列です。
表A-1に、PGAパラメータのリストと説明を示します。
表A-1 Oracle Database Gateway for APPCのPGAパラメータ(SNAの使用)
パラメータ | 説明 |
---|---|
説明:
|
|
PGAトランザクション機能。 これはゲートウェイを介する更新を許可するかどうかを制御します。 次に示す値が有効です。
デフォルトは |
|
着信APPC
デフォルトは |
|
ゲートウェイがトランザクション・ログを維持するOracleデータベースのOracle Netサービス名。 このパラメータの長さは デフォルト値はありません。 |
|
デフォルト値はありません。 |
|
デフォルト値はありません。 |
|
APPC対話を、 デフォルト値はありません。 |
|
コミット確認の デフォルト値は |
|
APPC対話を、 デフォルト値はありません。 |
|
APPC対話セキュリティ・オプション。 これは、対話割当て時に、どのようなセキュリティ・パラメータがFMH-5でOLTPに送信されるかを制御します。 次に示す値が有効です。
デフォルトは これらのオプションの詳細については、「セキュリティ要件」を参照してください。 |
|
(AIXのみのパラメータ) |
ページング領域不足を示すシステムからの
デフォルトは |
PGAトレース・レベル。 これは、 デフォルトは
|
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フェーズ・コミットを提供しますが、他の commit-confirmサイト(ゲートウェイまたはOracle)分散トランザクション。 COMMIT_CONFIRM
を使用できない場合、SINGLE_SITE
機能は、OracleデータベースとOLTP間の更新機能を提供します。これは、OLTPのみが更新を実行し、Oracle側で更新が行われないという制限があります。
更新制御のためのPGA_CAPABILITY
オプションは、それぞれ固有の要件をリモート・トランザクション・プログラムとOLTPに課します。 COMMIT_CONFIRM
機能については、これらの要件は『Oracle Database Gateway for APPCユーザーズ・ガイド』の第5章コミット確認の実装で説明されています。 このガイドの「Commit-ConfirmのためのOLTPの構成」も参照してください。 SINGLE_SITE
機能の場合、リモート・トランザクション・プログラムは、ゲートウェイから受信したCOMMIT
およびROLLBACK
リクエストへのレスポンスとして、Oracleデータベースに代わって必要なタスクを実行します。 ゲートウェイは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側の両方でリソースを更新する必要がある場合、COMMIT_CONFIRM
ゲートウェイを使用できます。ただしOLTPとリモート・トランザクション・プログラムがコミット確認を実装するようにセットアップされていることが条件です。
複数のゲートウェイ・インスタンスをセットアップするために必要なのは、各インスタンスについて次をセットアップすることのみです。
-
listener.ora
で定義されているゲートウェイ・インスタンスに接続するために使用される別名を定義しているtnsnames.ora
ファイル内のエントリ。 -
tnsnames.ora
ファイル内のUSING
パラメータで定義されている別名を指定しているOracleデータベース内のデータベース・リンク。
ゲートウェイ・インスタンスが1つの共有ディレクトリ構造を共有でき、同一の実行可能ファイルを使用することに注意してください。
たとえば、2つのゲートウェイ、PGAI
およびPGAU
(たとえば照会と更新でそれぞれ使用)をセットアップするには、次の手順が必要です。
-
2つの
sid
、PGAI
、およびPGAU
について、listener.ora
のエントリを定義します。 -
2つの新しい
sid
、PGAI
とPGAU
に接続する2つの別名をtnsnames.ora
に定義します。 -
最後に、初期化ファイル
initPGAI.ora
およびinitPGAU.ora
を作成します。initPGAI.ora
でPGA_CAPABILITY
をREAD_ONLY
に、initPGAU.ora
でPGA_CAPABILITY
をSINGLE_SITE
またはCOMMIT_CONFIRM
に設定します。 その後、PGAI
ゲートウェイを照会専用トランザクションに使用し、PGAU
ゲートウェイを更新トランザクションに使用します。ゲートウェイ・インスタンスをさらに追加する場合にも、同一の手順を使用します。
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
の特殊な使用事例は、IMS/TMがバージョン7の場合です。 IMS/TMバージョン7で提供される暗黙のAPPCサポートを使用する場合、SYNCLEVEL 1
で動作する対話は、SYNCLEVEL 0
で動作する対話とは異なる方法で処理されます。 対話がSYNCLEVEL 1
の場合、IMS/TMは各APPC SEND
の後に自動的にCONFIRM
リクエストを生成します。 ゲートウェイ側で、PGA_CONFIRM
= ACCEPT
が指定されていない場合、IMS/TMによって送信されたCONFIRM
リクエストは、ゲートウェイによって生成されたエラーを引き起こします。 PGA_CONFIRM
= ACCEPT
を使用すると、この問題が緩和され、ゲートウェイはCONFIRMED
レスポンスで受信したCONFIRM
リクエストにレスポンスできます。 この方法の唯一の制約は、IMSによって提供される暗黙のAPPCサポートが、いつCONFIRM
リクエストをゲートウェイから受信したかをアプリケーションに通知しないことです。 これは、ゲートウェイがCONFIRM
を使用してCOMMIT
を実装できないため、COMMIT
およびROLLBACK
を使用して会話のIMS側の更新を制御できないことを意味します。
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) ) )
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) )