sql - 在 oracle 上向 all_directories 添加新目录失败?
问题描述
我正在尝试向 all_directories 添加一个新目录。我认为第一部分进展顺利,但是当我尝试在该目录中创建文件时,我得到:
ORA-29283: 无效的文件操作
这是我的代码:
DECLARE
fHandle UTL_FILE.FILE_TYPE;
BEGIN
fHandle := UTL_FILE.FOPEN('TEMPKBU', 'test.txt', 'w');
UTL_FILE.FCLOSE(fHandle);
END;
目录是在这里创建的:
SELECT * FROM all_directories WHERE directory_name = 'TEMPKBU'
OWNER DIRECTORY_NAME DIRECTORY_PATH ORIGIN_CON_ID
SYS TEMPKBU \\kcdkfile03\UserData\Bruger\KBU\temp 0
并且用户有写权限:
SELECT * FROM all_tab_privs WHERE table_name = 'TEMPKBU'
GRANTOR GRANTEE TABLE_SCHEMA TABLE_NAME PRIVILEGE GRANTABLE HIERARCHY COMMON TYPE
SYS KC_PROD SYS TEMPKBU EXECUTE YES NO NO DIRECTORY
SYS KC_PROD SYS TEMPKBU READ YES NO NO DIRECTORY
SYS KC_PROD SYS TEMPKBU WRITE YES NO NO DIRECTORY
KC_PROD PUBLIC SYS TEMPKBU READ NO NO NO DIRECTORY
KC_PROD PUBLIC SYS TEMPKBU WRITE NO NO NO DIRECTORY
那么为什么这不起作用呢?以及如何获得更详细的错误消息?
BR克雷斯顿
解决方案
如果您尝试以下操作,通常会发生该错误: 1. 写入不存在的目录,或 2. 写入未授予足够权限的目录。
虽然您已通过数据库授予写入权限,但 OS Oracle 用户呢?操作系统用户还需要在操作系统级别对目录具有读/写权限,否则将无法创建文件并导致此错误。要进行检查,请以 Oracle 用户(或用于创建数据库的任何用户)身份连接到数据库服务器,导航到该\\kcdkfile03\UserData\Bruger\KBU\temp
目录,然后尝试创建一个文件。
这是一篇可能有帮助的相关 AskTom 文章:https ://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9538408200346950265
推荐阅读
- read-write - 在读/写操作期间文件的当前位置保存在哪里?
- video-streaming - 如何从电子流式传输视频?
- vba - 我究竟做错了什么?使用 Excel VBA 删除重复项
- java - 如何在 JSP 中获取类公共字符串?
- kotlin - Kotlin - 如何从字符串日期获取时间(“HH:mm”)
- javascript - 如何使用 javascript 检测移动设备屏幕已关闭
- c# - C#/Xamarin:无法访问覆盖 UIPickerViewModel 类参数
- javascript - 满足 componentWillReceiveProps 中未同时设置的多个条件
- python - 从 python 传递到 C++ 的数组中未映射的内存访问
- swift - Swift - 使用 segue 删除顶部导航栏