DBVerify (dbv) is an utility in standard Oracle binary to check whether there is any block corruption in the data file. I use it often in the following case.
After building standby, dbv all the files on standby to make sure it's correct. When there is block corruption on primary, I will dbv the relative file on standby before replace it on primary. When media failure occurs, I will dbv the system tablespace files and rollback segment (undo tablespace) data files. If system and rollback are all fine, I can bring the database up first. I also ask my customers to perform dbv before asking for AUL (MyDUL) recovery.
I only give three option to this utility. As following.
dbv blocksize=... file=/path/filename log=...
Let's take a look at the dbv output. We should focus on the "Failing", "Marked Corrupt" and "Influx" lines.
DBVERIFY - Verification complete
Total Pages Examined : 1600
Total Pages Processed (Data) : 105
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 87
Total Pages Failing (Index): 0
Total Pages Processed (Other): 613
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 795
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 294081 (0.294081)
However dbv can only identify physical block corruptions out, not for logical corruptions. And usually I will do an export to "/dev/null" on standby for some big tables.
exp username/password file=/dev/null buffer=... log=exp_username.log
Oracle's RMAN's copy data file and backup database features have more careful check on data files than dbv.
