oracle10g服务器断电后的恢复

oracle10g服务器断电后的恢复

一、问题描述
天气原因,暴雨连连,导致所在机房突然断电,oracle10g服务器断电,来电以后数据库无法正常启动。
二、错误现象
登录oracle10g所在服务器Windows2003,启动数据库:
Sqlplus / as sysdba

startup
Error at line1:
Ora-01113:file 5 needs media recovery
Ora-01110:data file 5:’D:\oracle\product\10.2.0\oradata\orcl\cqq.dmp’

三、问题分析
从报错内容上看是文件5需要介质恢复,于是敲如下命令:

recover datafile 5;

继续报错:
Ora-00283:recovery session canceled due to errors
Ora-00354:corrupt redo log block header
0ra-00353:log corruption near block 50571 change 13***(scn) 07/05/2016 13:57:24
Ora-00312:online log 2 thread 1:
‘D:\oracle\product\10.2.0\oradata\orcl\redo02.log’

分析:从报错上看是恢复文件5需要日志文件2,但是日志文件2损坏了,导致介质恢复失败;
(1)于是继续查看有没有归档日志文件:通过查看归档模式,发现数据库为非归档模式,寻找归档的日志文件进行不下去;
(2)再查看redo 2是处于什么状态,如果处于active状态就比较麻烦(待研究)
(3)查看本机的redo 2是处于inactive状态,可以进行下一步操作
(4)又试了一下alter database open clear logs;
(5)这时尝试了一下 recover database until cancel,再alter database open,还是报文件5需要介质恢复
(6)接着又尝试将清空日志启动,因为需要的日志文件2状态为inactive,所以在断电之前,该日志文件已经归档提交,数据已经更新至数据文件,所以可以进行alter database open resetlogs;
(7)此时提示要使用flashcovery里的文件恢复:auto/cancel,但是去flashcovery路径下并没有找到提示的那个文件,选择auto和cancel没有用;
(8)又试着在pfile里添加隐含参数来强制启动数据库:(拉库,跳过实例恢复这个步骤)
#############添加隐含参数##################
*._allow_resetlogs_corruption=TRUE
*._allow_error_simulation=TRUE
##########################################
*.undo_managment=’manual’
*.undo_tablespace=’SYSTEM‘既然时启动需要回滚,那么之前的回滚段数据是不一致的,所以换一个回滚段来启动
(9)用pfile启动,数据库启动成功!
(10)但过了10分钟之后,数据库再次宕掉,查看日志文件报错ora00600、00474,分析是进程还再进行实例恢复,但是已经找不到可以恢复的记录,smon及将数据库停掉。

三、问题解决
1、Ora-00600、ora-00474网上找了很多办法都没有解决掉,无赖作最坏的打算,将客户需要的数据备份出来,准备重新建库导入;
2、在备份的时候发现有个表导出始终报ora-01555快照过旧,查询这个表也报这个错误,这个表确实比较大,于是尝试着增大undo表空间、修改undo_rentention都无果,SMON进程一致尝试实例恢复;
3、尝试创建undo表空间,再删除之前的表空间,删除undotbs1的时候发现系统提示ora-01548,发现回滚段中依然存在基于undotbs1的活动事物,后台还再尝试进行回滚,但是系统已无可提供回滚的记录支持select*from dba_rollback_segs;
4、要想把这些回滚信息删了,采取在pfile中添加一些参数来做:
*.undo_management=manual
*.undo_retention=10800
*.undo_tablespace=undotBS2新建的undo表空间
*._CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU1 , S Y S S M U 2 ,_SYSSMU2 ,SYSSMU2,_SYSSMU3 , S Y S S M U 3 ,_SYSSMU3 ,SYSSMU3,_SYSSMU4 , S Y S S M U 5 ,_SYSSMU5 ,SYSSMU5,_SYSSMU6 , S Y S S M U 7 ,_SYSSMU7 ,SYSSMU7,_SYSSMU8 , S Y S S M U 9 ,_SYSSMU9 ,SYSSMU9,_SYSSMU10$)
5、用pfile启动数据库成功,之前查询那个大表报ora-01555的错误不见了,删除undotbs1成功,再创建undotbs1
6、再重新修改undo表空间为自动管理,并且设置默认undo表空间为undotbs1,通过init参数修改。
*.undo_management=auto
*.undo_retention=10800
*.undo_tablespace=undotbs1
7、pfile启动数据库成功,创建spfile,再重用spfile启动,这样可以修改oracle的一些启动参数了。
问题解决!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值