RE: Restore and Recover Fuzzy datafiles

  • From: "Mark W. Farnham" <mwf@xxxxxxxx>
  • To: <Andrey.Kriushin@xxxxxxxx>
  • Date: Thu, 25 May 2006 12:53:13 -0400

All versions I'm aware of, though I haven't dumped the end of a 10g, and
maybe not a 9i, either.

If you create a datafile, you'll probably notice that the size on disk is at
least 1 datablock size larger than you asked for. The very last OS set of
blocks adding up to the database block size is the same as the very first
one, except for a few key values that get resynchronized at checkpoints if I
remember correctly. If I recall correctly one of the values in these blocks
is also whether the tablespace was in backup. Prior to being able to lie to
the database with a command and "end backup" (intended really not for copies
of datafiles, but the current datafiles which cannot be block fractured in
the case that the database crashes while in backup mode), you had to
manually adjust that ending shadow end of the file block or Oracle would
still know something was "wrong" with the file.

This is also the reason why you have to make raw partitions a little bigger
than the datafile you want to create there. I always thought it was funny
(strange, odd sense of funny) that Oracle gave you one block less than the
create size and took up one block more than the create size.

If someone remembers the precise details of which programs update these
blocks and under what conditions, and is free to disclose it, I'd enjoy
reading that as well.

In the case below, if DB writer is suspended for the split and the plex
split operation generates a clean copy (note that that engineering detail is
not necessarily required if the volume manager is only promising that the
plexes remaining associated with the volume are identical, and there is
possibly extra work flushing things at split time), then you're not going to
have fracture blocks.

You get fractured blocks when an OS utility copying OS sectors (usually 512
bytes) ends a particular read in the middle of an Oracle block and then the
database writer writes the Oracle block before the next OS read starts.


Regards,

mwf

-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx]On
Behalf Of Andrey Kriushin
Sent: Thursday, May 25, 2006 10:05 AM
To: mwf@xxxxxxxx
Cc: Oracle-L Freelists
Subject: Re: Restore and Recover Fuzzy datafiles


Never heard of "ending block". What version it was then? Mark, could you,
please, clarify?

I've been in the situation with recovery of fuzzy file(s). The customer made
the backups by "split mirror" or something similar, and yes - DB was
suspended before splitting the mirror. Then files from the broken half of
the mirror were copied (not by RMAN) somewhere to form the "backup". However
BEGIN BACKUP was not performed before the split.
    Funny thing is that complete recovery was always working for them, so
the problem with fuzziness never arose. Unfortunately when the time for
incomplete recovery came, the customer had a big trouble. I've not noticed
any problems with the "ending blocks". Did I miss something important?
Server version was 9.2.0.4 if I remember correctly.
    AFAIK, after opening the database all its online datafiles in read write
tablespaces are in some sense fuzzy. It shows up as "stop scn:
0xffff.ffffffff" in file_hdrs dump (comes from the controlfile record for
the file), and also can be seen as KCVFHOFZ flag set in kcvfh.kcvfhsta field
in the file header block.
    There are also additional structs in the file header block with some
other meaning for "fuzzy", named as "Absolute fuzzy scn" and "Recovery fuzzy
scn". Probably somebody on the list could clarify their meaning?

TIA

- Andrey

Mark W. Farnham wrote:
Before you could tell the database to "end" backup, you also had to patch
the beginning and ending blocks of the file (lie to Oracle) so that Oracle
did not consider the file to be "fuzzy," but I doubt you're working with a
vintage of the Oracle software that old. If you are, you'll need some kind
of binary block editor.

Other related posts: