Hi All,
We use oracle 8.1.7.4 and solaris 2.8.
We have have 8 CPU each 750 Mhz. We are doing a bulk update using Pro*C. Each batch does an update of 50K. This is taking close to 8.5 Min. We are passing the where condition values using an Array.
The table is very big, and has some old data. We are planing to purge all the old data. Apart from this is it possible to improve the performance of the update statement. Something like parallel update or direct update which would improve the update speed.
Can u please guide to any documentation on this or provide some help would be greatly appreciated.
--- 1 option
alter table scott.my_table parallel 8;
alter index scott.my_table_p1 parallel 8;
alter table scott.tamil_temp_con_addr parallel 8;
alter index scott.tamil_temp_con_addr_idx parallel 8;
commit;
alter session enable parallel dml ;
alter session enable parallel query ;
update /*+ parallel(a,8) */ scott.my_table a
set a.pr_addr_id = ( select addr_per_id
from scott.tamil_temp_con_addr c
where c.accnt_id = a.row_id)
where exists ( select null
from scott.tamil_temp_con_addr c
where c.accnt_id = a.row_id) ;
commit;
alter session disable parallel dml ;
alter session disable parallel query ;
alter table scott.my_table noparallel ;
alter index scott.my_table_p1 noparallel ;
Hi All,
Thanks for the response. I forgot to mention one thing, the column that gets updated gets its values from an external source, its not stored in a table. Its a daily update and this values is passed using an array, using bind variable.
I will try what tamilselvan suggested.
Bookmarks