B 一般的なエラーのトラブルシューティング

この付録では、一般的なエラーについて説明します。

PL/SQLラッパーの実行中に、各種のエラーが発生する場合があります。このようなエラーの原因と推奨措置を次に示します。

ORA-03113: 通信チャネルでファイルの終わりが検出されました

原因: クライアント・プロセスとサーバー・プロセスの間の接続が切断されました。このエラーは、なんらかの理由で外部エージェントextprocがクラッシュした場合にも発生することがあります。

措置: 通信エラーがありました。さらに調査する必要があります。最初に、ネットワークの問題の有無をチェックし、SQL*Netの設定を確認してください。また、alert.logファイルでもエラーの有無を調べてください。最後に、テストを実行して、サーバー・プロセスが停止しているかどうかと、障害時にトレース・ファイルが生成されたかどうかを確認してください。.NETファンクションにプロセスを終了するシステム・コールが含まれている可能性があります。この種のコールは削除してください。

ORA-03114: Oracleに接続されていません

原因: クライアント・プロセスとサーバー・プロセスの間の接続が切断されました。このエラーは、なんらかの理由で外部エージェントextprocがクラッシュした場合にも発生することがあります。

措置: 通信エラーがありました。さらに調査する必要があります。最初に、ネットワークの問題の有無をチェックし、SQL*Netの設定を確認してください。また、alert.logファイルでもエラーの有無を調べてください。最後に、テストを実行して、サーバー・プロセスが停止しているかどうかと、障害時にトレース・ファイルが生成されたかどうかを確認してください。.NETファンクションにプロセスを終了するシステム・コールが含まれている可能性があります。この種のコールは削除してください。

ORA-20100: System.BadImageFormatException。ファイルの書式が正しくありません。

原因: .NETアセンブリの書式が正しくありません。

措置: .NETストアド・プロシージャまたはファンクションを含む.NETアセンブリの書式を修正してください。.NETアセンブリを再コンパイルする必要があります。

ORA-20100: System.IO.FileNotFoundException。ファイルまたはアセンブリ名<assemblyname>.dll、または依存アセンブリの1つが見つかりませんでした。

原因: .NETアセンブリまたは依存アセンブリの1つが、ORACLE_BASE\\ORACLE_HOME\bin\clrまたはウィザードによるライブラリ・オブジェクトの作成中に指定されたサブディレクトリの1つで使用できません。

措置: .NETアセンブリとすべての依存アセンブリを、ORACLE_BASE\\ORACLE_HOME\bin\clrまたは該当するサブディレクトリの1つにコピーしてください。

ORA-20100: System.MissingMethodException

原因: MissingMethodExceptionがスローされました。次のような理由が考えられます。

  • ストアド・プロシージャ名またはファンクション名が、.NETアセンブリに定義されている実際のストアド・プロシージャ名またはファンクション名と一致しません。

  • 渡されたパラメータの数、順序および型が、.NETストアド・プロシージャにある実際のパラメータと一致しません。

措置: コールされたストアド・プロシージャまたはファンクションの名前に、スペルの誤りや大/小文字の不一致がないかどうかを調べてください。パラメータの数を確認し、パラメータの型と順序が.NETアセンブリに定義されているストアド・プロシージャまたはファンクションの型および順序と一致していることを確認してください。

ORA-20100: System.Reflection.TargetException。<typename>型が見つかりませんでした

原因: PL/SQLラッパーに使用されているネームスペースまたはクラス名、あるいはその両方が.NETアセンブリに定義されていません。

措置: クラス名にスペルの誤りや大/小文字の不一致がないかどうかを調べてください。.NETアセンブリ・コードで型を確認してください。

ORA-20100: System.Security.SecurityException

原因: 現行のセキュリティ・レベルでは.NETストアド・プロシージャまたはファンクションを実行できません。

措置: 適切なセキュリティ・レベルを使用してください。たとえば、.NETストアド・プロシージャまたはファンクションがファイル・システム・アクセスを必要とする場合は、EXTERNALセキュリティ・レベルで作成する必要があります。

ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません

原因: extprocエージェントへのネットワーク接続の初期化に失敗しました。この問題は、ネットワークの問題、不正なリスナー構成または不正な転送コードが原因で発生することがあります。

措置LISTENER.ORAおよびTNSNAMES.ORAでリスナー構成を確認するか、Oracle Names Serverを確認してください。マルチスレッドextproc構成のエントリが正しいことを確認してください。

ORA-28578: 外部プロシージャからのコールバック中にプロトコル・エラーが発生しました

原因: 内部プロトコル・エラーが発生しました。これは、PL/SQLラッパー作成時の登録に関するなんらかの問題が原因と思われます。

措置:ウィザードを使用してPL/SQLラッパーを再作成してください。

PLS-00201: 識別子DBMS_CLRを宣言してください

原因:Oracle Database Extensions for .NETが適切にインストールされ構成されていないか、.NETストアド・プロシージャがOracle Deployment Wizard for .NETを使用して適切にデプロイされていません。

措置: Oracle Database Extensions for .NETがインストールされていない場合は、Database Configuration Assistantを使用して構成してください。.NETストアド・プロシージャのデプロイには、Oracle Deployment Wizard for .NETを使用してください。