【问题标题】:Oracle Schema cannot access DirectoryOracle Schema 无法访问目录
【发布时间】:2019-12-07 00:51:32
【问题描述】:

我已经尝试访问我创建的 Oracle DB 目录已有一段时间了。 我已授予要从中访问目录的架构的所有权限,但我仍然收到相同的错误:“ORA-29280:invalid directory path”。

我已经在我的服务器上多次检查了目录,它应该是一切,仔细检查,仍然得到同样的错误。

我尝试从创建文件所需的架构中执行此示例代码,以在我的目录中创建文件:

  DECLARE
  l_file utl_file.file_type;
BEGIN
  l_file := utl_file.fopen( 'DIRECTORIO_DATO_EXT', 'example_file.txt', 'W' );
  utl_file.put_line( l_file, 'Example file.' );
  utl_file.fclose( l_file );
END;

出现同样的错误。

但是当我从 SYS 用户执行与 SYSDBA 完全相同的代码时,该过程完成且没有错误,并在服务器中创建文件。

请注意,我已为要访问目录的用户添加了所有权限:

GRANT ALL ON DIRECTORY DIRECTORY_DATO_EXT TO MY_SCHEMA;
GRANT READ ON DIRECTORY DIRECTORY_DATO_EXT TO MY_SCHEMA;
GRANT WRITE ON DIRECTORY DIRECTORY_DATO_EXT TO MY_SCHEMA;
GRANT CONNECT ON DIRECTORY DIRECTORY_DATO_EXT TO MY_SCHEMA;

另外,从服务器操作系统,我已授予目录指向的文件夹的所有权限,甚至尝试将 oracle 用户添加到 root 用户组以查看是否有效,但仍然没有。

我将不胜感激。

问候。

【问题讨论】:

  • 我注意到Grants上的Directory name和procedure上的不同,写issue的时候输入错误,但是在同一个目录下还是会出现同样的错误。跨度>

标签: oracle


【解决方案1】:

好的,所以我刚刚发现了我的问题:

几天前我创建了一个 DBLink,并更新了主数据库中的所有同义词,以便我可以访问我的 DBLink。当我这样做时,我对所有同义词都做了,包括 UTL_FILE 同义词,结果是这样的:

CREATE OR REPLACE SYNONYM MY_SCHEMA.UTL_FILE FOR SYS.UTL_FILE@DBLink;

事实证明,“@DBlink”是问题所在,因为它指向特定架构(不是 sys),导致我的程序无法找到 UTL_FILE 实用程序。

希望这对将来的某人有所帮助!

【讨论】:

  • 很高兴你找到了它,因为我试图重新创建错误,但不能,而且很困惑 :)
猜你喜欢
  • 1970-01-01
  • 2016-03-25
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2011-09-02
  • 2020-06-07
  • 1970-01-01
相关资源
最近更新 更多