Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> how to handle updates to millions of rows

how to handle updates to millions of rows

From: Peter Mueller <lord.of.board_at_gmx.de>
Date: 25 Aug 2004 07:06:20 -0700
Message-ID: <e3b18ff5.0408250606.675787d8@posting.google.com>


Hi all,

I am currently working on two very big tables (two times 8 mio records),
which I have to process. The problem is the infamous ora-01555 error.

Here is what I want to do:

declare
 cursor for joining two tables (a and b) begin
 for row in curser loop
   calculate some values
   insert joined row into a new table (a_b_joined)    delete joined rows from origin tables by rowids (a and b)    commit all 10,000 rows
 end loop
end;

This does not work, as I always get an ora-01555 (snapshot too old: rollback segment too small). Then I tried:

declare
 cursor for joining two tables (a and b) begin
 for row in curser loop
   calculate some values
   insert joined row into a new table (a_b_joined)    mark joined rows from tables by rowids with a flag (a and b)    commit all 10,000 rows
 end loop
 delete marked rows
end;

This didn't succeed either. What actually works is:

declare
 cursor for joining two tables (a and b) begin
 for row in curser loop
   insert joined row into a new table (a_b_joined)    commit all 10,000 rows
 end loop
end;

and afterwards

declare
 cursor for selecting merged records (a and b) begin
 for row in curser loop
   mark joined rows from tables by primary key with a flag (a and b)    commit all 10,000 rows
 end loop
end;

This solution is of course slower than it should and could be, but the question is, how can i do this more efficient, but still prevent the ora-01555?

I thought about 'cursor for update', but then I can't commit every now and then, right?

Has someone a idea about this?

Best regards,
lordi Received on Wed Aug 25 2004 - 09:06:20 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US