数据泵支持直接路径以及外部表的两种方式加载以及卸载行数据
可以导出:
*属于其他schema的数据库对象
*导入和导出表空间,schema的定义,系统权限,资源计划等
*可以attach、监视、控制他人的导入导出job
*重映射数据库数据文件
*重映射对于schema的操作。
以下情况下,数据泵使用外部表的方式来load数据:
1. 对于分区表,如果在load某个分区的时候,存在全局索引。
2. 对于LOB列,存在一个domain index
3. 簇族表
4. 表上存在一个活动trigger
5. 表开启了insert 精细审计
6. 表中存在 BFILE 、 opaque types的列
7. 表中referential integrity constraint(参照完整性约束)
8. 表中包含VARRAY 列,该列为embedded opaque type
9. 表中的列被加密了
10. 导入数据,导入对象的表满足(存在一个活动trigger、分区,insert 精细审计、包含referential integrity constraint,唯一性index)其中一个条件,使用外部表方式来导入
11. 开启了Supplemental logging ,表中至少包含一个LOB 列
注:如果你的主键或唯一索引是组合的(复合的),就需要为表配置supplemental log,否则就不必,也就是说,如果你的所有表的主键是单列的,那你根本就不必去理会它是什么意思,oracle stream replication的时候如果你更新了主键中的部分字段,那supplemental log的作用就是把该记录其余的组成部分的数据也传输到目标机,否则目标机就存在不确定
以下情况下,数据泵使用外部表的方式unload数据:
1. 表开启了select 模式下的精细审计
2. 表是一个队列表(queue 表)
3. 表包含一个或者多个 BFILE 、 opaque types的列
4. 表包含加密列
5. 一个需要被升级的evolved type(演进类型) 列
6. 一个为LONG or LONG RA
当表很大,并且可以使用并行sql来完成unload和load的时候,也用外部表的方式来完成。
在Data Pump Job过程中做了些什么?
Data Pump jobs使用一张master table,master process,以及work processes来完成工作。以及对process进行跟踪。
oracle会为每一个Data Pump export job,和Data Pump import job 产生一个master process,这个master process在整个job过程中起着控制作用,包括和客户端进行通信,产生并控制work processes,以及进行log 操作。
数据库会使用master table来跟踪一个job 的procee,master table是在数据库内部真实存在的,他属于执行expdp或者impdp的操作的那个用户schema。所以这个用户必须要有在表空间中有足够的quota。master table的名字和job 名是相同。所以在使用expdp impdp的时候,job_name选项的值不能和已经在数据库中存在的表或者视图相同。
数据库都会创建一个master table来记录了某数据库对象的位置,export在导出job期间创建并维护这个master table,并在job完成之后,写入到dumpfile文件中。
在impdp的时候,从dumpfile文件中读出这个master table,用来控制对对象的操作顺序。
maste table的生存周期
1. 当job 正常完成之后,该maste table 被drop掉。
2. 在job运行过程中,使用在交互式命令行模式下( interactive command)STOP_JOB,该master table会被保留,并且 可以重新开始。
3. 使用在交互式命令行模式下( interactive command)kill_job,那么该master job 会被删除。
4. 如果job 异常结束,那么这个master table也是会被保留住的。你可以删除。或者重新开始
maste table中定义一些属性对象,例如name 以及schema名,这些属性对象又属于一种类别(class,如table,index,constrain,directory等),可是使用exclude以及include属性来完成对这些列表的过滤。
INCLUDE= TABLE:\"IN \(\'EMP\'\)\" -à其中的符号必须要转义。
[oracle@localhost dir0]$ expdp yyp/oracle schemas=scott directory=dir0 logfile=expinclude.log dumpfile=expinclue.dmp INCLUDE=TABLE:\"IN \(\'EMP\'\)\"。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25651216/viewspace-748256/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25651216/viewspace-748256/