在 Oracle 上向 all_directories 添加新目录失败?
Adding new directory to all_directories on oracle fails?
我正在尝试向 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 用户呢? OS 用户还需要在操作系统级别对目录具有 r/w 权限,否则将无法创建文件并导致此错误。要检查,请以 Oracle 用户(或任何用于创建数据库的用户)身份连接到数据库服务器,导航到该 \kcdkfile03\UserData\Bruger\KBU\temp
目录,并尝试创建一个文件。
这是一篇可能有用的相关 AskTom 文章:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9538408200346950265
我正在尝试向 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 用户呢? OS 用户还需要在操作系统级别对目录具有 r/w 权限,否则将无法创建文件并导致此错误。要检查,请以 Oracle 用户(或任何用于创建数据库的用户)身份连接到数据库服务器,导航到该 \kcdkfile03\UserData\Bruger\KBU\temp
目录,并尝试创建一个文件。
这是一篇可能有用的相关 AskTom 文章:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:9538408200346950265