OCP复习 - 管理(14) - 导入数据

直接路径插入

直接路径插入(Direct Path Insert)提供了高效率插入数据的方式。“直接路径”的意思就是绕过Data buffer cache,将数据直接插入数据文件,而且插入的数据都位于表的高水位线以上。

 

SQL语句直接路径插入的几个要点:
1、Direct Path Insert只适用于从一个已有的表往另一个表中插入数据,通过在insert语句中指定/*+APPEND*/实现:
Insert /*+APPEND */ into tableA select ... from tableB;
2、Direct Path Insert可以指定NOLOGGING模式,只写入非常少量的REDO LOG,进一步提升效率(但会对恢复带来不便,只有在归档模式下才产生显著作用?)。NOLOGGING选项不只适用于Direct Path Insert,也适用于重建索引等操作;
3、如果一个表中之前删除过大量数据后执行Direct Path Insert,会带来空间的浪费;
4、以append方式插入记录后,要执行commit,才能对表进行查询;
5、不管表是否在nologging 下,只要是direct insert,就不会对数据内容生成undo;
6、在机器有多个CPU的情况下,可以使用并发Direct Path Insert:
 ALTER SESSION ENABLE PARALLEL DML;

 INSERT /*+PARALLEL(scott.emp,2) */
 INTO scott.emp NOLOGGING
 SELECT * FROM scott.old_emp;
 并行直接路径插入也适用于CTAS方式:

 create table t1 nologging parallel(degree 2) as select * from t;

SQLLoader直接路径插入
类似于SQL语句,使用SQLLoader也有两种插入方式:传统和直接路径插入(conventional & Direct Path)。直接路径插入的限制是:不能对所有约束校验,不触发trigger,其他会话无法并行修改表数据。
类似于SQL语句,通过使用多个数据源文件,SQLLoader也可以实现并行插入。

SQLLoader的几个文件:数据文件、控制文件、日志文件、非法数据文件(bad file)、抛弃数据文件(discard file,如果需要有选择的插入数据)


这篇文章对高效插入数据有较全面的论述:
http://www.examda.com/oracle/zhonghe/20100405/092807472-3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值