昨天,一朋友说oracle 9i 数据库,在运行当中忽然断电。来电后,在数据库启动过程中,又忽然断电。电恢复正常后,数据库启动不了了。提示UNDO表空间恢复不成功。由于昨天晚上和一哥们生日,大家一起在外吃饭,晚上12点才到家。没有来得及远程 看一下。直到今天下午,才有时间看了看。
在做操作前,备份了所有的数据文件、在线日志文件、控制文件。
操作系统 为 win2000
数据库版本为:oracle 9201,运行在非归档模式下,没有进行过任何有效的备份。
连上SQLPLUS。
运行,recover database ;
提示控制文件比数据文件旧。
重建了一下控制文件.
select * from v$log;
发现redo01.log 的 status 为invalidate,并且为当前联机日志文件。日志文件损坏。
问题的原因是出在当前联机日志文件的损坏。在线日志文件中,每组都只有一个成员。
解决办法:
SQL> alter database backup controfile to trace;
到udmp 目录下,找到trc 文件后,在noamount下重新创建控制文件。
关闭数据库
SQL>create pfile from spfile;
修改参数文件,加入:
_allow_resetlogs_corruption=true
用文本参数文件启动数据库到mount状态下
SQL> recover database using backup controlfile;
在输入CANCEL后
SQL>alter database open resetlogs;
能够启动,启动后 ,把TEMP空间reuse。马上作了一次全库的exp ;
问题解决。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28620/viewspace-166468/
,如需转载,请注明出处,否则将追究法律责任。