Data Pump 提供不同的导出模式来卸载数据库的不同部分。通过在命令行输入的适当参数,来指定模式。下面是可用的导出模式:
Full Export 模式
Schema 模式
Table 模式
Tablespace 模式
Transportable Tablespace 模式
Oracle 11g Release 1 (11.1) Data Pump 导入模式
备注:
很多系统模式不能被导出,因为它们没有用户模式,包括 Oracle 可管理的数据和元数据。例如,不能导出 SYS、ORDSYS 和 MDSYS 系统模式。
Full Export 模式使用 FULL 参数指定“完全导出”。一个完全导出会卸载整个数据库。该模式需要你具有 EXP_FULL_DATABASE 角色。
示例1:本例演示 FULL 参数。转储文件 expfull.dmp 被写入导出目录 dpump_dir2。
expdp hr DIRECTORY=dpump_dir2 DUMPFILE=expfull.dmp FULL=y NOLOGFILE=y
Schema 模式
使用 SCHEMAS 参数指定“模式导出”。这是默认的导出模式。如果你具有 EXP_FULL_DATABASE 角色,那么,你可以指定一个模式列表,包括它们的模式定义,以及系统权限授予的那些模式。如果你没有 EXP_FULL_DATABASE 角色,那么,你只能导出你自己的模式。
不能导出 SYS 模式。也就是说,SYS 模式不能作为导出作业的源模式。
除非在要导出的模式列表中指定引用的模式,否则,不能导出跨模式引用。例如,不能导出一个定义在一个指定模式内的表,但没有显示指定位于哪个模式的触发器。对于在指定模式依赖中的表,外部类型定义也是如此。在这种情况下,期望类型定义在导入时已经在目标数据库实例存在。
示例2:本例演示 SCHEMAS 参数。假设已经授予 hr 用户 EXP_FULL_DATABASE 角色,可以访问更多模式。
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe
Table 模式
使用 TABLES 参数指定“表模式”导出。在该模式下,只能卸载表、分区和它们依赖对象的集合。
如果你同时指定 TABLES 参数和 TRANSPORTABLE=ALWAYS 参数,那么只卸载对象的元数据。若要移动实际的数据,你把数据文件复制到目标数据库。这样导出很快。如果你是在版本或平台之间移动数据文件,那么数据文件可能需要由 Oracle Recovery Manager (RMAN) 处理。
你必须有 EXP_FULL_DATABASE 角色来指定不在你自己模式中的表。所有规定的表必须位于一个单独的模式。注意,在“表模式”,不能导出列的类型定义。因此,,类型定义在导出时已经存在在目标数据库实例。另外,与“模式导出”一样,不能导出跨模式引用。
示例3:本例演示使用 TABLES 参数导出 hr 模式下的三个表:employees、jobs 和 departments。因为,这三个表就是 hr 模式下的,所以,表名前的模式名可以省略。
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmpTABLES=employees,jobs,departments
示例4:假设 hr 用户具有 EXP_FULL_DATABASE 角色,使用 TABLES 参数导出分区。本例演示从 sh 模式导出分区 sales_Q1_2000 和 sales_Q2_2000。
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=tables_part.dmpTABLES=sh.sales:sales_Q1_2000,sh.sales:sales_Q2_2000
示例5:假设 sh 模式具有 EXP_FULL_DATABASE 权限,表 sales2 被分区,并包含在表空间 tbs2 中。(必须在源数据库设置表空间 tbs2 为只读。)
expdp sh DIRECTORY=dpump_dir1 DUMPFILE=tto1.dmpTABLES=sh.sales2 TRANSPORTABLE=always
导出成功后,必须复制数据文件到目标数据库。然后,使用 PARTITION_OPTIONS 和 REMAP_SCHEMA 参数执行导入。
impdp system PARTITION_OPTIONS=departition TRANSPORT_DATAFILES=oracle/dbs/tbs2 DIRECTORY=dpump_dir1 DUMPFILE=tto1.dmp REMAP_SCHEMA=sh:dp
Tablespace 模式
使用 TABLESPACES 参数指定“表空间模式”。在该模式下,只能卸载包含在一个指定表空间集中的表。如果一个表被卸载,那么它依赖的对象也会被卸载。对象元数据和数据都会被卸载。在表空间模式下,如果一个表的任何部分位于指定的集合,那么该表和它所有依赖的对象会被导出。已授权的用户获得所有的表。未授权的用户只能得到它们自己模式的表。
示例6:本例演示 TABLESPACES 参数。假设表空间 tbs_4、tbs_5 和 tbs_6 已经存在。
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=tbs.dmp TABLESPACES=tbs_4, tbs_5, tbs_6
Transportable Tablespace 模式
使用 TRANSPORT_TABLESPACES 参数指定“transportable tablespace 模式”导出。在该模式下,只导出一个指定表空间集中表的元数据和它们依赖的对象。单独复制表空间数据文件。然后,,导入包含元数据的转储文件,并指定使用的数据文件。
该模式模式要求指定的表是完全“自足的”。也就是说,定义在表空间中的所有表的所有存储段和它们的索引必须包含在集合内。如果违反“自足性”,那么导出会识别所有的问题,就不能完成导出。
该模式导出一旦停止,就不能重启。另外,它们不能具有大于 1 的并行程度。
该模式不支持加密列。
备注:
不能导出 transportable tablespaces,然后再把它们导入到一个低版本的数据库。目标数据库必须与源数据库的版本相同或高。
示例7:本例演示 TRANSPORT_TABLESPACES 参数。表空间 tbs_1 是要移动的表空间。假设表空间 tbs_1 已经存在,并且已设置为只读。
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=tts.dmpTRANSPORT_TABLESPACES=tbs_1 TRANSPORT_FULL_CHECK=y LOGFILE=tts.log
Oracle 11g Release 1 (11.1) Data Pump 导入模式