客户反映说他们的系统不能上传附件了,上传附件的时候就报ORA-600错误,具体错误如下:ORA-00600: internal error code, arguments: [6002], [32], [0], [2], [0], [], [], [], [], [], [], [],
网上有很多针对6002的处理方法,说的原因基本都是说表上的索引有问题,MOS上也有相关说明,具体请参看MOS文章[ID 47449.1], 用户也根据这个思路进行了处理,对表上的索引进行了rebuild,后来又将索引删除,在create index,但是问题一直还是出现。
以下是我的处理过程,首先我们来看trace文件:
Dump continued from file: /u01/app/Oracle/diag/rdbms/cisd/CISD1/trace/CISD1_ora_25643.trc
ORA-00600: internal error code, arguments: [6002], [32], [0], [2], [0], [], [], [], [], [], [], []
========= Dump for incident 96487 (ORA 600 [6002]) ========
----- Beginning of Customized Incident Dump(s) -----
GLOBAL CACHE ELEMENT DUMP (address: 0xc0000000efcf2e28):
id1: 0x1e362d id2: 0x10 pkey: OBJ#83301 block: (16/1979949)
lock: S rls: 0x0 acq: 0x0 latch: 11
flags: 0x20 fair: 0 recovery: 0 fpin: 'kdiwh22: kdifind'
bscn: 0x0.0 bctx: 0x0000000000000000 write: 0 scan: 0x0
lcp: 0x0000000000000000 lnk: [NULL] lch: [0xc0000013cf1dd768,0xc0000013cf1dd768]
seq: 8 hist: 334 297 67 143:0 85 16 352 32
LIST OF BUFFERS LINKED TO THIS GLOBAL CACHE ELEMENT:
flg: 0x00000000 lflg: 0x2 state: SCURRENT tsn: 6 tsh: 0 mode: SHR
pin: 'kdiwh22: kdifind'
addr: 0xc0000013cf1dd638 obj: 83301 cls: DATA bscn: 0x0.0
GCS CLIENT 0xc0000000efcf2ea0,1 resp[0x0000000000000000,0x1e362d.10] pkey 83301.0
grant 1 cvt 0 mdrole 0x1 st 0x100 lst 0x20 GRANTQ rl LOCAL
master 2 owner 1 sid 1 remote[0xc0000017e8f57c70,2] hist 0x11e16
history 0x16.0x3c.0x4.0x0.0x0.0x0.0x0.0x0.0x0.0x0.
cflag 0x0 sender 2 flags 0x0 replay# 0 abast 0x0000000000000000.x0.1 dbmap 0x0000000000000000
disk: 0x0000.00000000 write request: 0x0000.00000000
pi scn: 0x0000.00000000 sq[0x0000000000000000,0x0000000000000000]
msgseq 0x1 updseq 0x0 reqids[1,0,0] infop 0x0000000000000000 lockseq x4e1a
pkey 83301.0
hv 70 [stat 0x0, 2->2, wm 32768, RMno 0, reminc 4, dom 0]
kjga st 0x4, step 0.0.0, cinc 4, rmno 4, flags 0x0
lb 0, hb 0, myb 468677, drmb 468677, apifrz 0
GCS CLIENT END
2014-08-07 09:23:51.348026 : kjbmbassert [0x1e362d.10]
2014-08-07 09:23:51.348069 : kjbmsassert(0x1e362d.10)(2)
----- End of Customized Incident Dump(s) -----
*** 2014-08-07 09:23:51.399
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=6frrb2h7z863a) -----
insert into T_MX_ATTACHMENT (TABLE_NAME, PK_VAL, ATT_NAME, ATT_PATH, COL_NAME, ATT_SIZE, ATT_FILE, ATTACHMENT_ID) values (:1, :2, :3, :4, :5, :6, :7, :8)
...省略部分内容
GLOBAL CACHE ELEMENT DUMP (address: 0xc0000000efcf2e28):
id1: 0x1e362d id2: 0x10 pkey: OBJ#83301 block: (16/1979949)
lock: S rls: 0x0 acq: 0x0 latch: 11
flags: 0x20 fair: 0 recovery: 0 fpin: 'kdiwh22: kdifind'
bscn: 0x0.0 bctx: 0x0000000000000000 write: 0 scan: 0x0
lcp: 0x0000000000000000 lnk: [NULL] lch: [0xc0000013cf1dd768,0xc0000013cf1dd768]
seq: 8 hist: 334 297 67 143:0 85 16 352 32
LIST OF BUFFERS LINKED TO THIS GLOBAL CACHE ELEMENT:
flg: 0x00000000 lflg: 0x2 state: SCURRENT tsn: 6 tsh: 0 mode: SHR
pin: 'kdiwh22: kdifind'
addr: 0xc0000013cf1dd638 obj: 83301 cls: DATA bscn: 0x0.0
buffer tsn: 6 rdba: 0x041e362d (16/1979949)
scn: 0x0000.00000000 seq: 0x01 flg: 0x05 tail: 0x00000001
frmt: 0x02 chkval: 0x3395 type: 0x00=unknown
Hex dump of block: st=0, typ_found=0
Dump of memory from 0xC0000013C78FA000 to 0xC0000013C78FC000
...省略部分内容
GLOBAL CACHE ELEMENT DUMP (address: 0xc0000000bfbc5118):
id1: 0x12d4ca id2: 0x6 pkey: OBJ#83300 block: (6/1234122)
lock: S rls: 0x0 acq: 0x0 latch: 11
flags: 0x20 fair: 0 recovery: 0 fpin: 'ktsphwh39: ktspisc'
bscn: 0x0.2a5170ba bctx: 0x0000000000000000 write: 0 scan: 0x0
lcp: 0x0000000000000000 lnk: [NULL] lch: [0xc0000013ef335e28,0xc0000013ef335e28]
seq: 91 hist: 334 42 4 37:1 113 238 180 145:0 28 340 225 212 72
LIST OF BUFFERS LINKED TO THIS GLOBAL CACHE ELEMENT:
flg: 0x0a200000 state: SCURRENT tsn: 6 tsh: 148
addr: 0xc0000013ef335cf8 obj: 83300 cls: SEG HEAD bscn: 0x0.2a5170ba
BH (0xc00000142ee9af48) file#: 6 rdba: 0x0192d4ca (6/1234122) class: 4 ba: 0xc0000014231f6000
set: 91 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 285,1
dbwrid: 2 obj: 83300 objn: 83300 tsn: 6 afn: 6 hint: f
hash: [0xc000001884264b78,0xc0000013ef335da8] lru: [0xc0000013ef32d6c0,0xc00000143ee399d8]
lru-flags: moved_to_tail
ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
st: CR md: NULL fpin: 'ktsphwh39: ktspisc' tch: 1 le: 0x0000000000000000
cr: [scn: 0x0.2a50bc59],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x0.2a50bc59],[sfl: 0x0],[lc: 0x0.0]
flags: block_written_once redo_since_read
buffer tsn: 6 rdba: 0x0192d4ca (6/1234122)
scn: 0x0000.2a50b974 seq: 0x02 flg: 0x04 tail: 0xb9742302
frmt: 0x02 chkval: 0x4fff type: 0x23=PAGETABLE SEGMENT HEADER
Hex dump of block: st=0, typ_found=1
Dump of memory from 0xC0000014231F6000 to 0xC0000014231F8000
注意到引起ORA-600错误的为一个insert语句,对应的表为T_MX_ATTACHMENT,与用户确认后得知,这个表正式用来存放附件的表。还注意两个对象编号,按如下方式查询两个出现问题的对象类型:
- select object_name,object_type,created,status,last_ddl_time
- from user_objects
- where object_id in('83300','83301');
查询结果:
name type CREATED STATUS LAST_DDL
SYS_LOB0000083299C00008$$ LOB 2014-4-30 14:42:06 VALID 2014-4-30 14:42:06
SYS_IL0000083299C00008$$ INDEX 2014-4-30 14:42:06 VALID 2014-4-30 14:42:06
到此,问题逐渐清晰了,引起600错误的是lob字段和lob字段的索引,接下来确认了一下lob字段和lob字段索引的大小,得知lob字段接近200G,所以建议用户在夜间没有用户使用的时候执行如下操作:
alter table T_MX_ATTACHMENT move lob(ATT_FILE) store as (tablespace SGCIS) parallel 10 nologging;
alter table T_MX_ATTACHMENT logging parallel 1;
ANALYZE TABLE T_MX_ATTACHMENT VALIDATE STRUCTURE CASCADE;
对lob字段进行move后故障成功解决。
: