由于这个问题超级复杂,所以开头有些操作我没有记录下来。当时我的日志文件REDO01.LOG,REDO02.LOG,REDO03.LOG这个3个文件都没有。我做了很久只恢复了第一个和第三个。而且这个日志文件里面没有恢复重做日志文件的内容。导致在恢复的时候提示没有恢复记录,需要更多的恢复数据。我在网上找了很多东西,都没有能解决的。下面是我将3个日志文件搞出来后的操作记录。
我在网络上面看到很多人遇到这样的问题,但是解决了的很少。
问题出来了:我昨天启动oracle相关服务后,登录不了了。
出现了ORA-01033:ORACLE initialization or shutdown in progress
调查后的原因我估计是因为我用优化大师优化系统的时候可能把数据库的某些文件给删掉了
解决步骤:
以DBA(通常有好几个sys或system)用户sqlplus登录
请输入用户名: system/sys as sysdba
然后(卸载数据)输入:
SQL> shutdown normal
会出现:
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
然后(装载数据)输入:
SQL> startup mount
ORACLE 例程已经启动。
数据库装载完毕。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'E:oracleoradataorclSYSTEM01.DBF'
--try to open but failed
SQL> recover datafile 1;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 293601280
bytes Fixed
Size 1248624
bytes Variable
Size 100663952
bytes Database
Buffers 188743680
bytes Redo
Buffers 2945024
bytes 数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 293601280
bytes Fixed
Size 1248624
bytes Variable
Size 100663952
bytes Database
Buffers 188743680
bytes Redo
Buffers 2945024
bytes 数据库装载完毕。
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01113: 文件 1 需要更多的介质恢复
ORA-01110: 数据文件 1: 'E:oracleoradataorclSYSTEM01.DBF'
SQL> recover datafile 1;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
SQL> recover database using backup
controlfile;
ORA-00279: 更改 676473 (在 03/20/2009 05:17:45 生成) 对于线程 1 是必需的
ORA-00289: 建议:···
ORA-00280: 更改 676473 (用于线程 1) 在序列 #111 中
指定日志: {=suggested | filename |
AUTO | CANCEL}
auto
ORA-00308: 无法打开归档日志
'E:oracleoradataorclREDO01.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: 无法打开归档日志
'E:oracleoradataorclREDO02.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'E:oracleoradataorclSYSTEM01.DBF'
SQL> alter system set
"_allow_resetlogs_corruption"=true scope=spfile;
系统已更改。
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 293601280
bytes Fixed
Size 1248624
bytes Variable
Size 100663952
bytes Database
Buffers 188743680
bytes Redo
Buffers 2945024
bytes 数据库装载完毕。
SQL> recover database until cancel;
ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
SQL> alter database open resetlogs;
我记得在这部,ORACL数据库的服务强行的停止了。而且在这里面再也启动不起了,如果遇到,你需要关掉DOS窗口,重新上面的操作。
如果
SQL> alter database open;
出现了:
数据库已更改。
则成功了。
这时可以再用PL/SQL等客户端工具,登录操作数据库了。