split block (torn page) problem
From: <Laimutis.Nedzinskas_at_seb.lt>
Date: Tue, 6 Dec 2011 11:08:25 +0200
Message-ID: <OFC89356C0.DDFC8D13-ONC225795E.00302F7F-C225795E.003235F0_at_seb.lt>
Hi
Date: Tue, 6 Dec 2011 11:08:25 +0200
Message-ID: <OFC89356C0.DDFC8D13-ONC225795E.00302F7F-C225795E.003235F0_at_seb.lt>
Hi
Recently people blogged about very basic, core oracle functionality and issues with durability and isolation here: http://jonathanlewis.wordpress.com/2011/08/19/redo-2/
Now I have a similar basic question about split block (torn page) problem.
According to
http://www.emc.com/collateral/hardware/solution-overview/h2603-oracle-db-emc-symmetrix-stor-sys-wp-ldv.pdf
EMC has a (separately licensed) feature Generic SafeWrite which "is used
to help protect critical application from incurring an incomplete write,
and subsequent torn page, due to a failure within a component"
The question is what happens when:
- Oracle dbwr(or foreground process for that matter) issues a single IO kernel call to write 8k block into a datafile
- the first 4k are written successfully and the next 4k fails, i.e. torn page situation arises
- Oracle is stopped, the problem is fixed, oracle is started and attempts crash recovery
- My understanding is that Oracle crash recovery can not handle split-block. Unless the database was in backup mode meaning full block image is saved in the redo stream as a starting recovery point. I can only speculate the whole 8k image is so important because crash recovery needs datafile block sturctures like row directory (may be ITL's too ?) to be in a good shape.
- Basically, is it so that Oracle relies on hardware atomicity with respect to 8k(or whatever block size) IO calls ? Is it so that the whole 8k block must be stored or nothing?
Brgds, Laimis N
-- http://www.freelists.org/webpage/oracle-lReceived on Tue Dec 06 2011 - 03:08:25 CST