暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

为写访问设置Oracle目录的要求

ASKTOM 2021-01-13
306

问题描述

我们设置了几个现有的Oracle目录,以允许读取工作正常的CSV文件,其中几个目录可以正常编写新文件。我一直在尝试添加指向不同路径的新目录定义,并且无法使其正常工作。我在一个公司环境中,我无法访问系统帐户,也看不到实例启动文件,也无法直接访问Linux操作系统,所以我不知道以前的目录做了什么设置。

用于读取和写入的现有目录之一定义为:

CREATE OR REPLACE DIRECTORY RED AS '/red/dev';
复制


对于上述目录,以下测试代码可以正常创建输出文件:

DECLARE
  v_file  UTL_FILE.FILE_TYPE;
BEGIN
  v_file := UTL_FILE.FOPEN(location     => 'RED',
                           filename     => 'test.csv',
                           open_mode    => 'w',
                           max_linesize => 32767);
  UTL_FILE.PUT_LINE(v_file, 'A,123');
  UTL_FILE.FCLOSE(v_file);
END;
复制

我想将一些文件写入上述路径下的子目录,并且发现出于安全原因,Oracle将仅允许写入named-Oracle目录。我要创建的新目录定义为:

CREATE OR REPLACE DIRECTORY RED_OUTPUT AS '/red/dev/OUTPUT';
复制


但是将上面的代码更改为使用RED_OUTPUT作为 “位置” 或目录,结果是 “ORA-29283: 无效的文件操作: 无法打开文件”。
“/red/dev/OUTPUT'” 目录位置存在于外部NAS文件系统上,并且似乎具有与父 “/red/dev” 目录相同的权限 (我最好使用Windows资源管理器查看目录安全属性)。

我已经阅读了各种在线帖子,表明像Oracle实例必须在定义新的Oracle目录后重新启动,或者Oracle目录指定的每个路径都必须在Oracle Linux服务器上有一个单独的 “安装点”,但我没有轻松访问这些事情。如果我使用Windows资源管理器将一个文件复制到该位置,则RED_OUTPUT目录当前可用于读取现有文件。

无法写入此新的RED_OUTPUT目录可能会出现什么问题,并且是否需要这些其他步骤 (重新启动,安装等) 来使此工作?

专家解答

I have read various posts online indicating things like the Oracle instance must be restarted after defining a new Oracle Directory


这是错误的。

that every path specified by an Oracle Directory must have a separate "mount point" on the Oracle Linux server


这也是错误的。

最可能的原因是在操作系统级别对目录的权限,特别是如果您可以通过note write读取。如果您没有自己创建目录,请确保您的DBA已完成:

授予读取,写入目录RED_OUTPUT到 [your_user]

为了确保Oracle privs就位,但在那之后,这将是一个操作系统级别的问题。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论