我看到的大部分答案都是针对Linux的。 Windows 权限具有黑魔法的元素。这是 Windows Server 2016。
我在 Oracle 数据库服务器上创建了
d:\data\transfer\sirius\
目录。
作为
SYSDBA
我执行以下操作:
create or replace directory SIRIUS_DIR as 'd:\data\transfer\sirius\';
grant read,write on directory SIRIUS_DIR to SIRIUS;
然后在另一台服务器上,以
SIRIUS
用户身份在 SQL*Plus 会话中运行:
DECLARE myFile utl_file.file_type;
BEGIN
myFile := utl_file.fopen('SIRIUS_DIR ', 'random.txt', 'w', 32000);
END;
/
这给出了:
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at line 3
如何进行?
想通了。您需要授予ORA_INSTALL组对数据库上相关目录的完全访问权限。根据Oracle配置文档:
ORA_INSTALL 组包含所有 Oracle 主用户 Oracle 驻留在服务器上。
感谢这位好心的博主提供的解决方案。
ORA_INSTALL 可能在 Windows 上工作,但在 Linux (Oracle linux 8.9) 上我必须将目录更改为 oracle:oinstall。 (或 chmod 777)
我知道这个问题是针对 Windows 的,但我在 google 上搜索了 Linux,Google 把我带到了这里