Pages

Monday, September 24, 2007

Oracle: Fixing ORA-01113: file x needs media recovery Error

Disclaimer

The following steps are intended for a quick recovery of the database. Use them at your own risk.

Symptom

Oracle mounts the database, but refuses to open the database with an ORA-01113: file x needs media recovery Error.
% sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Sep 24 09:29:10 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 2684354560 bytes
Fixed Size 1981064 bytes
Variable Size 436209016 bytes
Database Buffers 2231369728 bytes
Redo Buffers 14794752 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/OraData/SIAMST/siamst_system.dbf'


% oerr ora 01113
01113, 00000, "file %s needs media recovery"
// *Cause: An attempt was made to online or open a database with a file that
// is in need of media recovery.
// *Action: First apply media recovery to the file.

Resolution
  1. Startup the database with the mount option
    SQL> startup mount
    ORACLE instance started.

    Total System Global Area 2684354560 bytes
    Fixed Size 1981064 bytes
    Variable Size 436209016 bytes
    Database Buffers 2231369728 bytes
    Redo Buffers 14794752 bytes
    Database mounted.

  2. Find the name of the redo log file which belongs to the active group
    SQL> SELECT MEMBER FROM V$LOG G, V$LOGFILE F WHERE G.GROUP# = F.GROUP# 
    2 AND G.STATUS = 'CURRENT';

    MEMBER
    --------------------------------------------------------------------------------
    /OraRedo/RedoLogFiles/siamst_log01.dbf

  3. Using a backup control file, start the cancel based recovery. The system may suggest a non-existing archive log -- ignore it and specify the log file name {with full path} that you got in the above step
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL
    ORA-00279: change 21375038 generated at 09/21/2007 20:12:47 needed for thread 1
    ORA-00289: suggestion : /export/pspp/oracle/dbs/arch1_4_633901491.dbf
    ORA-00280: change 21375038 for thread 1 is in sequence #4

    Specify log: {=suggested | filename | AUTO | CANCEL}
    /OraRedo/RedoLogFiles/siamst_log01.dbf
    Log applied.
    Media recovery complete.

  4. Finally open the database in RESETLOGS mode. It is recommended to reset the online logs after incomplete recovery or recovery with a backup control file
    SQL> ALTER DATABASE OPEN RESETLOGS;
    Database altered.

Take a backup of the database as soon as the recovery is done.

See Also:

_______________
Technorati Tags:
|

26 comments:

  1. This work like a champ.
    When doing a system copy you will see this. On the host recover up to the last archive log. Then apply each of the redo logs until you get the database opened message. So for example in origloA will be (*.dbf files) just apply each of them until you get the message.

    Kelly

    ReplyDelete
  2. This was very useful .
    But i have one doubt when i try to restore the database in a different server (Means i took backup from production database and restore in test database) I got this same error ORA-01114.
    So i think i should replace the step 3 with
    SQL> RECOVER DATABASE USING CONTROLFILE UNTIL CANCEL ;

    Am i rite or do i still need to use BACKUP option here.
    Please help !!

    ReplyDelete
  3. it helped a lot.thank u very much

    ReplyDelete
  4. it helped a lot.thank u very much

    ReplyDelete
  5. I also thank you for this. I haven't seen this type of recovery before and it helped me.

    ReplyDelete
  6. This helped me as well. Thanks for the post.

    ReplyDelete
  7. You are great man, its work perfectly, thanks a lot!!!

    ReplyDelete
  8. this works if the dabase is not in backup mode...i had this issue and then i saw that the db was in backup mode and i was geting further errors such as:
    ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
    ORA-01195: online backup of file 1 needs more recovery to be consistent
    ORA-01110: data file 1: '/oracle/oradata/MGOrcl/system01.dbf

    then i issues this command:
    alter database end backup;

    and followed instruction here...

    thank you

    ReplyDelete
  9. thakk you very much i have start my database,thank you agin

    sayeed akhtar

    ReplyDelete
  10. thanks for the post!
    it helped me much.

    the only thing was that i obtain two redos in the query. I select the last one and the DB was recovered.

    regards

    ReplyDelete
  11. Thank you very much. The proposed solution worked perfectly for us.
    Regards,

    ReplyDelete
  12. Wow....!! Just superb Bro!
    It's work great, like a real genius.
    Thanks a lot. :)

    ReplyDelete
  13. Thanks a lot you literally saved my life!! My Informatica services were not running due to Oracle being down.

    ReplyDelete
  14. I tried this but I'm facing the below error.
    ORA-00309: log belongs to wrong database
    ORA-00334: archived log: '/oracle/ACC/origlogB/log_g14m1.dbf'

    Plz help

    ReplyDelete
  15. Thank you very much for this link you have just saved me hours of work.

    Regards
    John V

    ReplyDelete
  16. the 'alter database end backup' tip helped me to open the database on my refreshs. thanks!

    ReplyDelete
  17. THANKS

    ITS VERY HELPFULL TO ME ALSO

    ReplyDelete
  18. Great job. It worked perfectly

    ReplyDelete
  19. Work like a charm!!! Thanks very helpful;;;

    ReplyDelete
  20. DB back up after failed Duplicate, thanks for sharing

    ReplyDelete
  21. Thank you very much!

    ReplyDelete
  22. I searched and I searched and tried so many paths to recover my local DB ... hard to believe that there is no easily accessible documentation on how to do this. Followed these instructions and I was back in business. Thank you, thank you, thank you!

    ReplyDelete
  23. Hey man, just wanted to say thank you. Was in a panic, and this post worked perfectly to help me. RHEL5 with Oracle Enterprise 11.2 in Pelham Alabama.

    ReplyDelete