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

使用 CREATE DIRECTORY 功能而不是 UTL_FILE_DIR 进行目录访问验证。

UTL_FILE_DIR = * 是危险的,因为它允许有权访问 utl_file 包的数据库用户以用户 oracle 的权限读取/写入数据库服务器上的文件(datafiles、init.ora、listener.ora 等)。

您是否具有写入/读取目录的正确权限。服务器上的用户 oracle 需要读/写权限。

于 2009-06-22T11:26:06.827 回答
2

具有写入要放置文件的目录的 oracle 用户访问权限吗?

编辑:如果您在 Unix 环境中,您应该以 oracle 用户身份手动登录,转到您尝试创建文件的路径并使用命令“touch”创建文件。如果不能用这种方式创建文件,你就知道问题出在操作系统的“访问权限”上,否则问题出在ORACLE。(将减少 50% 的搜索;D)

编辑 2:
如果 UTL_FILE_DIR = * 则禁用数据库权限,并且所有用户都可以访问所有文件和目录。但是我认为这仅适用于数据库级别,因此操作系统也有话要说。如果oracle用户对某个目录没有写权限,那么无论UTL_FILE_DIR怎么说,数据库的用户都不能获得这个权限。

于 2009-06-22T11:05:14.043 回答
0

检查目录路径是否正确,并且您设置了正确的权限(即操作系统允许 Oracle 写入该位置)。

于 2009-06-22T11:07:11.637 回答