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 .