gpt4 book ai didi

oracle - 从外部表 : ORA-29913: error in executing ODCIEXTTABLEOPEN callout 中选择时出现 sqlplus 错误

转载 作者:行者123 更新时间:2023-12-04 12:42:43 25 4
gpt4 key购买 nike

我已经设置了一个简单的 Oracle 外部表测试,我(与 DBA 和 Unix 管理员一起)无法开始工作。

以下内容基于Oracle的External Tables Concepts .我们使用的数据库是 11g。

这是外部表定义:

drop table emp_load;

CREATE TABLE emp_load
(employee_number CHAR(5),
employee_dob DATE,
employee_last_name CHAR(20),
employee_first_name CHAR(15),
employee_middle_name CHAR(15),
employee_hire_date DATE)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY defaultdir
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
FIELDS (employee_number CHAR(2),
employee_dob CHAR(20),
employee_last_name CHAR(18),
employee_first_name CHAR(11),
employee_middle_name CHAR(11),
employee_hire_date CHAR(10) date_format DATE mask "mm/dd/yyyy"
)
)
LOCATION ('external_table_test.dat')
);

这是“external_table_test.dat”的内容:
56november, 15, 1980  baker             mary       alice      09/01/2004
87december, 20, 1970 roper lisa marie 01/01/1999

我能够毫无问题地运行创建“emp_load”的脚本。我也可以很好地描述表格。当我尝试“select * from emp_load”时,出现以下错误:
SQL> select * from emp_load;
select * from emp_load
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
error opening file /defaultdir/EMP_LOAD_29305.log

编辑 1
oracle 对该目录具有读/写权限。

编辑 2
通过使用以下外部表定义,我能够通过此错误:
CREATE TABLE emp_load
(employee_number CHAR(3),
employee_last_name CHAR(20),
employee_middle_name CHAR(15),
employee_first_name CHAR(15)
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY defaultdir
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
BADFILE DHHSMAPSIS:'EMP.BAD'
LOGFILE DHHSMAPSIS:'EMP.LOG'
FIELDS TERMINATED BY ','
)
LOCATION ('external_table_test2.dat')
)
REJECT LIMIT UNLIMITED;

我的 .dat 文件看起来像这样......
056,baker,beth,mary
057,smith,teddy,john

我必须将“EMP.BAD”、“EMP.LOG”和“external_table_test2.dat”的权限设置为 777 才能使其工作。 oracle 用户不拥有这些文件,但与这些文件在同一组中。

知道为什么当我将这些文件的权限设置为 770 时无法使其工作吗?同样,oracle 与这些文件在同一组中,所以我认为 770 对权限来说是可以的...

最佳答案

我们的 Oracle 版本在 Red Hat Enterprise Linux 上运行。我们尝试了几种不同类型的组权限,但无济于事。/defaultdir 目录有一个组,它是 oracle 用户的辅助组。当我们将/defaultdir 目录更新为具有一组“oinstall”(oracle 的主要组)时,我可以毫无问题地从该目录下的外部表中进行选择。

因此,对于其他出现并可能遇到此问题的人,请使目录将 oracle 的主要组作为组,它可能会像解决我们一样为您解决问题。我们能够将目录和文件的权限设置为 770,现在在外部表上选择工作正常。

关于oracle - 从外部表 : ORA-29913: error in executing ODCIEXTTABLEOPEN callout 中选择时出现 sqlplus 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com