机器断电以后,重新启动报如下错误:
在cmd命令窗口下,输入sqlplus / as sysdba
sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed May 1 11:28:49 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 276197376 bytes
Fixed Size 1344400 bytes
Variable Size 171969648 bytes
Database Buffers 96468992 bytes
Redo Buffers 6414336 bytes
Database mounted.
ORA-00600: internal error code, arguments: [kcratr_scan_lastbwr], [], [], [],[], [], [], [], [], [], [], []
在alert日志中有如下报错信息:Wed May 01 08:21:09 2013
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
:
Aborting crash recovery due to error 600
Errors in file /u01/app/oracle/diag/rdbms/asmdb/ASMDB/trace/ASMDB_ora_5210.trc:
ORA-00600: internal error code, arguments: [kcratr_scan_lastbwr], [], [], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/asmdb/ASMDB/trace/ASMDB_ora_5210.trc:
ORA-00600: internal error code, arguments: [kcratr_scan_lastbwr], [], [], [], [], [], [], [], [], [], [], []
ORA-600 signalled during: ALTER DATABASE OPEN /* db agent *//* {0:0:2} */...
在ASMDB_ora_5210.trc文件中有如下的信息:
..................
17755E0 03C10222 096F780B 36380113 6029D938 ["....xo...868.)`]
17755F0 D843E0FF 7CAA8000 02C1B000 88DC0248 [..C....|....H...]
Reading datafile '+ZHUXGASM/asmdb/datafile/undotbs1.258.813246367' for corruption at rdba: 0x00c00858 (file 3, block 2136)
Reread (file 3, block 2136) found same corrupt data (logically corrupt)
******** WRITE VERIFICATION FAILED ********
由此我们知道是因为数据库宕机之后,出现了逻辑坏块 (logically corrupt),因此需要进行介质恢复。
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
(数据库未打开)
SQL> startup mount;
ORACLE instance started.
Total System Global Area 276197376 bytes
Fixed Size 1344400 bytes
Variable Size 171969648 bytes
Database Buffers 96468992 bytes
Redo Buffers 6414336 bytes
Database mounted.
SQL> recover database;
Media recovery complete.
(恢复介质)
SQL> alter database open;
Database altered.
介质恢复之后,再打开数据库就好了。同时也可以用PL\SQL连接数据库了,good.