9

以下は、テーブルからフラットファイルにデータを抽出するために使用するコードです。

BEGIN
    DECLARE
        file_name VARCHAR2(50);
        file_handle utl_file.file_type;
BEGIN
    file_name := 'table.txt';
    file_handle := utl_file.fopen('SEND',file_name,'W');
FOR rec in(
    SELECT            column 1
                ||'~'||column 2
                ||'~'||column 3 out_line
    FROM table1)LOOP
UTL_FILE.PUT_LINE(file_handle,rec.out_line);
UTL_FILE.FFLUSH(file_handle);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
END;
end;

このコードは開発データベースでは正常に機能していますが、新しいDBで実行すると、以下のエラーがスローされます。

Error starting at line 1 in command:
    BEGIN
    DECLARE
        file_name VARCHAR2(50);
        file_handle utl_file.file_type;
BEGIN
    file_name := 'table.txt';
    file_handle := utl_file.fopen('SEND',file_name,'W');
FOR rec in(
    SELECT            column 1
                ||'~'||column 2
                ||'~'||column 3 out_line
    FROM table1)LOOP
UTL_FILE.PUT_LINE(file_handle,rec.out_line);
UTL_FILE.FFLUSH(file_handle);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
END;
end;

Error report:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 7
29283. 00000 -  "invalid file operation"
*Cause:    An attempt was made to read from a file or directory that does
           not exist, or file or directory access was denied by the
           operating system.
*Action:   Verify file and directory access privileges on the file system,
           and if reading, verify that the file exists.

Oracle directory 'SEND' points to some UNIX directory which has rights as 
       'rwxrwsr-x' (Octal 2775)
Oracle Version:11g

この問題を解決するのを手伝ってください。

この質問を解決するために私からのより多くのデータが必要な場合は、私に知らせてください。

4

5 に答える 5

7

そのため、@Vivek は、実際の回答ではなく、コメント内の対話を通じて問題を解決しました。

「ファイルはユーザーによって作成されていoracleます。開発データベースでこれに気づきました。ファイルを作成しようとしたディレクトリに書き込みアクセス権がなくothers、ユーザーoracleothersカテゴリに分類されるため、このエラーが発生します。」

SO は Q&A サイトであり、フォーラムではないと誰が言いますか? ええと、私、とりわけ。とにかく、この質問に対する受け入れられた回答がない場合、トピックに関する私の回答へのリンクを提供しますUTL_FILE.FOPEN()ここで見つけてください

PS私はこの回答をCommunity Wikiにマークしています。これは、この質問に対する適切な回答ではなく、別の場所へのリダイレクトに過ぎないためです。

于 2011-05-16T13:49:45.133 に答える