带有dba目录的Oracle外部表

带有dba目录的Oracle外部表,oracle,oracle10g,external-tables,Oracle,Oracle10g,External Tables,我想创建一个外部表,但没有“创建任何目录”权限,无法授予该权限。公平地说,我要求DBA运行以下程序: CREATE OR REPLACE DIRECTORY ext_data_files AS '/data/ext_data_files'; GRANT ALL ON DIRECTORY ext_data_files TO MYAPPUSER; 确实如此,最终的对象具有以下脚本: CREATE OR REPLACE DIRECTORY EXT_DATA_FILES AS '/data/ext

我想创建一个外部表,但没有“创建任何目录”权限,无法授予该权限。公平地说,我要求DBA运行以下程序:

CREATE OR REPLACE DIRECTORY ext_data_files AS '/data/ext_data_files';
GRANT ALL ON DIRECTORY ext_data_files TO MYAPPUSER;
确实如此,最终的对象具有以下脚本:

CREATE OR REPLACE DIRECTORY 
EXT_DATA_FILES AS 
'/data/ext_data_files';
GRANT READ, WRITE ON DIRECTORY SYS.EXT_DATA_FILES TO MYAPPUSER;
我是从和蟾蜍的谈话中得到的

然后,我希望使用此目录创建具有以下脚本的外部表:

CREATE TABLE MYAPPUSER.MY_EXT_TABLE
(
  ID                VARCHAR2(100 BYTE),
  LOGIN             VARCHAR2(100 BYTE),
  CODE              VARCHAR2(100 BYTE),
  CREATED_AT        VARCHAR2(100 BYTE)
)
ORGANIZATION EXTERNAL
  (  TYPE ORACLE_LOADER
     DEFAULT DIRECTORY SYS.EXT_DATA_FILES
     ACCESS PARAMETERS 
       ( RECORDS DELIMITED BY NEWLINE
    NOBADFILE
    NOLOGFILE
    FIELDS TERMINATED BY ';'
    MISSING FIELD VALUES ARE NULL
    ( ID, LOGIN, CODE, CREATED_AT) )
     LOCATION (SYS.EXT_DATA_FILES:'the_external_file.txt')
  )
REJECT LIMIT 0
PARALLEL ( DEGREE DEFAULT INSTANCES DEFAULT )
NOMONITORING;
但当我从我的EXT表中选择*时,结果是臭名昭著的

ORA-29913:执行ODCIEXTTABLEOPEN调用时出错 ORA-29400:数据盒带错误 KUP-04040:未找到EXT_数据_文件中的_external_file.txt文件 ORA-06512:位于SYS.ORACLE_加载器,第19行

它在谷歌上有相当多的点击率,但似乎没有一个是相关的

我对语法很有信心,因为这与我们的开发环境中使用的脚本完全相同。此外,还检查了所有涉及的文件和目录的权限,没有比775更低的权限

这里我与它工作的DEV的唯一区别在于,目录EXT_DATA_文件不是由MYAPPUSER创建的。我试图为它创造一个同义词。。但没有效果

也许值得一提的是,我们谈论的是Oracle 10g


我错过了什么明显的东西吗?允许这样做吗?

所有目录实际上都归SYS所有。这就是为什么没有创建目录权限,只创建任何目录


因此,请在不使用SYS模式作为目录名前缀的情况下尝试该命令,然后查看发生了什么。

所有目录实际上都归SYS所有。这就是为什么没有创建目录权限,只创建任何目录

因此,请在不使用SYS架构作为目录名前缀的情况下尝试该命令,然后查看发生了什么情况。

错误消息如下: 未找到EXT_数据_文件中的_external_file.txt文件

您确定它在那里吗?

错误消息如下: 未找到EXT_数据_文件中的_external_file.txt文件


你确定它在那儿吗?

1。为什么在系统中?DBA不能在正确的模式中创建它吗?2.您的文件是否确实存在于目录中?txt文件是否确实存在?嗯,这个目录应该由多个架构使用。。我认为在SYS中或者在所有用户共同的地方是有意义的。至于文件,是的,它是存在的,正如我提到的,所有涉及的文件和目录的权限都已检查:/@本:目录没有模式,从11gR2Bahh开始它们都属于SYS。我真丢脸。找到了。所有的文件和权限都在那里,一个小问题是。他们移动了整个该死的数据库,并没有在迁移后重新安装一些使用较少的FSs,正如墨菲预测的那样,我选择了其中一个作为我的外部表。从我的应用程序来看,POV很好,但Oracle没有可查询的FS。对不起,打扰你们了。为什么在系统中?DBA不能在正确的模式中创建它吗?2.您的文件是否确实存在于目录中?txt文件是否确实存在?嗯,这个目录应该由多个架构使用。。我认为在SYS中或者在所有用户共同的地方是有意义的。至于文件,是的,它是存在的,正如我提到的,所有涉及的文件和目录的权限都已检查:/@本:目录没有模式,从11gR2Bahh开始它们都属于SYS。我真丢脸。找到了。所有的文件和权限都在那里,一个小问题是。他们移动了整个该死的数据库,并没有在迁移后重新安装一些使用较少的FSs,正如墨菲预测的那样,我选择了其中一个作为我的外部表。从我的应用程序来看,POV很好,但Oracle没有可查询的FS。很抱歉用这个来打扰你们,同样的结果没有系统。。实际上是原稿。我添加了SYS以使其在问题中明确。很高兴知道这一点。错误应该在别处。刚刚发现了一些有趣的东西:在我的开发环境中。如果我描述EXT_DATA_文件,它会显示对象的描述。现在,在prod env中。如果我使用相同的desc EXT_DATA_文件,它将不起作用,但是如果我添加SYS,它将显示描述。例如,desc SYS.EXT_DATA_文件。这会是一个线索吗@VincentMalgrat这对你也有意义吗?谢谢没有SYS.时的结果相同。。实际上是原稿。我添加了SYS以使其在问题中明确。很高兴知道这一点。错误应该在别处。刚刚发现了一些有趣的东西:在我的开发环境中。如果我描述EXT_DATA_文件,它会显示对象的描述。现在,在prod env中。如果我使用相同的desc EXT_DATA_文件,它将不起作用,但是如果我添加SYS,它将显示描述。例如,desc SYS.EXT_DATA_文件。这会是一个线索吗@VincentMalgrat这对你也有意义吗?谢谢