问题描述
我正在尝试使用utl_file.fopen命令 (在这种情况下,将SQL Developer v4.1.5.21.78与Oracle和PL/SQL v12.2.0.1.0一起编写一个新文件,而我似乎无法动摇ORA-29823-“无效文件操作” 错误。
似乎很明显,这是一个权限问题,但我根本无法追踪它。我确保执行以下操作:
> 在All_Directories表中建立所需的目录。
> 确保Oracle用户对All_tab_Privs中的该文件夹具有写权限 (似乎默认包含读/写/执行)。
> 确保我在utl_file.fopen命令中使用了指定的目录名称。
> 确保文件夹存在于服务器操作系统中
> 确保Oracle用户帐户 (在Windows中) 在主题文件夹上具有完全权限。(以该用户身份登录时,我可以随意创建/编辑/删除文件。)
如果我理解正确,我不应该期望使用我拥有的版本来修改init.ora,但这也许是缺少的部分?如果在init.ora中不需要进行调整,那么我只是不知道在哪里可以使该命令正常工作。
守则摘录如下:
我手动运行这个来创建目录条目:
然后,在试图写出来的代码中存在:
其中strFileName只是文件的名称,我知道这是有效的,因为我将此值输出到Dbms输出就在这一行之前。
感谢您的建议/见解。
e
似乎很明显,这是一个权限问题,但我根本无法追踪它。我确保执行以下操作:
> 在All_Directories表中建立所需的目录。
> 确保Oracle用户对All_tab_Privs中的该文件夹具有写权限 (似乎默认包含读/写/执行)。
> 确保我在utl_file.fopen命令中使用了指定的目录名称。
> 确保文件夹存在于服务器操作系统中
> 确保Oracle用户帐户 (在Windows中) 在主题文件夹上具有完全权限。(以该用户身份登录时,我可以随意创建/编辑/删除文件。)
如果我理解正确,我不应该期望使用我拥有的版本来修改init.ora,但这也许是缺少的部分?如果在init.ora中不需要进行调整,那么我只是不知道在哪里可以使该命令正常工作。
守则摘录如下:
我手动运行这个来创建目录条目:
CREATE OR REPLACE DIRECTORY POLY_FILES AS 'C:\Approved_Locations\polygons';
然后,在试图写出来的代码中存在:
DECLARE
filPoly utl_file.file_type;
filPoly := utl_file.fopen('POLY_FILES', strFileName, 'w');
其中strFileName只是文件的名称,我知道这是有效的,因为我将此值输出到Dbms输出就在这一行之前。
感谢您的建议/见解。
e
专家解答
造成这种情况的一个常见原因是数据库在Windows下的运行方式。
如果进入Windows上的服务,请选中 “登录方式” 属性。通常,这不是您可能期望的用户 (取决于版本,它是本地系统或服务帐户)。
您需要确保 * 此 * 帐户具有对OS目录的访问权限。
另一个测试选项是非常非常简单,例如
-创建目录 (说) C:\ TEMP
-在操作系统级别,可以完全访问 “每个人”
-然后用最简单的形式测试 * 那个 * 目录
如果这不起作用,那就该打电话给支持人员了。但是假设确实如此,您就可以从那里开始工作,以确定true目录中出现故障的位置。
如果进入Windows上的服务,请选中 “登录方式” 属性。通常,这不是您可能期望的用户 (取决于版本,它是本地系统或服务帐户)。
您需要确保 * 此 * 帐户具有对OS目录的访问权限。
另一个测试选项是非常非常简单,例如
-创建目录 (说) C:\ TEMP
-在操作系统级别,可以完全访问 “每个人”
-然后用最简单的形式测试 * 那个 * 目录
DECLARE
filPoly utl_file.file_type;
BEGIN
filPoly := utl_file.fopen('MY_DEMO_DIR', 'test.dat', 'w');如果这不起作用,那就该打电话给支持人员了。但是假设确实如此,您就可以从那里开始工作,以确定true目录中出现故障的位置。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




