尝试在Oracle中读取文件时无效的文件操作异常

时间:2019-08-26 09:34:02

标签: oracle plsql

我需要将文件读取到oracle中的变量。

我已经创建了具有读写权限的目录对象。 Oracle在Windows上运行。

CREATE DIRECTORY AUTHC AS 'C:\Users\oracle\Documents\authscript';
GRANT READ ON DIRECTORY AUTHC TO PUBLIC;
GRANT WRITE ON DIRECTORY AUTHC TO PUBLIC;
DECLARE
 vInHandle utl_file.file_type;
 vNewLine  VARCHAR2(250);
BEGIN
  vInHandle := utl_file.fopen('AUTHC', 'common.auth.script', 'R');

  utl_file.fclose(vInHandle);
END fopen;

但是,出现异常提示“无效的文件操作” *原因:试图从一个文件或目录中读取            不存在,或者文件或目录访问被拒绝            操作系统。

我不是oracle用户。有什么办法可以找到oracle用户并检查权限

2 个答案:

答案 0 :(得分:0)

要找到oracle用户,请打开任务管理器并检查进程“ oracle.exe”的“用户名”。

答案 1 :(得分:0)

如果提到的文件已经存在,并且您想摆脱非Oracle用户的身份,那么请从sys用户和grant read, writeyour user创建目录。

--login as sys user(owner of Oracle) as sysdba
CREATE DIRECTORY AUTHC AS 'C:\Users\oracle\Documents\authscript';
GRANT READ ON DIRECTORY AUTHC TO your_user; -- replace your_user with user name of the user you are using
GRANT WRITE ON DIRECTORY AUTHC TO your_user; -- replace your_user with user name of the user you are using
-- note: grant to the directory should be given to the user and not the role


--Login with your_user
DECLARE
 vInHandle utl_file.file_type;
 vNewLine  VARCHAR2(250);
BEGIN
  vInHandle := utl_file.fopen('AUTHC', 'common.auth.script', 'R');

  utl_file.fclose(vInHandle);
END fopen;

干杯!