You can play with parallel dml to see if it makes a difference. I use it like this:
1)alter session enable parallel dml;
2)run procedure with hint in dml statement:
insert /* APPEND PARALLEL(voters_dupkey, 2) */ into voters_temp ....
(update statement would not use APPEND its used for direct inserts)
There are restrictions. Look at metalink notes 201457.1 and 201978.1
I don't think there is a way to do direct updates, only direct inserts. If I'm wrong then someone please correct me.
Arm yourself with knowledge