带有dba目录的Oracle外部表
我想创建一个外部表,但没有“创建任何目录”权限,无法授予该权限。公平地说,我要求DBA运行以下程序:带有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
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这对你也有意义吗?谢谢