1

I am getting the following error while starting the sqlplus (I am using Oracle XE 11.2.0)

ORA-01033: ORACLE initialization or shutdown in progress
Process ID: 0
Session ID: 0 Serial number: 0

So, I did the following..

SQLPLUS> CONN AS sysdba

and then..

SQLPLUS> alter database mount

I am getting the following error for the above command.

alter database mount
*
ERROR at line 1:
ORA-00227: corrupt block detected in control file: (block 3, # blocks 1)
ORA-00202: control file: 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\CONTROL.DBF'

I have the following files along with CONTROL.DBF in the same folder.

CONTROL.DBF
SYSAUX.DBF
SYSTEM.DBF
TEMP.DBF
UNDOTBS1.DBF
USERS.DBF

I also tried disk check on the C:\ drive, and Windows said it repaired the CONTROL.DBF file but still, I am getting the same error.

Thanks in advance. Hope you will reply as soon as possible.

3
  • what caused this to happen? Having windows repair your oracle controlfile is not the smartest to do. Do you have anything like backup in place? Since you have only 1 ctl file, a restore from a previous version looks like best option but not knowing what happened makes it a bit hard. For the same case, other files are also corrupted.
    – user953
    Jul 5, 2014 at 19:19
  • Please add to the question the result of show parameter control
    – kubanczyk
    Jul 6, 2014 at 7:27
  • Note: you should have at least 3 copies of control file if you db it prod. This issue often occurs when filesystem is full and Oracle needs for some reason to extend the size of the controlfile. Check modif. date and size of each controlfile. Also this shows that having autoextensible datafiles and using sparse tempfiles is not allways good idea.
    – ibre5041
    Dec 1, 2014 at 10:54

2 Answers 2

4

Move control.dbf to control.dbf.damaged.20140706

connect / as sysdba
show parameter control

Verify here you have had only a single control file and not two or three of them. If you have had more than one control file, then this instruction is not for you.

STARTUP FORCE NOMOUNT;

CREATE CONTROLFILE DATABASE "XE" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'C:\ORACLEXE\APP\ORACLE\FLASH_RECOVERY_AREA\XE\ONLINELOG\log_file_1' SIZE 50M,
GROUP 2 'C:\ORACLEXE\APP\ORACLE\FLASH_RECOVERY_AREA\XE\ONLINELOG\log_file_2' SIZE 50M
DATAFILE
'C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF',
'C:\ORACLEXE\ORADATA\XE\UNDO.DBF',
'C:\ORACLEXE\ORADATA\XE\SYSAUX.DBF',
'C:\ORACLEXE\ORADATA\XE\USERS.DBF'
CHARACTER SET AL32UTF8
;
ALTER DATABASE OPEN;
1
  • 1
    The control file can be created with a create controlfile statement but the statement text depends on the database. You must add all data files, use the right character set and the right redo logs. noarchivelog only makes sense if your database was already in norachivelog mode before the problem occurred. The values needed for the control file creation can be searched in the alert.log. If you have more than one control file or a backup of the control file it is less error-prone to use these instead to recreate the control file.
    – miracle173
    Nov 30, 2014 at 20:17
0

connect / as sysdba SQL>SHUTDOWN

Go to folder oracle home\flash_recovery_area\YourDatabaseName

rename the file CONTROL02.ctl to CONTROL01.ctl and Copy it to folder oracle home\oradata\YourDatabaseName

CONNECT / AS SYSDBA STARTUP

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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