oracle 数据泵(1)

数据泵支持直接路径以及外部表的两种方式加载以及卸载行数据

可以导出:

*属于其他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来完成unloadload的时候,也用外部表的方式来完成。

 Data Pump Job过程中做了些什么

Data Pump jobs使用一张master tablemaster process,以及work processes来完成工作。以及对process进行跟踪。

oracle会为每一个Data Pump export job,和Data Pump import job 产生一个master process,这个master process在整个job过程中起着控制作用,包括和客户端进行通信,产生并控制work processes,以及进行log 操作。

数据库会使用master table来跟踪一个job proceemaster table是在数据库内部真实存在的,他属于执行expdp或者impdp的操作的那个用户schema。所以这个用户必须要有在表空间中有足够的quotamaster 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 commandSTOP_JOB,该master table会被保留,并且 可以重新开始。

3.  使用在交互式命令行模式下( interactive commandkill_job,那么该master job 会被删除。

4.  如果job 异常结束,那么这个master table也是会被保留住的。你可以删除。或者重新开始

 maste table中定义一些属性对象,例如name 以及schema名,这些属性对象又属于一种类别(class,如tableindexconstraindirectory等),可是使用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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值