cancel
Showing results for 
Search instead for 
Did you mean: 

BR0398E DBVERIFY detected corrupted blocks in TS SAPSR3

Former Member
0 Kudos

Hi!

After DBVerify I get the following error:

BR0398E DBVERIFY detected corrupted blocks in /oracle/<sid>/sapdata4/sr3_8/sr3.data8

Furthermore I get the following warning/information:

Completely zero block found during dbv:

Page 286685 is marked corrupt

Question:

1) Does it mean that my database is corrupt and should be recovered from a valid backup?

2) What is the approach to handle here and to solve the error?

Enclosed the output of the following SQL commandos:

> select dbms_utility.data_block_address_block(1522735858) from dual;

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(1522735858)

-


203506

> select dbms_utility.data_block_address_file(1522735858) from dual;

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(1522735858)

-


363

> select file#, rfile# from v$datafile where name = '/oracle/<sid>/sapdata4/sr3_8/sr3.data8';

FILE# RFILE#

-


-


11 11

> select segment_name, partition_name, segment_type, block_id, blocks from dba_extents where (203506 between block_id and (block_id + blocks - 1)) and file_id = 363 and rownum<2;

no rows selected

Thank you very much!

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Check The note: SAP Note:365481 - Block corruptions

This provides info on checking your DB for corrupt blocks and process to eliminate them if they exist.

Former Member
0 Kudos

Hi!

Many thanks for the reply.

One vital question:

I repeated the DBVerify job and get the same error:

BR0398E DBVERIFY detected corrupted blocks in /oracle/<sid>/sapdata4/sr3_8/sr3.data8

How can I identify which object/table is corrupt of this data file?

Thank you!

Former Member
0 Kudos

Hi,

Please check alert log for the flie and block ids of the corrupted block.

To find the object that has a corrupted block you could use:

SELECT SEGMENT_NAME, SEGMENT_TYPE, RELATIVE_FNO

FROM DBA_EXTENTS

WHERE FILE_ID = <File_ID>

AND <Block_ID> BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1

Also check "Note 540463 - FAQ: Consistency Checks + Block Corruptions" for more understanding on Block corruption and correction.

Former Member
0 Kudos

Hi!

Many thanks!

And how can I identify the <File ID> and <Block ID>.

> SELECT SEGMENT_NAME, SEGMENT_TYPE, RELATIVE_FNO FROM DBA_EXTENTS

> WHERE FILE_ID = <File_ID> AND <Block_ID> BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1

I only know this information from DBVerify job from DB13:

BR0398E DBVERIFY detected corrupted blocks in /oracle/<sid>/sapdata4/sr3_8/sr3.data8

Any helpful information will be very appreciated!

Thank you!

Former Member
0 Kudos

Request you to check the "Oracle Alert Log file"

stefan_koehler
Active Contributor
0 Kudos

Hello Holger,

> And how can I identify the <File ID> and <Block ID>.

Here is the SQL for that:

SQL> 
SELECT dbms_utility.data_block_address_block(1522735858) "BLOCK",
dbms_utility.data_block_address_file(1522735858) "FILE"  
FROM dual;

Please also take a look at this thread::

Regards

Stefan

Former Member
0 Kudos

Hi!

Many thanks.

In thread desribed method is good, but

SQL> SELECT dbms_utility.data_block_address_block(528925394) "BLOCK",

2 dbms_utility.data_block_address_file(528925394) "FILE" FROM dual;

BLOCK FILE

443090 126

SQL> alter system dump datafile 126 block 443090;

shell> cd /oracle/TS2/saptrace/usertrace

shell> show the last trace file

Identify the object id in the trace file and search for the keyword objn

Now my problem is that in log file I found

alter system dump datafile/tempfile: file 126 not readable

So no objects is there

Question

How can I find the object ID of corrupted block?

Thank you!

Former Member
0 Kudos

Hello Holger,

From your first post I get to see that

BLOCK = 203506

FILE= 363

So you are expected to try

SQL> alter system dump datafile 363 block 203506;

Answers (2)

Answers (2)

former_member204746
Active Contributor
0 Kudos

make sure you run DBVERIFY on that datafile while Oracle is OFFLINE. Running this online might give you false positives.

Former Member
0 Kudos

Hi!

Some additional information

SQL> SELECT dbms_utility.data_block_address_block(1522735858) "BLOCK", dbms_utility.data_block_address_file(1522735858) "FILE" FROM dual;

BLOCK FILE

-


-


203506 363

After this I executed alter system dump commando:

> alter system dump datafile 363 block 203506;

When I open the generated dump file I can see:

Error: alter system dump datafile/tempfile: invalid input file # 363

SQL> select owner, segment_name, partition_name, segment_type, block_id, blocks

2 from dba_extents

3 where (525 between

+4 block_id and (block_id + blocks - 1))+

5 and file_id = 4

6 and rownum < 2;

OWNER SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE BLOCK_ID BLOCKS

SAPSR3 DD08T~0 INDEX 521 128

Question

Should I run the following SQL commando or how can I solve my problem?

ALTER INDEX DD08T~0 REBUILD ONLINE;

former_member524429
Active Contributor
0 Kudos

Dear Holger,

Please follow this[ SAP Note 99962 - Error messages when using DBVERIFY|https://websmp130.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=99962].

[SAP Note 674908 - Verification of raw files with DBVERIFY fails|https://websmp130.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=674908]

1. The problem may be with BR*Tools.

2. Perform DBVERIFY repeatedly to confirm the corruption on same block.

Perform an offline verification of the relevant files if necessary.

If Oracle Block is actually corrupted, Remove Oracle blocks with a restore/recovery or with a reorganization of the relevant tablespace.

Regards,

Bhavik G. Shroff

Edited by: Bhavik G. Shroff on Nov 6, 2009 2:51 PM

Edited by: Bhavik G. Shroff on Nov 6, 2009 2:52 PM