oracle非法关机引起redolog丢失,导致数据库实例无法正常启动(ORA-00313 ORA-00312 ORA-00376)
文章目录oracle 非法关机导致redolog丢失主要遇到的错误背景备份该实例的文件正常启动查看错误信息查看日志状态尝试使用clear命令进行修复尝试switch日志文件进行强制恢复日志文件检查数据文件的状态对offline的数据文件进行上线总结oracle 非法关机导致redolog丢失主要遇到的错误ORA-00313ORA-00312ORA-00376背景接到某实验室老师的...
文章目录
oracle 非法关机导致redolog丢失
主要遇到的错误
- ORA-00313
- ORA-00312
- ORA-00376
背景
接到某实验室老师的求助,说oracle方面的问题。到现场后,状况如下:oracle某一实例无法启动,报ORA-00313、ORA-00312错误,查看响应redolog,只有REDO01.LOG文件大小正常,REDO02.LOG和REDO03.LOG均为0。
起因:前一天晚上9点处理完数据,正常关机走人。今天早上9点多,开机正常,操作数据库时系统反应特别慢、卡,直接进行重启。重启以后无法进行该数据库实例。要命的是,他!们!没!有!做!备!份!
这个数据库里存了他们项目组2个多月的工作量,ORZ。
所以啊,同学们,重要的数据多做备份没坏处!
备份该实例的文件
shutdown immediate
关掉实例,把D:\ORACLE\PRODUCT\10.2.0\ORADATA\
对应的实例的文件夹整个备份。
备份很重要,不管数据库状态正常还是不正常,第一步就是做备份!!!第一步就是做备份!!!第一步就是做备份!!!
正常启动查看错误信息
#先彻底关闭
shutdown immediate
#启动数据库
startup
查看日志状态
select * from v$log;
到文件管理器上查看,2号和3号日志文件的大小都为0。
尝试使用clear命令进行修复
startup;
alter database clear unarchived logfile group 3;
但是,因为当前的日志为group3,所以修复失败。
尝试switch日志文件
alter system switch logfile;
失败。。。
进行强制恢复日志文件
recover database until cancel
提示输入艺恢复的日志文件,输入文件的路径。
着手解决问题的时候,没有进行截图记录,本文的截图都是重复修复过程的时候记录的。在这个环节里头,我按照提示输入过group3的文件路径,然后再cancel。但是按下图来说,输入修复文件路径这个步骤可以不做,起码对于我这个修复案例是没有影响的。
alter database open resetlogs;
到此,group1~3对应文件大小恢复正常,数据库实例正常起来了。
当时以为得救了,可是~~~~ 当打开数据表的时候,提示ORA-00376,表都没了(显示不错来),心里凉了半截。心里虽然相信数据库数据文件应该是没有损坏的,但是数据不能正常显示出来,有也等于没有。
检查数据文件的状态
select file#,name,status form v$datafile;
显示3号文件offline
对offline的数据文件进行上线
alter database datafile 3 online;
失败!进行3号数据文件恢复
recover datafile 3;
再次,对该文件上线,OK了!!!
重新进入数据库,数据都在!当下立马进行数据库备份!
总结
- 数据库服务器(或者别的服务器),只要业务正常跑着,尽量别关机(重启)、,因为你永远不知道关机(重启)后,他能不能起来。
- 数据库服务器(特别是oracle),别运行与数据库无关的程序,避免其他进程对数据库进行造成影响。
- 最后一条也是最红要的一条:数据一定要做好备份!数据一定要做好备份!数据一定要做好备份!
更多推荐
所有评论(0)