虚拟机突然关闭后,启动数据库,报错:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [44], [250285], [250286]
查询告警日志alter和trace文件,获取报错原因:
由于服务器突然关闭,导致LGWR写联机日志文件时失败,下次重新启动数据库时,需要做实例级恢复,而又无法从联机日志文件里获取到这些redo信息,因为关机时,写日志失败了。
查看当前日志情况:
SQL> select group#,sequence#,status,first_time,next_change# from v$log;
GROUP# SEQUENCE# STATUS FIRST_TIME NEXT_CHANGE#
1 42 INACTIVE 2019-03-09 03:00:53 1506891
4 43 INACTIVE 2019-03-10 10:10:21 1509950
3 41 INACTIVE 2019-03-08 00:00:17 1413500
2 44 CURRENT 2019-03-10 11:00:24 2.8147E+14
当前是第二个日志组
查看日志文件路径
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
1 ONLINE /data/tgdb/redo01.log NO
2 ONLINE /data/tgdb/redo02.log NO
3 ONLINE /data/tgdb/redo03.log NO
4 ONLINE /data/tgdb/redo04.log NO
进行恢复数据库,指定redo02.log日志
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 1509950 generated at 03/10/2019 11:00:24 needed for thread 1
ORA-00289: suggestion : /archive/TGDB/archivelog/2019_04_16/o1_mf_1_44_%u_.arc
ORA-00280: change 1509950 for thread 1 is in sequence #44
Specify log: {=suggested | filename | AUTO | CANCEL}
/data/tgdb/redo02.log
Log applied.
Media recovery complete.
恢复完成后启动数据库
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
使用 RESETLOGS or NORESETLOGS 选项进行启动,否则报错
SQL> alter database open resetlogs;
Database altered.
数据库启动完成
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
TGDB READ WRITE