Recover corrupted blocks in Oracle 10g XE

corruptionoracleoracle-xerecovery

I am using Oracle 10g XE. I've noticed corrupted block error in datafile 1 in alert log. As I've found Oracle XE doesn't support Block Media Recovery(needs to be Enterprise Edition).

So I did the following:

shutdown immediate;
startup mount;
recover database;
alter database open;

But corrupted blocks are still there.

Should not have my recover command solved this problem? Why not?

Edit

I have restored before recover and now it works. So the following steps are working:

 shutdown immediate;
 startup mount;
 restore database;
 recover database;
 alter database open;

Does recover just looks for the SCN and if the SCN is current for the datafile then recovers nothing? Not even corrupted ones?

As I guess recovery is just to apply archive logs(or online logs) to catch up to the current SCN, but not correcting corruptions.

Best Answer

As you discovered by yourself, RECOVER is just the process of applying logs .

Since corruption occurs at physical level, you must restore the affected datafiles from a backup taken BEFORE the corruption occurs. RESTORE rebuilds the physical attributes of the datafile, so, any physical corruption (eg. disk failure) will be fixed.