Oracleでの一般的エラー

Oracleを原因とするエラーの検出

Oracle Data Integratorでのエラーは、通常、次のように表示されます。

java.sql.SQLException: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
at ...
at ...
...

java.sql.SQLExceptionというコードは、単にJDBCドライバを通じて問合せがデータベースに発行され、エラーが戻されたことを示します。このエラーは、データベースまたはドライバのエラーであることが多く、その方向で解釈する必要があります。

太字で示されたテキストの部分のみを最初に検討する必要があります。このテキストをOracleのドキュメントで検索してください。ここにあるような(赤字で示した)Oracleに固有のエラー・コードが含まれる場合は、エラーをすぐに識別できます。

このようなエラーが実行ログで検出された場合、データベースに送信されたSQLコードを分析してエラーの原因を特定する必要があります。このコードは、エラーの発生したタスク「description」タブに表示されます。

次に、Oracleサーバーでよくあるエラーを、その主な原因とともに示します。

一般的なエラー

接続エラー

UnknownDriverException

JDBCドライバが不適切です。ドライバの名前をチェックしてください。

I/O Exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135290880)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

JDBC URLのインスタンス名が無効です。

I/O Exception: The Network Adapter could not establish the connection

JDBC URLにおけるOracleリスナー・ポートのIPアドレスとマシン名が不適切です。

ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

データ・サーバー定義に指定されたユーザーまたはパスワード(あるいはその両方)が無効です。このエラーは、特定のOracle Data Integratorコマンド(SqlUnloadなど)で発生することもあります。

Protocol violation

このエラーは、Oracle JDBCドライバと接続先データベース間に互換性がないことを示します。接続時、またはOracleデータベースで実行した最初の操作時にこのエラーが発生する場合は、使用中のデータベース・インストールに付属するリリースのOracle JDBCドライバをインストールしてください。

ORA-00600: 内部エラー・コード

Oracleデータベースの内部エラー。ドライバに互換性がないことが原因の可能性があります。

ORA-12154: TNS: サービス名を解決できませんでした。

TNS別名の解決。この問題は、OCIドライバの使用時に、またはDBLinkを通じたKMの使用時に発生する可能性があります。マシンのTNS別名の構成をチェックしてください。

ORA-02019: 指定されたリモート・データベースは存在しません。

存在しないDBLinkを通じてKMを使用しています。KMのオプションと前提条件をチェックしてください。

インタフェースのエラー

ORA-00900: SQL文が無効です。
ORA-00923: FROMキーワードが指定の位置にありません。

インタフェースで生成されたコード、またはプロシージャで入力されたコードがOracleで無効です。この問題は、通常、マッピングまたは結合のフィルタにおける入力エラーに関連しています。よくある原因は、欠落した引用符や閉じられていないカッコです。

他によくある原因は、SQL以外の構文に対するコール(EXECUTE SCHEMA.PACKAGE.PROC(PARAM1, PARAM2)という構文を使用したOracleストアド・プロシージャへのコールなど)です。

ストアド・プロシージャに対する有効なSQLコールは、次のとおりです。

BEGIN
SCHEMA.PACKAGE.PROC(PARAM1, PARAM2);
END;

構文EXECUTE SCHEMA.PACKAGE.PROC(PARAM1, PARAM2)は、SQL*Plusに固有であり、Oracle JDBCシン・ドライバでは動作しません。

ORA-00904: 列名が無効です。

マッピング、結合またはフィルタの指定エラーです。列名ではない文字列が列名として解釈されたか、列名のスペルが間違っています。

このエラーは、最近変更された構造を含むデータストアに関連するエラー表にアクセスする場合にも発生する可能性があります。エラー表に変更内容を反映させるか、エラー表を削除して次回実行時にOracle Data Integratorでエラー表を再作成する必要があります。

ORA-00903: 表名が無効です。

使用される表(ソースまたはターゲット)が、Oracleスキーマに存在しません。コンテキストに対応するマッピング論理スキーマおよび物理スキーマをチェックし、そのコンテキストでアクセスされるスキーマに表が物理的に存在していることを確認してください。

ORA-00972: 識別子が長すぎます。

Oracleのオブジェクト識別子には制限があります(通常は30文字)。この制限を超えると、このエラーが発生します。インタフェースの実行時に作成された表がこの制限を超えた場合、このエラーが発生します(詳細は実行ログを参照してください)。

Oracleテクノロジのトポロジで、オブジェクト名(表および列)の最大長が現在のOracle構成に対応していることを確認してください。

ORA-01790: 式には対応する式と同じデータ型を持つ必要があります。

(マッピングや結合などで)暗黙的に変換できない異なる2つの値を結合しようとしています。これらの値には明示的な変換関数を使用してください。