DBV-00201: Block, DBA nnnnnn, marked corrupt for invalid redo application

The DBV-201 error is a new error due to ‘soft corruption’ which is caused by invalid redo application (eg: after application of NOLOGGING redo).

To find the object related to the corruption:

Take one of the DBV outputs and find block and file number with DBA block specified:

exec dbms_utility.data_block_address_file(37754116); -- block number
exec dbms_utility.data_block_address_block(37754116); -- file number

Using the file and block number, you can execute the query:

SELECT tablespace_name, segment_type, owner, segment_name
FROM dba_extents
WHERE file_id = <file#>
and <block#> between block_id AND block_id + blocks - 1;

use file and block number from previous step.

This will give you the segment/object name.

From the object(s) returned in previous query, if they are tables:

select owner, table_name, logging
from dba_tables
where table_name in
('<list of tables from previous query>');

If indexes:

select owner, index_name, logging, table_owner, table_name
from dba_indexes
where index_name in ('<list of indexes from previous query>');

The LOGGING=NO means the object is using the NOLOGGING feature and as expected, the recovery performed on the objects led to the DBV-201 output.

If you were to query the objects, you would get something like:

ORA-01578: ORACLE data block corrupted (file #9 , block # 121658)
ORA-26040: Data block was loaded using the NOLOGGING option

Solution: The object will need to be recreated.

If you want to ensure the soft corruption does not occur again, ensure tables or indexes are altered so that LOGGING=YES .