联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
朋友数据库启动遭遇ORA-00600[2663]
Mon Sep 22 19:24:20 2014 Thread 1 advanced to log sequence 17 (thread open) Thread 1 opened at log sequence 17 Current log# 17 seq# 17 mem# 0: /u02/orayali2/redo17.log Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Mon Sep 22 19:24:20 2014 SMON: enabling cache recovery Errors in file /u01/app/oracle/diag/rdbms/orayali2/orayali2/trace/orayali2_ora_20722.trc (incident=336180): ORA-00600: internal error code, arguments: [2663], [13], [3140023138], [13], [3141216403], [], [], [], [], [], [], [] Incident details in: /u01/app/oracle/diag/rdbms/orayali2/orayali2/incident/incdir_336180/orayali2_ora_20722_i336180.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Errors in file /u01/app/oracle/diag/rdbms/orayali2/orayali2/trace/orayali2_ora_20722.trc: ORA-00600: internal error code, arguments: [2663], [13], [3140023138], [13], [3141216403], [], [], [], [], [], [], [] Errors in file /u01/app/oracle/diag/rdbms/orayali2/orayali2/trace/orayali2_ora_20722.trc: ORA-00600: internal error code, arguments: [2663], [13], [3140023138], [13], [3141216403], [], [], [], [], [], [], [] Error 600 happened during db open, shutting down database USER (ospid: 20722): terminating the instance due to error 600 Instance terminated by USER, pid = 20722 ORA-1092 signalled during: alter database open... opiodr aborting process unknown ospid (20722) as a result of ORA-1092 Mon Sep 22 19:24:24 2014 ORA-1092 : opitsk aborting process
ORA-600[2663]与常见的ORA-600[2662]类似,都是由于block的scn大于文件头的scn导致,只不过错误的对象不一样而已.对于该类问题,我们的处理方法一般就是简单的推scn,但是这个库比较特殊11.2.0.3.5版本,一般方法无法推scn,因为收集操作日志有限,贴出核心操作步骤
[oracle@orayali2 OPatch]$ uname -a Linux orayali2 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux [oracle@orayali2 OPatch]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 22 19:09:18 2014 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount ORACLE instance started. Total System Global Area 1.6535E+10 bytes Fixed Size 2244792 bytes Variable Size 9898561352 bytes Database Buffers 6610223104 bytes Redo Buffers 24256512 bytes Database mounted. SQL> oradebug setmypid Statement processed. SQL> oradebug DUMPvar SGA kcsgscn_ kcslf kcsgscn_ [060019598, 0600195C8) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 60019278 00000000 SQL> oradebug poke 0x060019598 8 0x0000000000000040 BEFORE: [060019598, 0600195A0) = 00000000 00000000 AFTER: [060019598, 0600195A0) = 00000040 00000000 SQL> oradebug DUMPvar SGA kcsgscn_ kcslf kcsgscn_ [060019598, 0600195C8) = 00000040 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 60019278 00000000 SQL> alter database open; alter database open * ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-30012: undo tablespace 'SYSTEM' does not exist or of wrong type Process ID: 21174 Session ID: 1563 Serial number: 3
现在错误已经改变,而是出现了ORA-30012的错误
alter database open Beginning crash recovery of 1 threads parallel recovery started with 31 processes Started redo scan Completed redo scan read 4 KB redo, 0 data blocks need recovery Started redo application at Thread 1: logseq 17, block 2, scn 58974597984 Recovery of Online Redo Log: Thread 1 Group 17 Seq 17 Reading mem 0 Mem# 0: /u02/orayali2/redo17.log Completed redo application of 0.00MB Completed crash recovery at Thread 1: logseq 17, block 3, scn 58974617986 0 data blocks read, 0 data blocks written, 4 redo k-bytes read Mon Sep 22 19:30:05 2014 Thread 1 advanced to log sequence 18 (thread open) Thread 1 opened at log sequence 18 Current log# 18 seq# 18 mem# 0: /u02/orayali2/redo18.log Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Mon Sep 22 19:30:05 2014 SMON: enabling cache recovery Undo initialization errored: err:30012 serial:0 start:1143146928 end:1143147338 diff:410 (4 seconds) Errors in file /u01/app/oracle/diag/rdbms/orayali2/orayali2/trace/orayali2_ora_21174.trc: ORA-30012: undo tablespace 'SYSTEM' does not exist or of wrong type Errors in file /u01/app/oracle/diag/rdbms/orayali2/orayali2/trace/orayali2_ora_21174.trc: ORA-30012: undo tablespace 'SYSTEM' does not exist or of wrong type Error 30012 happened during db open, shutting down database USER (ospid: 21174): terminating the instance due to error 30012 Instance terminated by USER, pid = 21174 ORA-1092 signalled during: alter database open... opiodr aborting process unknown ospid (21174) as a result of ORA-1092 Mon Sep 22 19:30:08 2014 ORA-1092 : opitsk aborting process
猜测原因是undo设置有问题导致,检查果然发现undo_management=auto,而undo_tablespace=SYSTEM
SQL> startup mount ORACLE instance started. Total System Global Area 1.6535E+10 bytes Fixed Size 2244792 bytes Variable Size 9898561352 bytes Database Buffers 6610223104 bytes Redo Buffers 24256512 bytes Database mounted. SQL> show parameter undo; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 10800 undo_tablespace string SYSTEM SQL> alter system set undo_management=manual scope=spfile; System altered. SQL> shutdown immediate; ORA-01109: database not open Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 1.6535E+10 bytes Fixed Size 2244792 bytes Variable Size 9898561352 bytes Database Buffers 6610223104 bytes Redo Buffers 24256512 bytes Database mounted. Database opened.
解决该问题修改undo_management=manual即可