早上起来开启自己虚拟机里的版本为11.2.0.1.0的oracle数据库时报ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[13], [27474], [27484], [], [], [], [], [], [], []; 内部错误,难道让我有幸遇到了oracle bug;
查看告警日志:
Sun Apr 13 08:38:46 2014
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_1 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =27
LICENSE_MAX_USERS = 0
SYS auditing is enabled
Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options.
Using parameter settings in server-side spfile /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfilehaha.ora
System parameters with non-default values:
processes = 150
large_pool_size = 4M
java_pool_size = 4M
sga_target = 368M
memory_target = 0
memory_max_target = 520M
control_files = "+DATA/orcl/controlfile/current.256.818327067"
control_files = "+FRA/orcl/controlfile/current.256.818327071"
db_block_size = 8192
db_cache_size = 112M
_shared_io_pool_size = 0
compatible = "11.2.0.0.0"
db_create_file_dest = "+DATA"
db_recovery_file_dest = "+FRA"
db_recovery_file_dest_size= 4452M
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "SHARED"
audit_sys_operations = TRUE
db_domain = ""
instance_name = "HHHHH"
service_names = "PANDA"
dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
audit_file_dest = "/u01/app/oracle/admin/orcl/adump"
audit_trail = "DB_EXTENDED"
db_name = "PANDA"
open_cursors = 300
pga_aggregate_target = 144M
diagnostic_dest = "/u01/app/oracle"
Sun Apr 13 08:38:47 2014
PMON started with pid=2, OS id=6962
Sun Apr 13 08:38:47 2014
VKTM started with pid=3, OS id=6964 at elevated priority
VKTM running at (10)millisec precision with DBRM quantum (100)ms
Sun Apr 13 08:38:47 2014
GEN0 started with pid=4, OS id=6968
Sun Apr 13 08:38:47 2014
DIAG started with pid=5, OS id=6970
Sun Apr 13 08:38:47 2014
DBRM started with pid=6, OS id=6972
Sun Apr 13 08:38:47 2014
PSP0 started with pid=7, OS id=6974
Sun Apr 13 08:38:48 2014
DIA0 started with pid=8, OS id=6976
Sun Apr 13 08:38:48 2014
MMAN started with pid=9, OS id=6978
Sun Apr 13 08:38:48 2014
DBW0 started with pid=10, OS id=6980
Sun Apr 13 08:38:48 2014
LGWR started with pid=11, OS id=6982
Sun Apr 13 08:38:48 2014
CKPT started with pid=12, OS id=6984
Sun Apr 13 08:38:48 2014
SMON started with pid=13, OS id=6986
Sun Apr 13 08:38:49 2014
RECO started with pid=14, OS id=6988
Sun Apr 13 08:38:49 2014
RBAL started with pid=15, OS id=6990
Sun Apr 13 08:38:49 2014
ASMB started with pid=16, OS id=6992
Sun Apr 13 08:38:49 2014
MMON started with pid=17, OS id=6994
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
starting up 1 shared server(s) ...
Sun Apr 13 08:38:50 2014
MMNL started with pid=18, OS id=6996
ORACLE_BASE from environment = /u01/app/oracle
Sun Apr 13 08:38:50 2014
ALTER DATABASE MOUNT
NOTE: initiating MARK startup
Starting background process MARK
Sun Apr 13 08:38:51 2014
MARK started with pid=22, OS id=7005
NOTE: MARK has subscribed
NOTE: Loaded library: System
SUCCESS: diskgroup DATA was mounted
SUCCESS: diskgroup FRA was mounted
ERROR: failed to establish dependency between database PANDA and diskgroup resource ora.DATA.dg
ERROR: failed to establish dependency between database PANDA and diskgroup resource ora.FRA.dg
Successful mount of redo thread 1, with mount id 361806554
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT
Sun Apr 13 08:38:58 2014
ALTER DATABASE OPEN
Block change tracking file is current.
Beginning crash recovery of 1 threads
Started redo scan
Completed redo scan
read 36 KB redo, 31 data blocks need recovery
Errors in file /u01/app/oracle/diag/rdbms/panda/haha/trace/haha_ora_7022.trc (incident=14572):
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [13], [27474], [27484], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/panda/haha/incident/incdir_14572/haha_ora_7022_i14572.trc
Sun Apr 13 08:39:02 2014
Trace dumping is performing id=[cdmp_20140413083902]
Aborting crash recovery due to error 600
Errors in file /u01/app/oracle/diag/rdbms/panda/haha/trace/haha_ora_7022.trc:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [13], [27474], [27484], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/panda/haha/trace/haha_ora_7022.trc:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [13], [27474], [27484], [], [], [], [], [], [], []
ORA-600 signalled during: ALTER DATABASE OPEN...
Sun Apr 13 08:39:53 2014
Sweep [inc][14572]: completed
Sweep [inc2][14572]: completed
查看metalink ORA-600 [kcratr_nab_less_than_odr] during Instance Recovery after Database Crash (文档 ID 1299564.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.1 to 11.2.0.3
[Release 11.2]
Information in this document applies to any platform.
***Checked for relevance on 21-Sep-2012***
SYMPTOMS
Trying to open a Database after a Crash caused by Storage Problems the
Instance Recovery fails with :
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [219], [25020], [25021], []
The Database can't open at this Point. In the corresponding Tracefile we can find this Error Callstack:
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=1h50ks4ncswfn) -----
ALTER DATABASE OPEN
----- Call Stack Trace -----
ksedst1 <- ksedst <- dbkedDefDump <- ksedmp <- dbgexPhaseII <- dbgexProcessError <- dbgePostErrorKGE <- kgeasnmierr <- kcratr_odr_check <- kcratr <- kctrec <- kcvcrv <- kcfopd <- adbdrv <- opiexe <- opiosq0 <- kpoal8 <- opiodr <- ttcpip <- opitsk <- opiino <- opiodr <- opidrv <- sou2o <- opimai_real <- ssthrdmain <- main <- start
CAUSE
This Problem is caused by Storage Problem of the Database Files. The Subsystem (eg. SAN) crashed while the Database was open. The Database then crashed since the Database Files were not accessible anymore.
This caused a lost Write into the Online RedoLogs and so Instance Recovery is not possible and raising the ORA-600.
SOLUTION
There are two possible Solutions:
1. If you could restore your Storage Environment and the Online
RedoLogs from the Time of the crash you can try a manual Recovery
followed by a RESETLOGS:
SQL> startup mount;
SQL> recover database until cancel using backup controlfile;
-> manually provide Online RedoLog containing the last (current)
Sequence when asked, eg.
ORA-00279: change 100000 generated at xx/xx/xxxx xx:xx:xx needed for thread 1
ORA-00289: suggestion :
/flash_recovery/archivelog/xxxx_xx_xx/o1_mf_1_100_%u_.arc
ORA-00280: change 100000 for thread 1 is in sequence #100
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/ora/oradata/dbtest/redo04_1.rdo
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;
2. If step1. fails or you don't have the full Set of Files you have to restore and recover the Database from a recent Backup.
使用metalink提供的第一种方式解决了问题:
SQL> set linesize 1000
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 13 52428800 512 2 NO CURRENT 3366812 07-APR-14 2.8147E+14
3 1 12 52428800 512 2 YES INACTIVE 3339008 07-APR-14 3366812 07-APR-14
2 1 11 52428800 512 2 YES INACTIVE 3309748 06-APR-14 3339008 07-APR-14
SQL> col member for a60
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------------------------------------ ---
1 ONLINE +DATA/panda/onlinelog/group_1.257.842997659 NO
1 ONLINE +FRA/panda/onlinelog/group_1.257.842997667 YES
2 ONLINE +DATA/panda/onlinelog/group_2.258.842997671 NO
2 ONLINE +FRA/panda/onlinelog/group_2.258.842997673 YES
3 ONLINE +DATA/panda/onlinelog/group_3.259.842997677 NO
3 ONLINE +FRA/panda/onlinelog/group_3.259.842997679 YES
6 rows selected.
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 3366812 generated at 04/07/2014 22:05:46 needed for thread 1
ORA-00289: suggestion : +FRA
ORA-00280: change 3366812 for thread 1 is in sequence #13
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
+FRA/panda/onlinelog/group_1.257.842997667
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;
Database altered.