機械翻訳について

5 エラー・メッセージ、診断およびレポート

次のセクションでは、エラーメッセージとOracle Database Gateway for DRDAに固有のエラー・コードについて説明します:

ゲートウェイのエラー・メッセージの解釈

ゲートウェイ・アーキテクチャは、様々なコンポーネントで構成されています。 1つ以上のDRDAデータベース表を参照するSQL文を処理するときには、どのコンポーネントでもエラー状態が検出およびレポートされる可能性があります。 つまり、エラーは、複数のコンポーネントからのエラー・コードとサポート・データを含む複雑なものとなる可能性があります。 ただし、すべての場合において、アプリケーションが最終的に受け取るのは単一のエラー・コードまたはリターン・コードです。

ほとんどのゲートウェイ・メッセージは、Oracle SQL通信領域(SQLCA)の70文字のメッセージ領域を超えているため、ゲートウェイ経由でデータにアクセスするために使用するプログラム・インタフェースおよびOracle呼び出しインタフェースでは、SQLGLMまたはOERHMSを使用してメッセージのテキスト全体を表示する必要があります。 SQLGLMの追加情報については、Oracleプリコンパイラのプログラマ・ガイドを参照し、OERHMSの追加情報については、Oracle C ++ Call Interfaceプログラマ・ガイドを参照してください。

ゲートウェイの使用時に発生するエラーは、次のように多くのソースが原因となります。

  • Oracle Databaseにより検出されたエラー

  • ゲートウェイにより検出されたエラー

  • クライアント側またはサーバー側のDRDAソフトウェアで検出されたエラー

  • 通信エラー

  • サーバー・データベースにより検出されたエラー

ゲートウェイにより検出されたエラー

Oracleデータベースによって検出されたエラーは、標準のORAタイプ・メッセージを使用してアプリケーションまたはツールに戻されます。 これらのエラーの説明については、Oracle Databaseエラー・メッセージを参照してください。 たとえば、未定義のデータベース・リンク名が指定されると、次のエラーが発生します。

ORA-02019:  connection description for remote database not found 

ORA-9100からORA-9199の範囲のエラーは、汎用ゲートウェイ・レイヤー(DRDAに固有ではないゲートウェイのコンポーネント)用に予約されています。 この範囲のメッセージはOracle Databaseエラー・メッセージで文書化されています。

DRDAソフトウェアで検出されたエラー

クライアント側またはサーバー側のDRDAゲートウェイで検出されたエラーは、通常、エラーORA-28500を使用してレポートされ、次にゲートウェイ固有の拡張エラー・メッセージが続きます。 拡張メッセージでは、次の2つのリターン・コードがレポートされます。

  • drcは、DRDA固有のエラーを指定します。

  • grcは、DRDAレイヤーで検出された汎用ゲートウェイ・エラーを示します。 これらのエラーは、Oracle Databaseエラー・メッセージに記録されています。

注意:

エラー・コードORA‐28500 は、ゲートウェイ・バージョン8より前のエラー・コードORA‐09100でした。 エラー・コード ORA‐28501は、ゲートウェイ・バージョン8より前のORA‐09101としてリストされていました。

drcの値に続くカッコ内の値は、Oracleサポート・サービスでのデバッグに使用されます。 errp フィールドは、エラーを検出したプログラム(クライアントまたはサーバー)を示します。 存在する場合、 errmc エラー・トークンをすべてリストします。

たとえば、i nitsid.oraファイルのDRDA_REMOTE_NAMEパラメータで指定されたデータベース名がDRDAサーバーで定義されていないと、次のエラー・メッセージが戻されます:

ORA-28500: connection from ORACLE to non-Oracle system returned the message:

DRDAサーバーで検出されたエラー

DRDA serverによって検出されたエラーは、ORA-28500とそれに続くゲートウェイ固有の拡張エラー・メッセージで報告されます。 使用している特定のデータベースに関するIBM社のドキュメントを参照してください。 翻訳されるいくつかのSQLエラーについては、「マップされたエラー」を参照してください。

注意:

エラー・コードORA‐28500は、ゲートウェイ・バージョン8より前のエラー・コード ORA‐09100でした。 エラー・コードORA-28501は、リリース8より前のゲートウェイではORA-09101としてリストされていました。

たとえば、次のエラー・メッセージは、DRDAサーバーがinitSID.oraファイルのHS_FDS_CONNECT_INFOパラメータで指定されたDB2データベース名を検出しなかったことを示します:

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Oracle][ODBC DB2 Wire Protocol driver]Remote Database Not Found: UNKNOWN

マップされたエラー

一部のSQLエラーはDRDAサーバーから戻され、 Oracleエラー・コードに変換されます。 この処理は、Oracleインスタンスまたはゲートウェイによりエラー状態の特別な処理を提供する場合に必要です。

次の例は、変換オブジェクトが存在しないエラーです。

ORA-00942: table or view does not exist
[Oracle][ODBC DB2 Wire Protocol driver][UDB DB2 for OS/390 and z/OS]PCASTRO.XXX IS AN UNDEFINED NAME.

SQLトレースおよびゲートウェイ

アプリケーションを開発する場合、ゲートウェイを通じて渡される正確なSQL文を確認できると便利なことがよくあります。 以下のセクションでは、適切なトレースパラメータの設定とデバッグ・ゲートウェイの設定について説明します。

Oracle DatabaseでのSQLトレース

Oracleデータベースには、実際にゲートウェイに送信されるSQL文を取得するコマンドがあります。 このコマンドは、EXPLAIN PLANと呼ばれます。 EXPLAIN PLANコマンドは、指定されたSQL文を実行するためにOracleデータベースが実行する実行計画を決定するために使用されます。 このコマンドは、実行計画の各ステップを記述する行を指定された表に挿入します。 コストベースの最適化を使用する場合、このコマンドにより、文の実行によるコストも確認できます。 このコマンドの構文は次のとおりです。

EXPLAIN PLAN [ SET STATEMENT_ID = 'text' ]
    [ INTO [schema.]table[@dblink] ] FOR statement 

このコマンドの詳細については、Oracle Database SQL言語リファレンスを参照してください。

注意:

ほとんどの場合、ゲートウェイに実際に送信される(したがってDRDAサーバーに送信される)SQL文を抽出するには、EXPLAIN PLANで十分です。 ただし、特定のSQL文の形式に対しては、ゲートウェイで後処理が実行されます。