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

Home -> Community -> Usenet -> c.d.o.misc -> Re: Problem with rollback segments - HELP ??

Re: Problem with rollback segments - HELP ??

From: <markp7832_at_my-deja.com>
Date: Wed, 14 Jul 1999 14:44:25 GMT
Message-ID: <7mi7o7$ib1$1@nnrp1.deja.com>


In article <378b64ec.0_at_news2>,
  "S. Anthony Sequeira" <Sequeira_at_telinco.co.uk> wrote:
> markp7832_at_my-deja.com wrote in message <7lvqss$f89
$1_at_nnrp1.deja.com>...
> [large snip]
> >If your process is commiting as you go then you could be overlaying
the
> >data you need yourself. Decreasing the frequency of commits may be
> >beneficial in this case.
> >
> Mark,
>
> I am intrigued by the above. Could you satisfy my curiosity
and
> explain why frequent commits would overlay rollback segment data?
>
> TIA.
> >--
> >Mark D. Powell -- The only advice that counts is the advice that
> > you follow so follow your own advice --
> >
> >
> >Sent via Deja.com http://www.deja.com/
> >Share what you know. Learn what you don't.
>
> Tony
> --
> S. Anthony Sequeira
>
>

This a simplified explanation of what happens: Rollback segments are used in a circular fashion. Assume that there are 10 extents allocated to the rollback segment and your transaction starts in block one and modifies and commits enough data to fill block 10. Now when you change more information Oracle goes back to extent 1. If there is no in-progress (uncommited) transaction in the block then Oracle will reuse extent 1 overlaying the information stored in the extent. Now since you are in this case using an index to find the rows you want to process your application now fetches a row in a block that you have changed before. The original, rollback, information about how this block looked was stored in block 8 of extent 1 which was just overlayed by our transaction. Hence we create our own 'snapshot too old' error. If we were not commiting then when our transaction filled extent 10 and made more changes, Oracle would have allocated another extent to the rbs segment up to max_extents if space was available in the tablespace. The problem with this is that any other transaction that attempts to update a row in the target table of our transaction, is probably going to end up waiting on our transaction since we will have a lock on every row we have changed. On a heavy hit table this is unacceptable. Also a large table will consume a large amount of rollback and that is another management issue. There are several bulletins from Oracle on rollback segment management. --
Mark D. Powell -- The only advice that counts is the advice that  you follow so follow your own advice --

Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't. Received on Wed Jul 14 1999 - 09:44:25 CDT

Original text of this message

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