oracle非法关机引起redolog丢失,导致数据库实例无法正常启动(ORA-00313 ORA-00312 ORA-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了!!!

重新进入数据库,数据都在!当下立马进行数据库备份!

总结

  1. 数据库服务器(或者别的服务器),只要业务正常跑着,尽量别关机(重启)、,因为你永远不知道关机(重启)后,他能不能起来。
  2. 数据库服务器(特别是oracle),别运行与数据库无关的程序,避免其他进程对数据库进行造成影响。
  3. 最后一条也是最红要的一条:数据一定要做好备份!数据一定要做好备份!数据一定要做好备份!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值