数据泵导入SKIP_CONSTRAINT_ERRORS的bug(二)
2008-10-25 12:57:55 来源:WEB开发网那么Oracle是否要求索引列就是约束的检查列呢,下面将唯一索引删除,并在NAME列上添加一个唯一索引:
SQL> DROP INDEX IND_T_CONS_ID;
索引已删除。
SQL> CREATE UNIQUE INDEX IND_T_CONS_NAME ON T_CONS(NAME);
索引已创建。
SQL> DELETE T_CONS WHERE ID > 5;
已删除4行。
SQL> COMMIT;
提交完成。
SQL>HOSTimpdpyangtk/yangtkdirectory=d_outputdumpfile=t_cons.dpcontent=data_onlydata_options=skip_constraint_errors
Import:Release11.1.0.6.0-64bitProductionon星期二,1410月,20082:32:33
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.648KB4用完了17行
5 行因以下错误而被拒绝:
ORA-00001: 违反唯一约束条件 (YANGTK.IND_T_CONS_NAME)
8 行因以下错误而被拒绝:
ORA-02290: 违反检查约束条件 (YANGTK.CK_T_CONS_ID)
作业 "YANGTK"."SYS_IMPORT_FULL_01" 已于 02:32:38 成功完成
看来Oracle只是需要一个唯一索引来启动这个功能,与这个唯一索引是否在约束列上没有关系。
这样的话,这个功能对于表的限制并不算太多,因为毕竟大部分表都包含主键或唯一键,也就是说绝大部分表都会包含唯一索引。
不管怎么说,这个bug仍然存在,Oracle如果就是这样实现的,那么至少应该在文档中说明一下。
更多精彩
赞助商链接