5 エラー・メッセージ、診断およびレポート
ゲートウェイのエラー・メッセージの解釈
ゲートウェイ・アーキテクチャは、様々なコンポーネントで構成されています。 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トレースおよびゲートウェイ
アプリケーションを開発する場合、ゲートウェイを通じて渡される正確な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言語リファレンス」を参照してください。