Oracle 11g新特性——数据泵

日期: 2008-10-21 作者:杨廷琨 来源:TechTarget中国 英文

11g对数据泵新增了一些功能。这篇介绍新增的选项DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS。

Oracle11g的数据泵新增了一个DATA_OPTIONS选项,目前只有一个参数SKIP_CONSTRAINT_ERRORS。利用这个参数可以在导入数据的时候,忽略掉违反约束的数据,而使得其他正常的数据顺利的导入。

看一个简单的例子:

SQL> CREATE TABLE T_CONS (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));

表已创建。

SQL> INSERT INTO T_CONS SELECT ROWNUM, TNAME FROM TAB;

已创建17行。

SQL> COMMIT;

提交完成。


SQL> HOST expdp yangtk/yangtk directory=d_output dumpfile=t_cons.dp tables=t_cons
Export: Release 11.1.0.6.0 – 64bit Production on 星期一, 13 10月, 2008 8:12:45
Copyright (c) 2003, 2007, Oracle. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options启动 “YANGTK”.”SYS_EXPORT_TABLE_01″: yangtk/******** directory=d_output dumpfile=t_cons.dp tables=t_cons 正在使用 BLOCKS 方法进行估计…处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的总估计: 192 KB处理对象类型 TABLE_EXPORT/TABLE/TABLE处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
. . 导出了 “YANGTK”.”T_CONS” 5.648 KB 17 行已成功加载/卸载了主表 “YANGTK”.”SYS_EXPORT_TABLE_01″ 
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01 的转储文件集为:
/export/home/oracle/t_cons.dp作业 “YANGTK”.”SYS_EXPORT_TABLE_01″ 已于 08:13:05 成功完成

现在创建了一个带主键的表,并插入了一些记录。然后利用expdp对这个表进行了导出操作。

SQL> DELETE T_CONS WHERE ID < 10;

已删除9行。

SQL> COMMIT;

提交完成。


SQL> HOST impdp yangtk/yangtk directory=d_output dumpfile=t_cons.dp content=data_only
Import: Release 11.1.0.6.0 – 64bit Production on 星期一, 13 10月, 2008 8:15:25
Copyright (c) 2003, 2007, Oracle. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options已成功加载/卸载了主表 “YANGTK”.”SYS_IMPORT_FULL_01″ 启动 “YANGTK”.”SYS_IMPORT_FULL_01″: yangtk/******** directory=d_output dumpfile=t_cons.dp content=data_only 处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA

ORA-31693: 表数据对象 “YANGTK”.”T_CONS” 无法加载/卸载并且被跳过, 错误如下:

ORA-00001: 违反唯一约束条件 (YANGTK.SYS_C0023309)作业 “YANGTK”.”SYS_IMPORT_FULL_01″ 已经完成, 但是有 1 个错误 (于 08:15:30 完成)

删除一些数据后,执行导入操作。由于表存在主键约束,因此导入会由于违反唯一约束而失败,这时任何数据都没有导入到表中。

而使用DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS参数,可以改变这种情况:


SQL> HOST impdp yangtk/yangtk directory=d_output dumpfile=t_cons.dp content=data_only data_options=skip_constraint_errors
Import: Release 11.1.0.6.0 – 64bit Production on 星期一, 13 10月, 2008 8:17:52
Copyright (c) 2003, 2007, Oracle. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options已成功加载/卸载了主表 “YANGTK”.”SYS_IMPORT_FULL_01″ 启动 “YANGTK”.”SYS_IMPORT_FULL_01″: yangtk/******** directory=d_output dumpfile=t_cons.dp content=data_only data_options=skip_constraint_errors 处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入的 “YANGTK”.”T_CONS” 5.648 KB 9 用完了 17 行
8 行因以下错误而被拒绝:

ORA-00001: 违反唯一约束条件 (YANGTK.SYS_C0023309)

带主键的被拒绝行是:

拒绝的行 #1:

列 ID: 10

拒绝的行 #2:

列 ID: 11

拒绝的行 #3:

列 ID: 12

拒绝的行 #4:

列 ID: 13

拒绝的行 #5:

列 ID: 14

拒绝的行 #6:

列 ID: 15

拒绝的行 #7:

列 ID: 16

拒绝的行 #8:

列 ID: 17作业 “YANGTK”.”SYS_IMPORT_FULL_01″ 已于 08:17:58 成功完成

利用11g的新特性,可以导入那些不违反约束的记录,而忽略掉那些违反约束的数据。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐