Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?


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.

share|improve this question
up vote 1 down vote accepted

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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.