E ヒント内部
PGAUは、ほとんどの状況で完全で操作可能なヒントを生成します。 TIP内部情報は、PGAUで生成されたTIPの問題の診断や、カスタムTIPの作成(選択する場合)を支援するために提供されます。
-
ゲートウェイがSNA通信プロトコルを使用している場合:
この付録では、
pgadb2i
というサンプルを参照します。 このヒントのソースは、Microsoft Windowsの場合は%ORACLE_HOME%\dg4appc\demo\CICS
ディレクトリのpgadb2i.sql
ファイル、UNIXベースのシステムでは$ORACLE_HOME/dg4appc/demo/CICS
ディレクトリにあります。 -
ゲートウェイがTCP/IP通信プロトコルを使用している場合:
この付録では、
pgaims
というサンプルを参照します。 このヒントのソースは、UNIXベースのシステムのMicrosoft Windowsおよび$ORACLE_HOME/dg4appc/demo/IMS
ディレクトリの%ORACLE_HOME%\dg4appc\demo\IMS
ディレクトリのファイルpgtflipd.sql
にあります。
トピックス:
E.1 バックグラウンド読取値
TIPの操作および開発を理解するには、いくつかのトピックが重要です。次に、TIP操作の鍵となる概念と、詳細を参照できる推奨ソースを示します。
-
PL/SQLパッケージの詳細は、「Oracle Database PL/SQLパッケージおよびタイプ・リファレンス」を参照してください。
-
PGAアプリケーションの概念の詳細は、このガイドの次の章を参照してください:
-
通信プロトコルがSNAの場合: クライアント・アプリケーション開発(SNAのみ)を参照してください
-
通信プロトコルがTCP/IPの場合: クライアント・アプリケーション開発(TCP/IPのみ)を参照してください。
-
PGA RPCインタフェースの詳細は、「ゲートウェイRPCインタフェース」を参照してください。
-
PGA
UTL_PG
インタフェースの詳細は、「UTL_PGインタフェース」を参照してください。
E.2 PL/SQLパッケージとヒント・ファイルの分離
PGAU GENERATE
は、各出力TIPを標準の PL/SQLパッケージ仕様ファイルおよび本文ファイルに書き込みます。 この分離は有益で重要です。 詳細は、「Oracle Database開発ガイド」および「Oracle Database PL/SQL言語リファレンス」を参照してください。 PL/SQLパッケージのビルドの詳細は、「プロシージャ・ゲートウェイ管理ユーティリティ」の" GENERATE "も参照してください。
ヒントは、 PL/SQLパッケージです。 パッケージ仕様部が再コンパイルされるたびに、そのパッケージに依存するすべてのオブジェクトは、その仕様部が変更されていなくても、参照時に無効になり、暗黙的に再コンパイルされます。
TIP仕様に依存するオブジェクトには、TIPをコールしてリモート・ホスト・トランザクションと対話するクライアント・アプリケーションが含まれます。
次の理由により、TIP本文を変更することが重要になる場合があります:
-
Oracleは、TIP本文に影響するメンテナンスを出荷します。
-
Oracleは、TIP本文が依存する
UTL_RAW
またはUTL_PG
変換関数のメンテナンスを出荷します。これらの関数の詳細は、「UTL_PGインタフェース」を参照してください。
-
リモート・ホストのネットワークまたはプログラムのロケーションのパラメータが変更された場合。 詳細は、「プロシージャ・ゲートウェイ管理ユーティリティ」の" DEFINE TRANSACTION "を参照してください
TIP仕様を変更または再コンパイルする必要がない場合は、 TIP本文を再生成および再コンパイルして、TIPをコールするクライアント・アプリケーションの無効化および暗黙的な再コンパイルを行わずに変更をピック・アップできます。
このため、PGAUは出力TIPを仕様ファイルと本文ファイルに分離するようになりました。 ファイル識別の詳細は、「プロシージャ・ゲートウェイ管理ユーティリティ」の" GENERATE "を参照してください。
E.2.1 独立したTIP本文の変更
E.2.1.1 仕様が有効であるかどうかの判別
仕様が有効であるかどうかを判断するには、通信プロトコルに応じて、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)
本文の再コンパイルによって、依存オブジェクト、仕様またはクライアント・アプリケーションが間接的に無効になることはありません。
E.2.2 依存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
E.2.2.1 TIP本文の再コンパイル
仕様の再コンパイルによって、パッケージ本文に加えて、3つのクライアント・アプリケーションという依存オブジェクトが無効になっていることに注意してください。 これらの変更を完了するには、本文を再コンパイルして仕様に準拠し、3つのクライアント・アプリケーションを手動でコンパイルするか、Oracleデータベースで参照時に自動的にコンパイルする必要があります。
クライアント・アプリケーションが参照時にOracleデータベースによって再コンパイルされる場合、再コンパイル時に1回かぎりの遅延が発生します。
クライアント・アプリケーションの再コンパイル・エラー(ある場合):
-
クライアント・アプリケーション・ソースでの顧客の変更
-
TIPが再生成された場合、TIPに対する変更されたPG DD定義
-
ヒントが再生成されている場合、PG DDに保存されている複数のトランザクション入力バージョンから誤ったバージョンが生成されています