開発時に発生するエラー

ORA-29280: 無効なディレクトリ・パスです。

初めて DIRECTORY 指定でのファイルアクセスを試みて ORA-29280: 〜エラーに悩まされているならば、アクセス権限か用法が間違っていると思われる。(自分は両方つまづきました)

原因

ディレクトリのパーミッションの設定が間違っている。実際に書き込みを行うのはサーバープロセス

対応

書き込み先を変更するか、ディレクトリとファイルに対して、ORACLEがアクセスできることを確認する。

原因

DIRECTRY オブジェクトでのアクセス場合に UTL_FILE.FOPEN の location に絶対パス名を指定している(マニュアルも誤解させる表記になっています)。 ここには、ディレクトリオブジェクト名を指定する必要がある。
また、文字列パラメータ項目のため大文字小文字を区別されるので注意しなければならない。(ここにも、引っ掛かりました)

対応

UTL_FILE.FOPENの第 1パラメータ location には、CREATE DIRECTRY で作成した、オブジェクト名を 大文字 で記入する。
但し、CREATE DIRECTRY "lower-case-name" AS 〜 と二重引用符(")を使用していれば、小文字にする。 オブジェクト名は、通常 大文字に変換されますが、このパラメータは VARCHAR2 のため 自動で変換されない。
以下のSQL でディレクトリオブジェクト名の正確な綴りを確認する。

ディレクトリ オブジェクトの一覧

SQL> SELECT * FROM ALL_DIRECTORIES ; 

Oracle 8i からの互換性などで UTL_FILE_DIR 初期化パラメータを使用しなければならない場合には

ALTER SYSTEM SET
  UTL_FILE_DIR='/u01/xxx/yyy/zzz','/u02/aaa/bbb/ccc' SCOPE=SPFILE ;
... 確認には再起動が必要
SELECT NAME, VALUE FROM V$PARAMETER2 WHERE NAME='utl_file_dir' ;

SELECT にて複数のディレクトリが個別に扱われていることを確認する。 正しく設定されていれば、指定ディレクトリ毎に複数行にわたって表示される。(V$PARAMETER2 Oracle 9i で見たとき)



関連事項

一覧ページへ戻る

OTN (Oracle Technology Network)によるエラーメッセージによる情報だけでは、対処に困ったエラーについてのプラクティスです。
ベスト・プラクティスというわけではないので、書いてあることに固執しないで広い視野でエラー対応してください。

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー