现有a分区表的数据约2千万条记录,大概24g,需要插入到b分区表中。temp表空间才2g大小,试过直接并行插入数据,脚本如下:
insert /+parallel(b,8) append nologging / into b select /+paralel(a,8)/ * from a(par_db_20160301)a,执行过程中提示[color=#FF0000]无法通过128(在表空间TEMP中)扩展temp段[/color]。
现在通过循环插入的方式进行操作,但是时间耗时太久,请问有什么方法改进,循环插入的脚本如下
declare cursor mycursor is SELECT ROWID FROM aa order by rowid;
type rowid_table_type is table of rowid index by pls_integer;
v_rowid rowid_table_type;
BEGIN
open mycursor;
loop
fetch mycursor bulk collect into v_rowid limit 5000;
exit when v_rowid.count=0;
forall i in v_rowid.first..v_rowid.last
insert into cc (deptno,dname,loc) select * from aa t;
commit;
end loop;
close mycursor;
END;
我想要达到的效果是,并行,每插入n条记录后提交一次。
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 下一篇:导入导出问题。