Oracle插入大数据的方法总结

来源:互联网 发布:linux mount phyaddr 编辑:程序博客网 时间:2024/05/01 10:36

假设T1是待插入的表,数据来自T2(或者多表连接产生的临时表)

一、使用hint

INSERT   /*+nologging  append  parallel(T1,4)*/   INTO  T1  SELECT   *   FROM   T2;

1、非归档模式下,只需append就能大量减少redo的产生;归档模式下,只有append+nologging才能大量减少redo
2、insert /*+ append */ 时会对表加锁(排它锁),会阻塞表上的除了select以外所有DML语句;传统的DMLTM enqueue上使用模式3row exclusive),其允许其他DML在相同的模式上获得TM enqueue。但是直接路径加载在TM enqueue使用模式6exclusive),这使其他DML在直接路径加载期间将被阻塞。
3、insert /*+ append */ 直接路径加载,速度比常规加载方式快。因为是从HWM的位置开始插入,也许会造成空间浪费。

4、parallel是并发执行,参数是指并发的线程数。

二、使用exp/imp  或  expdp/impdp