我已经在Oracle 11g中创建了一个外部表。
它抛出有时找不到文件的错误。该文件位于oracle外部表目录中,并具有对该文件夹/文件提供的所有权限。
奇怪的是,错误不会每次都出现。大多数情况下,外部表上的select起作用。但是有时会弹出此错误。这取决于Oracle的心情。 :P
已经完成:
错误:
ORA-29913:执行ODCIEXTTABLEOPEN标注时出错
ORA-29400:数据盒带错误
KUP-04040:找不到XFB_EXT_TAB_DATA中的文件DIM_OWNING_CENTER_FEED.dat
表脚本:
CREATE TABLE SCHEMA_NAME.DIM_OWNING_CENTER_EXT
(
S_OWNING_CENTER_ID VARCHAR2 (50),
OWNING_CENTER VARCHAR2 (52),
ED_START_DATE DATE
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY XFB_EXT_TAB_DATA
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
SKIP 2
LOAD WHEN (
S_OWNING_CENTER_ID != 'FILETRAILER'
)
FIELDS TERMINATED BY '|^'
MISSING FIELD VALUES ARE NULL (
S_OWNING_CENTER_ID CHAR (50),
OWNING_CENTER CHAR (52),
ED_START_DATE DATE 'DD-MON-YYYY HH24:MI:SS'
)
)
LOCATION ('DIM_OWNING_CENTER_FEED.dat')
)
PARALLEL 8 REJECT LIMIT UNLIMITED;
答案 0 :(得分:1)
这取决于甲骨文的心情。
否,这取决于您碰巧要连接到哪个实例,以及运行该实例的节点上是否存在DIM_OWNING_CENTER_FEED.dat
文件。如果仅在节点之一上创建它,则它有时会工作,有时会出错。您可以通过查询v$instance
来检查您所在的实例,无论它何时可用,何时不可用。
由于某种原因,如果您只想在一个节点上维护文件(并处理日志等),则必须修改脚本以连接到该特定实例。但是,如果该实例由于某种原因(例如修补或其他原因)而关闭,则无论如何都会失败。当然,这就是RAC的重点。
一种替代方法是使两个节点都呈现相同的物理文件,例如,通过在两个节点上将XFB_EXT_TAB_DATA
目录对象指向的相同NFS挂载相同的实际文件系统/路径。或者,您可以使用预处理程序脚本在运行时从某个共享位置复制文件,但这有其自身的复杂性。