E TIP内部
PGAUは、ほとんどの場合、完全かつ運用上のTIPを生成します。 TIP内部情報は、PGAUで生成されたTIPの問題の診断やカスタムTIPの作成を支援するために提供されています。
-
ゲートウェイがSNA通信プロトコルを使用している場合は、次のようにします:
この付録では、
pgadb2i
というサンプルを参照しています。 このTIPのソースは、Microsoft Windowsの場合%ORACLE_HOME%\dg4appc\demo\CICS
ディレクトリのファイルpgadb2i.sql
およびUNIXベースのシステム・システムの場合$ORACLE_HOME/dg4appc/demo/CICS
ディレクトリにあります。 -
ゲートウェイがTCP/IP通信プロトコルを使用している場合は、次のようにします:
この付録では、
pgaims
というサンプルを参照しています。 このTIPのソースは、Microsoft Windowsの場合%ORACLE_HOME%\dg4appc\demo\IMS
ディレクトリの、UNIXベース・システム場合$ORACLE_HOME/dg4appc/demo/IMS
ディレクトリの、ファイルpgtflipd.sql
にあります。
トピックス:
予備知識
いくつかのトピックは、TIPの操作と開発を理解する上で重要です。以下は、TIP操作の鍵となる概念のリストと、参考にして参考にできる参考資料です。
-
PL/SQLパッケージについては、「Oracle Database PL/SQLパッケージと型リファレンス」を参照してください。
-
PGAアプリケーションの概念については、このガイドの次の章を参照してください:
-
ご使用の通信プロトコルがSNAの場合: クライアント・アプリケーション開発(SNAのみ)を参照してください。
-
通信プロトコルがTCP/IPの場合: クライアント・アプリケーション開発(TCP/IPのみ)を参照してください。
-
PGA RPCインタフェースについては、「ゲートウェイRPCインタフェース」を参照してください。
-
PGA
UTL_PG
Interfaceの詳細については、「UTL_PGインタフェース」を参照してください。
PL/SQLパッケージとTIPファイルの分離
PGAU GENERATE
は、各出力TIPを標準PL/SQLパッケージ仕様ファイルと本文ファイルに書き込みます。 この分離は有益かつ重要です。 詳細については、「Oracle Database開発ガイド」と「Oracle Database PL/SQL言語リファレンス」を参照してください。 PL/SQLパッケージの構築の詳細については、「手続き型ゲートウェイ管理ユーティリティ」の"GENERATE"も参照してください。
TIPはPL/SQLパッケージです。 パッケージ仕様が再コンパイルされるたびに、そのパッケージに依存するすべてのオブジェクトが無効化され、仕様が変更されていなくても、参照されるときに暗黙的に再コンパイルされます。
TIP仕様に依存するオブジェクトには、リモート・ホスト・トランザクションと対話するためにTIPを呼び出すクライアント・アプリケーションが含まれます。
TIP本文を変更することが重要な理由は次のとおりです:
-
オラクルは、TIP本文に影響を与えるメンテナンスを出荷しています。
-
Oracleは、TIP本文が依存する
UTL_RAW
またはUTL_PG
変換機能のメンテナンスを提供しています。これらの関数の詳細については、「UTL_PGインタフェース」を参照してください。
-
リモート・ホストのネットワークまたはプログラムのロケーション・パラメータが変更された場合。 詳細については、「手続き型ゲートウェイ管理ユーティリティ」の"DEFINE TRANSACTION"を参照してください。
TIP仕様を変更または再コンパイルする必要がない場合、TIP本文を再生成して再コンパイルして、TIPを呼び出すクライアント・アプリケーションの無効化および暗黙的な再コンパイルを行わずに変更を取得することができます。
この理由から、PGAUは出力TIPを仕様ファイルと本文ファイルに分離しています。 ファイルの識別については、「手続き型ゲートウェイ管理ユーティリティ」の"GENERATE"を参照してください。
独立したTIP本文の変更
仕様が有効かどうかを判断
仕様が有効であるかどうかを判断するには、通信プロトコルに応じてSQL*Plusから次の文を発行します:
-
「ゲートウェイがSNA通信プロトコルを使用している場合は、」は以下を発行します:
SQL> column ddl_date format A22 heading 'LAST_DDL' SQL> select object_name, 2 object_type, 3 to_char(last_ddl_time,'MON-DD-YY HH:MM:SS') ddl_date, 4 status 5 from all_objects where owner = 'PGAADMIN' 6 order by object_type, object_name; OBJECT_NAME OBJECT_TYPE LAST_DDL STATUS ----------- ----------- -------------------- --------- PGADB2I PACKAGE NOV-24-1999 09:09:13 VALID PGADB2I PACKAGE BODY NOV-24-1999 09:11:44 VALID DB2IDRIV PROCEDURE DEC-30-1999 12:12:14 VALID DB2IDRVM PROCEDURE DEC-30-1999 12:12:53 VALID DB2IFORM PROCEDURE DEC-14-1999 11:12:24 VALID
LAST_DDL
列は、オブジェクトに対する最後のDDL変更が行われた日時です。 コンパイルの順序は次のとおりです:PGADB2I PACKAGE (the specification) DB2IDRVM PROCEDURE (1st client application depending on PGADB2I) DB2IFORM PROCEDURE (2nd client application depending on PGADB2I) DB2IDRIV PROCEDURE (3rd client application depending on PGADB2I) PGADB2I PACKAGE BODY (a recompilation of the body)
本文の再コンパイルでは、その依存オブジェクト、仕様、またはクライアント・アプリケーションが間接的に無効化されないことに注意してください。
-
「ゲートウェイがTCP/IP通信プロトコルを使用している場合は、」は次のようにSQL*Plusを発行します:
SQL> column ddl_date format A22 heading 'LAST_DDL' SQL> select object_name, 2 object_type, 3 to_char(last_ddl_time,'MON-DD-YY HH:MM:SS') ddl_date, 4 status 5 from all_objects where owner = 'PGAADMIN' 6 order by object_type, object_name; OBJECT_NAME OBJECT_TYPE LAST_DDL STATUS ----------- ----------- -------------------- --------- PGTFLIP PACKAGE APR-24-03 03:04:58 VALID PGTFLIP PACKAGE BODY APR-24-03 03:04:02 VALID PGTFLIPD PROCEDURE APR-24-03 03:04:09 VALID
LAST_DDL
列は、オブジェクトに対する最後のDDL変更が行われた日時です。 コンパイルの順序は次のとおりです:PGTFLIP PACKAGE (the specification) PGTFLIPD PROCEDURE (client application depending on PGADB2I) PGTFLIP PACKAGE BODY (a recompilation of the body)
本文の再コンパイルでは、その依存オブジェクト、仕様、またはクライアント・アプリケーションが間接的に無効化されないことに注意してください。
依存TIP本文または仕様変更
また、リモート・ホスト・トランザクションのデータ構造またはコール交換シーケンスを変更することもできます。 ただし、TIP仕様のパブリック・データ型またはファンクションも変更され、再コンパイルが必要になるため、このような変更は依存するクライアント・アプリケーションに公開されます。これにより、Oracleデータベースはそのような依存クライアント・アプリケーションを再コンパイルします。
-
「ゲートウェイがSNA通信プロトコルを使用している場合」、次のコマンドを発行します:
SQL> column ddl_date format A22 heading 'LAST_DDL' SQL> select object_name, 2 object_type, 3 to_char(LAST_DDL_TIME,'MON-DD-YY HH:MM:SS') ddl_date, 4 status 5 from all_objects where owner = 'PGAADMIN' 6 order by object_type, object_name; OBJECT_NAME OBJECT_TYPE LAST_DDL STATUS ---------- ----------- --------------------- --------- PGADB2I PACKAGE NOV-24-1999 09:09:13 VALID PGADB2I PACKAGE BODY NOV-24-1999 09:11:44 INVALID DB2IDRIV PROCEDURE DEC-30-1999 12:12:14 INVALID DB2IDRVM PROCEDURE DEC-30-1999 12:12:53 INVALID DB2IFORM PROCEDURE DEC-14-1999 11:12:24 INVALID
-
「ゲートウェイがTCP/IP通信プロトコルを使用している場合は、」は以下を発行します:
SQL> column ddl_date format A22 heading 'LAST_DDL' SQL> select object_name, 2 object_type, 3 to_char(LAST_DDL_TIME,'MON-DD-YY HH:MM:SS') ddl_date, 4 status 5 from all_objects where owner = 'PGAADMIN' 6 order by object_type, object_name; OBJECT_NAME OBJECT_TYPE LAST_DDL STATUS ---------- ----------- --------------------- --------- PGTFLIP PACKAGE APR-24-03 03:04:58 VALID PGTFLIP PACKAGE BODY APR-24-03 05:03:52 INVALID PGTFLIP PROCEDURE APR-24-03 05:04:29 INVALID
TIP本文を再コンパイル
仕様の再コンパイルによって、依存オブジェクト、パッケージ本文に加えて3つのクライアント・アプリケーションが無効になっていることに注意してください。 これらの変更を完了するには、本文を再コンパイルして仕様に準拠させてから、3つのクライアント・アプリケーションを手動でコンパイルするか、Oracleデータベースが自動的にコンパイルする必要があります。
クライアント・アプリケーションが参照されるときにOracleデータベースによって再コンパイルされた場合、再コンパイル時に1回の遅延が発生します。
クライアント・アプリケーションの再コンパイル・エラーがある場合は、以下の原因が考えられます:
-
クライアント・アプリケーション・ソースにおける顧客の変更
-
TIPが再生された場合のTIPのPG DD定義の変更
-
TIPが再生成された場合、PG DDに保存された複数のトランザクション・エントリ・バージョンから間違ったバージョンが生成される