機械翻訳について

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パッケージと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本文の変更

独立したTIP本文の変更は内部的なものであり、TIP仕様を変更する必要はありません。 そのような変更の例には、: UTL_RAWまたはUTL_PGの変換の変更、診断の組み込み、またはネットワーク・トランザクション・パラメータの変更が含まれます。

このような場合、PGAUを使用してTIPを再生成すると、新しいTIP仕様ファイルを保存または破棄できますが、再コンパイルしないでください。 新しいTIP本文は、SQL*Plusの下で再コンパイルする必要があります。 TIP本文の変更が独立している場合、新しい本文コンパイルはエラーなく完了し、以前の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に保存された複数のトランザクション・エントリ・バージョンから間違ったバージョンが生成される

意図しないTIP仕様の変更

TIPを生成したときに間違えた場合(たとえば、PG DDトランザクション定義を変更した場合、または間違って再生成中に間違ったバージョンを指定した場合)、再コンパイルされた本文は格納された仕様と一致しません。その結果、Oracleデータベースは、仕様および依存するクライアント・アプリケーションを無効にします。

正しい操作をリストアするには、TIPとそれに依存するクライアント・アプリケーションを再生成して再コンパイルする必要があります。