How to recreate or restore Corrupted Data Files in Oracle 11g

oracle

Few days back ago my power cable went down and I was working in Oracle. So after power cable restoration when I tried to login to SQL PLus:

  • It did not let me to login and I got error "Oracle Shutdown".
  • Then I went to command prompt and connected as /sysdba and tried to login and could not restore Oracle.
  • Then I went to Google and tried various methods and while working I accidentally deleted UNDOTBS01.dbf and USERS1.DBF.
  • Then when I tried to restore I got new error "Data file could not found".
  • Then I retrieved the deleted files form Recycle Bin and restored them back to where they are in C:\app\ven\oradata\dev directory.
  • Then when I tried shutdown and 'startup mount' I am getting new Error and messages from Alert LOg as follows:

Corrupt block relative dba: 0x00c00001 (file 3, block 1)
Bad header found during kcvxfh v10
Data in bad block: Corrupt block relative dba: 0x01000001 (file 4, block 1)
Bad header found during kcvxfh v10
Data in bad block:

Could you help me in restoring my database back to normal. I don't have any backups please.

Date :–01/16/2014 10:39 PM
I did the following :

Shutdown Immediate    
Startup mount    
restore database    
recover database    
alter database open  

Now my Alert Log As follows:

Reread (file 4, block 1) found same corrupt data
Thu Jan 16 22:33:46 2014
Hex dump of (file 3, block 1) in trace file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_ora_5556.trc
Corrupt block relative dba: 0x00c00001 (file 3, block 1)
Bad header found during kcvxfh v10
Data in bad block:
 type: 21 format: 7 rdba: 0x0f8b5198
 last change scn: 0x33a3.049aae4f seq: 0x36 flg: 0x6f
 spare1: 0xec spare2: 0xcc spare3: 0xc3ba
 consistency value in tail: 0x76830457
 check value in block header: 0x9b73
 computed block checksum: 0x6736
Reading datafile 'C:\APP\VENKAT\ORADATA\DEV\UNDOTBS01.DBF' for corruption at rdba: 0x00c00001 (file 3, block 1)
Reread (file 3, block 1) found same corrupt data
Hex dump of (file 4, block 1) in trace file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_ora_5556.trc
Corrupt block relative dba: 0x01000001 (file 4, block 1)
Bad header found during kcvxfh v10
Data in bad block:
 type: 70 format: 6 rdba: 0x230a00ea
 last change scn: 0xf206.00f72638 seq: 0xc flg: 0x01
 spare1: 0x38 spare2: 0x26 spare3: 0x0
 consistency value in tail: 0x010c2fd2
 check value in block header: 0x200
 block checksum disabled
Reading datafile 'C:\APP\VENKAT\ORADATA\DEV\USERS01.DBF' for corruption at rdba: 0x01000001 (file 4, block 1)
Reread (file 4, block 1) found same corrupt data
Hex dump of (file 3, block 1) in trace file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_ora_5556.trc
Corrupt block relative dba: 0x00c00001 (file 3, block 1)
Bad header found during kcvxfh v10
Data in bad block:
 type: 21 format: 7 rdba: 0x0f8b5198
 last change scn: 0x33a3.049aae4f seq: 0x36 flg: 0x6f
 spare1: 0xec spare2: 0xcc spare3: 0xc3ba
 consistency value in tail: 0x76830457
 check value in block header: 0x9b73
 computed block checksum: 0x6736
Reading datafile 'C:\APP\VENKAT\ORADATA\DEV\UNDOTBS01.DBF' for corruption at rdba: 0x00c00001 (file 3, block 1)
Reread (file 3, block 1) found same corrupt data
Thu Jan 16 22:34:07 2014
alter database open
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_ora_5556.trc:
ORA-01190: control file or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: 'C:\APP\VENKAT\ORADATA\DEV\SYSTEM01.DBF'
ORA-1190 signalled during: alter database open...
Thu Jan 16 22:34:08 2014
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_m000_2012.trc:
ORA-00338: log 1 of thread 1 is more recent than control file
ORA-00312: online log 1 thread 1: 'C:\APP\VENKAT\ORADATA\DEV\REDO01.LOG'
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_m000_2012.trc:
ORA-00338: log 1 of thread 1 is more recent than control file
ORA-00312: online log 1 thread 1: 'C:\APP\VENKAT\ORADATA\DEV\REDO01.LOG'
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_m000_2012.trc:
ORA-00338: log 2 of thread 1 is more recent than control file
ORA-00312: online log 2 thread 1: 'C:\APP\VENKAT\ORADATA\DEV\REDO02.LOG'
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_m000_2012.trc:
ORA-00338: log 2 of thread 1 is more recent than control file
ORA-00312: online log 2 thread 1: 'C:\APP\VENKAT\ORADATA\DEV\REDO02.LOG'
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_m000_2012.trc:
ORA-00338: log 3 of thread 1 is more recent than control file
ORA-00312: online log 3 thread 1: 'C:\APP\VENKAT\ORADATA\DEV\REDO03.LOG'
Errors in file c:\app\venkat\diag\rdbms\dev\dev\trace\dev_m000_2012.trc:
ORA-00338: log 3 of thread 1 is more recent than control file
ORA-00312: online log 3 thread 1: 'C:\APP\VENKAT\ORADATA\DEV\REDO03.LOG'

Please Help me

Best Answer

If you don't have any backups. Well... You're just flat down.

Nothing to be done.

You might as well drop the entire database and recreate.

Reasons follow:

1.- Corrupt blocks can only be repaired by getting the original block from a full backup (at least of the datafile that has the corrupted blocks) and applying the archivelogs after the original block has been restored to the original location.

2.- No backups, No archivelogs and no exports means you lost your data. There is no way to get it back as you cannot find out the actual storage order of each row once it got corrupted.

3.- If the undo tablespace got corupted as well, you can't even recover a datafile/block because the RDBMS won't find the undo data needed to make it consistent. In the best of cases you could apply forward changes on the redo logs, but you couln't rollback unfinished transactions before the crash.

Next time, as soon as you have a running database, get it to work in archivelog mode, make a full back every once in a while and, to be on the safe side, export the most important data you have there..