小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


ORA-30653: 拒否の制限に到達しました

はじめに

Oracle DBで外部表を取り込もうとしたら、以下のようなエラーになってしまいました。

SQLエラー: ORA-29913: ODCIEXTTABLEFETCHコールアウトの実行中にエラーが発生しました。
ORA-30653: 拒否の制限に到達しました
29913. 00000 - "error in executing %s callout"
*Cause: The execution of the specified callout caused an error.
*Action: Examine the error messages take appropriate action.

ログファイルから原因を特定する

原因がわからなくて困っていたら、ロード先のCSVファイルと同じフォルダに、テーブル名_xxxx_yyyy.logという名前のログファイルが出力されていました。
中を開いてみたら、エラーの内容が書かれていました。5バイトのカラムに7バイトのデータをロードしようとしていたのが原因でした。

列ID、行1でデータファイルC:\oracle_temp\table02.csvを処理中にエラーが発生しました
ORA-12899: value too large for column ID (actual: 7, maximum: 5)

Oracleの外部表のロードで、「ORA-30653: 拒否の制限に到達しました」というエラーがでたら、まずはCreate directoryで指定した読み込み先のフォルダを見てみると何か分かると思います。