1.开始—运行—“cmd”,输入如下命令:
C:\Users\Administrator>sqlplus "/as sysdba"
SQL> shutdown abort
SQL> startup
说明:以上三条命令在sqlplus环境下,以DBA身份重启数据库。如果数据库文件有损坏,则在startup运行时会提示损坏的文件位置,并提示错误代码。(若此方法修复失败,可根据提示的错误代码寻找新方法)。图示为可以正常打开的数据库,没有提示任何错误。
2.继续输入命令如下:
SQL> alter database backup controlfile to trace;
说明:在Oracle10G中,支持带“as”参数的命令:alter database backup controlfile to trace as 'E:\aa.txt'; 可以指定生成的trc文件存放位置“E盘”和名称“aa.txt”。
SQL> shutdown immediate
用记事本打开“(Oracle安装目录)\db_1\admin\orcl\udump”文件夹,找到第四条命令生成的最新trc文件。(在10G中可以到as参数指定的位置找到生成的文件)
在***.trc文件里,会有多部分命令,都以startup nomount开始,至分号结束。各部分命令的区别是:--noresetlogs仅是当前所有的onlinelogs可用时;--resetlogs,将导致online logs里的内容丢失,并且所有的备份失效,仅当online logs 损坏的情况下,才使用resetlogs模式。其中,NOARCHIVELOG为非归档模式。
把trc文件里的命令从STARTUP NOMOUNT开始,到分号结束,复制到cmd窗口里,执行。
如下图:
3.上述命令执行后,若提示“控制文件已创建”,则说明命令成功执行。可以继续输入如下的命令修复并打开数据库了(在trc文件里,下面的命令都可以找到):
SQL> RECOVER DATABASE
SQL> ALTER DATABASE OPEN;
Trc文件里的下一句命令一般是不需要的:(用于修复临时表空间,不同的系统生成的命令参数不同,可从trc文件里复制)
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE'(oracle安装目录)\ORADATA\ORCL\TEMP01.DBF'
SIZE 158334976 REUSE AUTOEXTENDON NEXT 655360 MAXSIZE 32767M;
退出sqlplus环境,回到CMD下
SQL> quit;
完成。
以上方法适用于解决oracle错误:ora-01122,ora-01110,ora-01207等。