ORA-29283:无效的文件操作ORA-06512:在“ SYS.UTL_FILE”的第536行处
|
下面是我用来将数据从表提取到平面文件的代码。
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 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 个回复
眠缝
抬澈帅沮
咖哀烈
然后,您需要确保
驱动器中存在
,并且Oracle进程还可以使用文件系统级别的读/写权限。 下面是我根据这种经验对UTL_FILE的理解。 UTL_FILE是SYS用户下的对象。在SYS.UTL_FILE上授予执行权限 上市;需要以SYS身份登录时给出。否则,它将 在程序中给出声明错误。任何人都可以创建目录 显示:-创建或替换目录DB_DIR AS \'E:\\ DBWORKS \';但是创建 目录权限应已到位。这可以被授予 显示:-授予用户全部创建目录;以SYS身份登录 用户。但是,如果需要其他用户使用,则需要授予 给该用户,否则将引发错误。授权阅读 向用户写入,在DB_DIR上执行;以用户身份登录 创建目录。然后,编译您的软件包。执行之前 该过程中,请确保目录实际存在于您的 磁盘。否则会抛出“无效的文件操作”错误。 (V. 重要)确保具有文件系统级别的读/写权限 Oracle进程的位置。这与数据库级别分开 授予权限。(V.重要)执行过程。文件应该得到 用查询的结果集填充。
缕嚏冻
2)更改文件模式
现在,尝试它应该起作用!