DBV checks Oracle datafiles to ensure that:
- The datafile has a valid header.
- Each datablock in the file has a special "wrapper" which
identifies the block - this "wrapper" is checked for correctness.
- DATA (TABLE) and INDEX blocks are internally consistent.
Since your Standby Database is runing in Mount mode just after applying the redologs there may be possiblity datafile's blocks take times to wrapp up and thus causing dbv to throw an error. Not sure though Pls check with Oracle.
I donot think it require redologs when the database is in recovery mode.
I have activated the standby database and checked for the errors in alert log but no errors. the database is opened successfully. I have taken export of the database. Export completed without warnings.
Because the export will give errors if any block corruption present at OS level.
I am able to login to the database through the application menu.
But when I am running some batch files which will do insertion into the tables and indexes respectively. I came across the data block corruption errors as follows.
ORA-20003: ORA-20003: ORA-01578: ORACLE data block corrupted (file #58, block # 20443)
ORA-01110: data file 58:
ORA-26040: Data block was loaded using the NOLOGGING optionaccnt_deal_blncs_a - Insert
ORA-06512: at "I
If the data block corrpution is present at recovery database, then it should also be present at live database.
Where as the live database is not having any block corruptions (checked with export and dbverify ).
Now the question is why the blocks are getting marked as corrupt only at standby database. And how to overcome this problem.
Database intentionally marks blocks corrupt during a recovery involving a nologging operation, it is because of this that we find corrupted blocks in sequence.
If we want to find the exact file id and block number using the logfile then we would need to convert the number available as e.g. DBA = 277079327 to Block number and file ID. This can be identified using the dbms_utility package.
To Identify the File ID : dbms_utility.data_block_address_file(results);
To Identify the Block No. : dbms_utility.data_block_address_block(results);