ORA-1578 ORA-27047 ORA-27048 Corrupt blocks when using RMAN / NetBackup

(Doc ID 373595.1)

Last updated on APRIL 18, 2017

Applies to:

Oracle Database - Enterprise Edition - Version 8.1.7.4 to 11.2.0.2 [Release 8.1.7 to 11.2]
Information in this document applies to any platform.
Checked for relevance on 18-Dec-2013
Checked for relevance on 06-Jul-2015
Netbackup, Rman



Symptoms

Corrupt blocks by Netbackup overwriting Oracle database files after RMAN backup.It may affect any blocks including Oracle OS block (block zero), Datafile Header block (Block 1), Block 2, etc.


- When it affects data blocks, Oracle may report the corruption with ORA-1578.


- For block 2 DBVERIFY produces the next errors:

DBVERIFY - Verification starting : FILE = /oracle/oradata/example1.dbf
Page 2 is marked corrupt
***
Corrupt block relative dba: 0x4e800002 (file 314, block 2)
Bad header found during dbv:
Data in bad block -
 type: 50 format: 3 rdba: 0x313a3032
 last change scn: 0x205b.2e343335 seq: 0x31 flg: 0x39
 consistency value in tail: 0x96e50601
 check value in block header: 0x335d, block checksum disabled
 spare1: 0x3a, spare2: 0x34, spare3: 0x203c

 

Assuming that the blocksize for that datafile is 8192 (v$datafile.block_size), a Unix dd | od ascii output is:

$ dd if=/oracle/oradata/example1.dbf bs=8192 skip=2 count=1 | od -c block.out |head -2

1+0 records in
1+0 records out


0000000 2 3 : 4 1 : 0 2 . 4 3 5 [ 1 9
0000020 3 ] < 4 > :




Which looks like a timestamp: 23:41:02.435 [193] <4> :

In another example, if the corrupted block is dumped using the datafile name:

alter system dump datafile '/oracle/oradata/example2.dbf' block 2;


the trace file contains something similar to:

buffer rdba: 0x353a3536 (212/3814710)
scn: 0x205b.2e353937 seq: 0x36 flg: 0x36 tail: 0x791a1d02
frmt: 0x04 chkval: 0x3533 type: 0x31=unknown
Hex dump of corrupt header 4 = CORRUPT
Dump of memory from 0x8000000100174800 to 0x8000000100174814
8000000100174800 31343A30 353A3536 2E353937 205B3636 [14:05:56.597 [66]
8000000100174810 35335D20 [53] ]


Note the timestamp value in the block header: [14:05:56.597 [66] [53] ]


- RMAN is used with NetBackup. When the block 2 is corrupted, RMAN can produce the errors:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 06/12/2006 22:54:48
ORA-19566 : exceeded limit of 0 corrupt blocks for file /oracle/oradata/example4.dbf


and the corruption is reported during backup in the alert log file:


***
Corrupt block relative dba: 0x0ec00002 (file 59, block 2)
Bad header found during backing up datafile
Data in bad block -
type: 49 format: 4 rdba: 0x353a3536
last change scn: 0x205b.2e353937 seq: 0x36 flg: 0x36
consistency value in tail: 0x791a1d02
check value in block header: 0x3533, computed block checksum: 0x31c4
spare1: 0x3a, spare2: 0x30, spare3: 0x5d20
***
Reread of blocknum=2, file=/oracle/oradata/example4.dbf. found same corrupt data

 

- Another error example when block 2 is corrupted can be produced by a select as: 

 

SQL> select * from dba_data_files;
ERROR:
ORA-00600: internal error code, arguments: [kcbgcur_9], [310378498], [13],
[4294965488], [8192], [], [], []



dbverify shows errors on block=2 as above and the dd output is:

dd if=S_ERS_08_D_05.dbf bs=8192 count=1 skip=2 | od -c |head -2
1+0 records in
1+0 records out
0000000 0 1 : 3 5 : 2 7 . 6 0 4 [ 2 7
0000020 1 7 2 ] < 4 > : 300 \n 004 \0 \0



The timestamp is here as well.

- When the corruption is in the datafile OS block header (Block 0), ORA-27047 can be produced when creating the controlfile. dbverify will not detect this corruption because it does not check this block. dbfsize may produce the next error message:

$ dbfsize example3.dbf
example3.dbf: Header block magic number is bad; trying raw file format...
example3.dbf: Header block magic number is bad



The corrupted header contains:

$ dd if=example3.dbf bs=8192 count=1 | od -x | head -2

0000000 3035 3a30 303a 3036 2e33 3830 205b 3439
0000020 3438 3138 325d 203c 343e 203a 200a


The ascii representation of these hexadecimal values is:

05:00:06.380 [4948182] <4> :

- When the datafile header block 1 is corrupted , ORA-27048 can be produced by "Create Controlfile"

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms