数据泵导入SKIP_CONSTRAINT_ERRORS的bug(一)
2008-10-25 12:57:52 来源:WEB开发网列 ID: 15
拒绝的行 #7:
列 ID: 16
拒绝的行 #8:
列 ID: 17作业 "YANGTK"."SYS_IMPORT_FULL_01" 已于 01:38:09 成功完成
看来问题与索引是否是Oracle自动生成的没有关系,而与索引类型是唯一索引还是非唯一索引有关。
下面创建只创建一个唯一索引,不在添加主键:
SQL> ALTER TABLE T_CONS DROP PRIMARY KEY;
表已更改。
SQL> SELECT INDEX_NAME, UNIQUENESS FROM USER_INDEXES WHERE TABLE_NAME = 'T_CONS';
INDEX_NAME UNIQUENESS
------------------------------------------------------------ ------------------
IND_T_CONS_ID UNIQUE
SQL> DELETE T_CONS WHERE ID < 10;
已删除9行。
SQL> COMMIT;
提交完成。
以下是引用片段:
SQL>HOSTimpdpyangtk/yangtkdirectory=d_outputdumpfile=t_cons.dpcontent=data_onlydata_options=skip_constraint_errors
Import:Release11.1.0.6.0-64bitProductionon星期二,1410月,20081:53:15
Copyright(c)2003,2007,Oracle.Allrightsreserved.
连接到:OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions已成功加载/卸载了主表"YANGTK"."SYS_IMPORT_FULL_01"启动"YANGTK"."SYS_IMPORT_FULL_01":yangtk/********directory=d_outputdumpfile=t_cons.dpcontent=data_onlydata_options=skip_constraint_errors处理对象类型TABLE_EXPORT/TABLE/TABLE_DATA
..导入的"YANGTK"."T_CONS"5.648KB9用完了17行
8行因以下错误而被拒绝:
ORA-00001: 违反唯一约束条件 (YANGTK.IND_T_CONS_ID)
作业 "YANGTK"."SYS_IMPORT_FULL_01" 已于 01:53:21 成功完成
虽然错误信息和有主键时不一致,但是数据是可以导出的,从这里也可以看到,Oracle在导入的时候不是看主键约束信息,而是看索引是否是唯一索引。
且不论Oracle如何实现这个功能,不过根据文档描述,可是看不到这个说明的,而且DATA_OPTIONS的参数名称为SKIP_CONSTRAINT_ERRORS也可以说明问题,这里应该是CONSTRANT,而不是INDEX。这里暂时认为是Oracle的实现上的小bug吧。
更多精彩
赞助商链接