如果要DML实现真正意义上的并发,在开始执行需要并发语句前,需要执行开启session并发 ALTER SESSION ENABLE PARALLEL DML; 在执行完语句后,需要执行关闭session并发 ALTER SESSION DISABLE PARALLEL DML;
使用并行,加快大量数据更新:
Oracle 对Delete,update,merge的操作限制在,只有操作的对象是分区表示,Oracle 才会启动并行操作。原因在于,对于分区表,Oracle 会对每个分区启用一个并行服务进程同时进行数据处理,这对于非分区表来说是没有意义的。
merge /*+parallel(test1,4)*/ into test1 using test2
on (test1.id = test2.id)
when matched then update
set test1.name = nvl2(test1.name,test2.name,test1.name);
merge into tpr_fwzh1 a using tpr_zwjjx_jxcll b on (a.fwcode=b.fwcode and a.zjlx=b.zjlx) when matched then update set a.zhye=b.dqye,a.lxye=a.lxye+b.jxlx