Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: Split Blocks on Instance Crash
No problem,
When modify a table with normal insert/update/delete, then
Note that during buffer cache block changes we record the RBA (redo byte address in redo stream) of last change in buffer headers (can be seen from X$BH). RBA is an address in redo stream, it can uniquely identify a redo record/change vector in redologs.
As long as we don't commit (with sync option) here, no redo has to be written onto disk.
So, as long as the foundations on what Oracle relies (OS, hardware) works properly and we don't hit any bugs (and unless I'm wrong) Oracle ALWAYS guarantees the blocks to be consistent after cache recovery in case of instance failure. It doesn't matter whether only half of DBWR's block write succeeded, or 99% or 1%, Oracle's recovery mechanisms are conceptually reliable.
All of above was a simplification, especially from 10g where we can have some redo log buffers in shared pool (private strands), some undo data cached in shared pool (in-memory undo), out-of order physical redo (multiple redolog strands and redo allocation latches), but again, I'm sure Oracle has based their recovery mechanisms on solid theoretical foundations here - no vulnerabilities on race conditions nor dependencies on which order you execute your stuff.
Tanel.
> Hi Tanel,
>
> Very sorry - I'm being slow today - I still don't get
> it! Why can you always read the previous image of the
> block from disk? The hypothesis was that DBW was in
> the middle of writing when the instance crashed,
> leaving only a current copy of the block on disk - a
> split one since DBW did not complete the write.
>
> Thanks
> Charlotte
>
>>Hi,
>>
>>Because in case of instance crash, you can always
> read the previous image of
>>block from disk and all subsequent changes to this
> block can be read from
>>online logfiles, in media failure case you might not
> be able to do so.
>>
>>Tanel.
>>
>>----- Original Message -----
>>From: "Charlotte Hammond"
>
>>To:
>>Sent: Thursday, December 22, 2005 9:31 AM
>>Subject: Re: Split Blocks on Instance Crash
>>
>>
>>>
>>> Thanks David - but why is this different from the
>>> backup situation? You would have the (archived)
> redo
>>> available then too, but you must still use
> BEGIN/END
>>> BACKUP to avoid split blocks.
>>>
>>> Charlotte
>>>
>>>
>>>
>>> --- David Sharples wrote:
>>>
>>>> because the information is available from redo /
>>>> undo and can easily be
>>>> replayed in case of a failure
>>>>
>>>> On 12/22/05, Charlotte Hammond
>>>> wrote:
>>>> >
>>>> > Hi All,
>>>> >
>>>> > Why does instance crash recovery not encounter
> the
>>>> > split blocks that you might get doing a backup
>>>> without
>>>> > BEGIN/END BACKUP?
>>>> >
>>>>
>>>
>>>
>>> __________________________________________________
>>> Do You Yahoo!?
>>> Tired of spam? Yahoo! Mail has the best spam
> protection around
>>> http://mail.yahoo.com
>>> --
>>> http://www.freelists.org/webpage/oracle-l
>>>
>>>
>>
>>--
>>http://www.freelists.org/webpage/oracle-l
>>
>>
>>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> --
> http://www.freelists.org/webpage/oracle-l
>
>
-- http://www.freelists.org/webpage/oracle-lReceived on Thu Dec 22 2005 - 19:26:40 CST
![]() |
![]() |