Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: what happens if you lose a rollback segment?
Ryan wrote:
>> >> -- >> Sybrand Bakker, Senior Oracle DBA
It's a good question, actually.
First, there's the answer that says any recovery consists of being able to roll everything forward via the redo logs. Then you get to the end of the redo, and start rolling everything back that wasn't committed. You need rollback segments for both of those phases. During the roll forward phase, we replay your original transactions exactly. So if you generated some rollback when you first did the transaction, we have to be able to generate it again during recovery. And during the rollback phase of recovery, we obviously use rollback generated during the roll forward phase.
Hopefully, that's enough of an explanation to persuade you that rollback segments *in principle* are vital for all recoveries.
But that begs the question: why can't you just create new rollback segments to perform recovery? Why do you have to have the original ones??
To which the answer is: redo consists of change vectors. That is "put this value, in that block of object X, on data file Y". And that goes for rollback data, too. Were you to create a new rollback segment, you'd be talking about object A, not X. And the redo change vector couldn't be applied. And if we couldn't therefore re-generate your rollback data properly, we couldn't perform recovery properly.
Regards
HJR
-- -------------------------------------------- See my brand new website, soon to be full of new articles: www.dizwell.com. Nothing much there yet, but give it time!! --------------------------------------------Received on Sat Oct 18 2003 - 15:18:34 CDT