0

テーブルの内容からCSVファイルを作成するためのSQLプロシージャを記述しているときに、次のエラーが発生します。

ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 488
ORA-29283: invalid file operation
ORA-06512: at "DSI_DPIPE.BUSSHOURS", line 28
ORA-06512: at "DSI_DPIPE.BUSSHOURS", line 55
ORA-06512: at line 1

最初の行は次のとおりです。

file_http UTL_FILE.file_type;

次のステートメントを使用している場合でも、同じエラーが発生します。

file_http sys.UTL_FILE.file_type;

事前に貴重なソリューションをありがとうございます。

4

3 に答える 3

2

ファイルを配置するディレクトリに、oracle ユーザーに書き込み権限がありますか?

編集: Unix 環境にいる場合は、oracle ユーザーとして手動でログインし、ファイルを作成しようとしているパスに移動し、コマンド「touch」を使用してファイルを作成する必要があります。この方法でファイルを作成できない場合は、オペレーティング システムの「アクセス権限」に問題があることがわかります。そうでない場合、問題は ORACLE にあります。(検索を 50% 削減します ;D )

編集 2:
UTL_FILE_DIR = * の場合、データベース権限は無効になり、すべてのファイルとディレクトリにすべてのユーザーがアクセスできます。しかし、これはデータベース レベルでのみ当てはまると思うので、オペレーティング システムにも何か言いたいことがあります。oracle ユーザーがディレクトリへの書き込みアクセス権を持っていない場合、データベースのユーザーは、UTL_FILE_DIR が何を言おうと、この権利を取得できません。

于 2009-06-22T11:05:14.043 に答える
2

ディレクトリ アクセスの検証には、UTL_FILE_DIR の代わりに CREATE DIRECTORY 機能を使用します。

UTL_FILE_DIR = * は危険です。なぜなら、utl_file パッケージにアクセスできるデータベース ユーザーが、ユーザー oracle (datafiles、init.ora、listener.ora など) の権限でデータベース サーバー上のファイルを読み書きできるからです。

ディレクトリに書き込み/読み取りを行うための適切な権限がありますか。サーバー上のユーザー oracle には、読み取り/書き込み権限が必要です。

于 2009-06-22T11:26:06.827 に答える
0

ディレクトリ パスが正しいこと、および適切な権限が設定されていることを確認します (つまり、Oracle はオペレーティング システムによってその場所への書き込みが許可されています)。

于 2009-06-22T11:07:11.637 に答える