ORA-01194: file 1 needs more recovery to be consistent

今天公司的Oracle数据库突然当掉了,这可是我们最核心的数据库,非常紧张。先尝试shutdown,可以正常shutdown,但是执行startup的时候报错,报错信息如下:
Errors in file /opt/oracle9/oracle/admin/ora9/udump/ora9_ora_29602.trc:
ORA-00314: log 1 of thread 1, expected sequence# 1394 doesn't match 1018
ORA-00312: online log 1 thread 1: '/var/oracle/redolog/redo01a.log'
Sun Nov  3 01:21:43 2013
Errors in file /opt/oracle9/oracle/admin/ora9/udump/ora9_ora_29602.trc:
ORA-00600: internal error code, arguments: [ksfdchkfobrerr1], [0x000000000], [0x000000000], [], [], [], [], []
ORA-600 signalled during: ALTER DATABASE OPEN...
Sun Nov  3 10:48:35 2013
Errors in file /opt/oracle9/oracle/admin/ora9/udump/ora9_ora_1561.trc:
ORA-27037: unable to obtain file status
HP-UX Error: 2: No such file or directory
刚开始觉得是重做日志的问题,就想clear掉重做日志,结果是当前日志出了问题,还没有归档不能clear掉,后来尝试startup force,还是有问题,如是启用recover database until cancel,等待输入的时候因为没有搞明白是什么问题就选择了auto,结果照样报错,后来咨询负责公司oracle数据库技术支持的工程师,工程师要我把那几个报错文件发给他,他说挺严重的,就让我把数据库当掉,然后将数据库、控制文件、重做日志文件和配置文件备份,然后执行rman恢复(前天晚上做了rman全备份,并且备份成功了。)200多G的数据文件,拷贝了一天,等到晚上终于拷贝完了,我回家总觉得不对劲,觉得是归档文件丢失了,就想看看归档日志丢失怎么恢复,然后就找到下面的方法,试了一下果然就恢复了,早知道如此就不用停掉业务一天了。

今天打开数据库的时候不知怎么弄的,不能open了,先是提示数据库没有正常关闭,
使用shutdown immediate,等了一会没有结束,于是直接结束了进程,后来又出来一个问题
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'

估计应该是日志的问题,又试了下:
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 669109 generated at 09/12/2009 18:47:00 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2009_09_13/o1_mf_1_10_%u_.ar
c
ORA-00280: change 669109 for thread 1 is in sequence #10


Specify log: {=suggested | filename | AUTO | CANCEL}

根据上面提示的内容,注意到 ‘change 669109 ’ 和 ‘sequence #10’
从网上看到一条语句,可以查出redo logs ,注意要用sys:
SQL> conn sys/oracle as sysdba                         
Connected.
SQL> select v1.group#, member, sequence#, first_change# 
  2  from v$log v1, v$logfile v2
  3  where v1.group# = v2.group#;

从结果里根据 sequence# 和 first_change# 找到了要用到的log file name:
/u01/app/oracle/oradata/orcl/redo03.log

在 Specify log: {=suggested | filename | AUTO | CANCEL} 下面输入:
/u01/app/oracle/oradata/orcl/redo03.log
提示:
Log applied.
Media recovery complete.

接着:
SQL> alter database open resetlogs;

Database altered.

这样,就吧问题解决了。
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值