我使用EXPDP
进程创建了一个转储文件。
我正在尝试使用上述转储文件创建一个外部表。
我正在使用以下语句创建外部表:
CREATE TABLE HR.DATA_LOAD
(
"EMP_NO" NUMBER(10,0) NOT NULL ENABLE,
"EMP_NAME" VARCHAR2(20 BYTE),
"DEPT_ID" NUMBER(10,0),
"DEPT_NM" VARCHAR2(20 BYTE),
"DOJ" VARCHAR2(20 BYTE),
"LOCATION" VARCHAR2(20 BYTE),
"PHN_NUM" NUMBER(20,0),
"EMAIL" VARCHAR2(20 BYTE),
"COL1" VARCHAR2(20 BYTE),
"COL2" VARCHAR2(20 BYTE)
)
ORGANIZATIONAL EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY DATA_PUMP_DIR
LOCATION ('exp_dumpfile.dmp')
);
执行上述语句后,表已创建,但是当我发出SELECT
语句查看数据时,出现以下错误:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout ORA-39324: cannot load data from Data Pump dump file
我是在做错什么,还是可以使用 Datapump 方法生成的转储文件来创建外部表?
ORA-39324
如果您在Oracle 文档中查找错误描述,您将看到:创建的转储
EXPDP
只能由IMPDP
(或dbms_datapump
)读取。而使用可写外部表(使用数据泵驱动程序)创建的转储只能使用外部表接口(使用数据泵驱动程序)重新读取。Expdp
不仅仅是转储数据(这是使用数据泵驱动程序的可写外部表所做的唯一事情)。社区 Wiki 答案最初基于BriteSponge和Raj的评论