Oracle的导入导出工具EXP/IMP由来已久,大部分人对于使用这两个工具也都不陌生。Oracle10g开始推出的数据泵EXPDP/IMPDP,提供了导入导出的性能,也增加了导入导出的功能,但是由于使用时间不长,可能部分人对这个工具不太了解。一直打算写几篇文章,简单描述一下EXP/IMP和EXPDP/IMPDP的差异。
对比数据泵与原始导入导出工具(一):http://yangtingkun.itpub.net/post/468/476017
对比数据泵与原始导入导出工具(二):http://yangtingkun.itpub.net/post/468/476060
对比数据泵与原始导入导出工具(三):http://yangtingkun.itpub.net/post/468/477335
对比数据泵与原始导入导出工具(四):http://yangtingkun.itpub.net/post/468/477380
这篇描述数据泵的EXCLUDE参数。
上一篇文章中已经提到了,数据泵作为逻辑备份工具已经可以导入、导出任意的对象,比如视图、同义词、过程、序列等等。数据泵通过INCLUDE参数,不但可以指定任意类型的对象,还可以通过名称或通配符进行匹配。
通过INCLUDE参数已经实现了EXP/IMP所能完成的功能,而且还提供了模糊匹配。而数据泵还提供了一个EXCLUDE参数,用户可以指定不导入导出某种类型的对象或者不导入导出名称匹配的对象。而这是EXP/IMP中一直无法实现的功能。
E:\>expdp yangtk/yangtk directory=d_output dumpfile=exc_tables.dp exclude=table
Export: Release 10.2.0.1.0 - Production on 星期四, 29 1月, 2009 20:19:44
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "YANGTK"."SYS_EXPORT_SCHEMA_02": yangtk/******** directory=d_output dumpfi
le=exc_tables.dp exclude=table
正在使用 BLOCKS 方法进行估计...
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 0 KB
处理对象类型 SCHEMA_EXPORT/USER
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TYPE/TYPE_SPEC
处理对象类型 SCHEMA_EXPORT/DB_LINK
处理对象类型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
处理对象类型 SCHEMA_EXPORT/CLUSTER/CLUSTER
处理对象类型 SCHEMA_EXPORT/CLUSTER/INDEX
处理对象类型 SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
处理对象类型 SCHEMA_EXPORT/FUNCTION/FUNCTION
处理对象类型 SCHEMA_EXPORT/PROCEDURE/PROCEDURE
处理对象类型 SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
处理对象类型 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
处理对象类型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
处理对象类型 SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
处理对象类型 SCHEMA_EXPORT/TYPE/TYPE_BODY
处理对象类型 SCHEMA_EXPORT/JAVA_SOURCE/JAVA_SOURCE
处理对象类型 SCHEMA_EXPORT/JAVA_CLASS/JAVA_CLASS
处理对象类型 SCHEMA_EXPORT/MATERIALIZED_VIEW
已成功加载/卸载了主表 "YANGTK"."SYS_EXPORT_SCHEMA_02"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_02 的转储文件集为:
E:\DMP\EXC_TABLES.DP
作业 "YANGTK"."SYS_EXPORT_SCHEMA_02" 已于 20:20:07 成功完成
上面这个例子就没有导出表类型,而其他和表没有依赖关系的类型全部导出。依赖于表存在的对象,比如索引、触发器、约束、对象授权等也自动被过滤。
E:\>expdp yangtk/yangtk directory=d_output dumpfile=exc_t.dp exclude=table:"""LIKE 'T%'"""
Export: Release 10.2.0.1.0 - Production on 星期四, 29 1月, 2009 20:26:43
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
启动 "YANGTK"."SYS_EXPORT_SCHEMA_02": yangtk/******** directory=d_output dumpfile=exc_t.dp exclude=table:"LIKE 'T%'"
正在使用 BLOCKS 方法进行估计...
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 640 KB
处理对象类型 SCHEMA_EXPORT/USER
处理对象类型 SCHEMA_EXPORT/SYSTEM_GRANT
处理对象类型 SCHEMA_EXPORT/ROLE_GRANT
处理对象类型 SCHEMA_EXPORT/DEFAULT_ROLE
处理对象类型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
处理对象类型 SCHEMA_EXPORT/TYPE/TYPE_SPEC
处理对象类型 SCHEMA_EXPORT/DB_LINK
处理对象类型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
处理对象类型 SCHEMA_EXPORT/CLUSTER/CLUSTER
处理对象类型 SCHEMA_EXPORT/CLUSTER/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
处理对象类型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 SCHEMA_EXPORT/TABLE/COMMENT
处理对象类型 SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
处理对象类型 SCHEMA_EXPORT/FUNCTION/FUNCTION
处理对象类型 SCHEMA_EXPORT/PROCEDURE/PROCEDURE
处理对象类型 SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
处理对象类型 SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION
处理对象类型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
处理对象类型 SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
处理对象类型 SCHEMA_EXPORT/TYPE/TYPE_BODY
处理对象类型 SCHEMA_EXPORT/JAVA_SOURCE/JAVA_SOURCE
处理对象类型 SCHEMA_EXPORT/JAVA_CLASS/JAVA_CLASS
处理对象类型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
处理对象类型 SCHEMA_EXPORT/TABLE/POST_TABLE_ACTION
处理对象类型 SCHEMA_EXPORT/MATERIALIZED_VIEW
处理对象类型 SCHEMA_EXPORT/TABLE/MATERIALIZED_VIEW_LOG
. . 导出了 "YANGTK"."SYS_EXPORT_SCHEMA_01" 227.9 KB 1169 行
. . 导出了 "YANGTK"."CHAINED_ROWS" 81.25 KB 2118 行
. . 导出了 "YANGTK"."MV_T" 5.601 KB 23 行
. . 导出了 "YANGTK"."MV_T_NUM" 5.273 KB 1 行
. . 导出了 "YANGTK"."MLOG$_MV_T" 0 KB 0 行
已成功加载/卸载了主表 "YANGTK"."SYS_EXPORT_SCHEMA_02"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_02 的转储文件集为:
E:\DMP\EXC_T.DP
作业 "YANGTK"."SYS_EXPORT_SCHEMA_02" 已于 20:27:06 成功完成
同样对EXCLUDE也可以指定模糊匹配,所有被匹配的对象将不会导出或导入。
需要注意一点,EXCLUDE和INCLUDE不能同时使用,否则会报错:
E:\>expdp yangtk/yangtk directory=d_output dumpfile=test.dp include=table exclude=table:"""LIKE 'T%'"""
Export: Release 10.2.0.1.0 - Production on 星期四, 29 1月, 2009 21:16:58
Copyright (c) 2003, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
UDE-00011: 参数 include 与参数 exclude 不兼容
感觉数据泵还可以再改进一下,比如可以像流的RULE机制,给其中一个参数指定优先级,使得用户可以同时指定INCLUDE和EXCLUDE参数。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-544755/ ,如需转载,请注明出处,否则将追究法律责任。