1,环境介绍
数据库版本为11.2.0.3,在OPEN模式,alert日志出现ORA-00600 2252的错误,报错的信息如下:
ORA-00600: internal error code, arguments: [2252], [26386], [2701365], [3580], [1827586048], [], [], [], [], [], [], []
2,分析过程
查看incident中的详细信息,在incident日志中,可以看到出发报错的sql语句,及绑定变量和执行计划等详细信息。还可以看到sql语句正在访问的块的dump信息。下面重点查看看看块的dump信息:
GLOBAL CACHE ELEMENT DUMP (address: 0x3abf6da78):
id1: 0x19e8c2 id2: 0x6d pkey: OBJ#3075052 block: (109/1697986)
lock: S rls: 0x0 acq: 0x0 latch: 13
flags: 0x20 fair: 0 recovery: 0 fpin: 'kdswh11: kdst_fetch'
bscn: 0x0.0 bctx: (nil) write: 0 scan: 0x0
lcp: (nil) lnk: [NULL] lch: [0x317ae1fb0,0x317ae1fb0]
seq: 212 hist: 66 144:0 192 352 32 197 48 121 239 144:0 7 352 32 197
LIST OF BUFFERS LINKED TO THIS GLOBAL CACHE ELEMENT:
flg: 0x00080000 state: SCURRENT tsn: 6 tsh: 1 mode: SHR 这里看到块的状态。
addr: 0x317ae1e78 obj: 3075052 cls: DATA bscn: 0x6712.293835 这里是对象的基本信息
Encrypted block <6, 458877122> content will not be dumped. Dumping header only.
buffer tsn: 6 rdba: 0x32343030 (200/3420208)
scn: 0x6712.00293835 seq: 0x37 flg: 0x5a tail: 0x34333735 这里看到HEADER DUMP的信息,SCN的值是0x6712.00293835。
frmt: 0x00 chkval: 0x0c73 type: 0x30=unknown
Hex dump of corrupt header 4 = CORRUPT
BH (0x317ae1e78) file#: 109 rdba: 0x1b59e8c2 (109/1697986) class: 1 ba: 0x314600000
set: 78 pool: 3 bsz: 8192 bsi: 0 sflg: 1 pwc: 0,25
dbwrid: 1 obj: 3075052 objn: 3067162 tsn: 6 afn: 109 hint: f
hash: [0x6da54ff60,0x6da54ff60] lru: [0x283c241e8,0x2cfb7a1a8]
ckptq: [NULL] fileq: [NULL] objq: [0x1ebc892f0,0x2cfb7a1d0] objaq: [0x1ebc89300,0x2cfb7a1e0]
use: [NULL] wait: [NULL] fast-cr-pins: 1
st: SCURRENT md: NULL fpin: 'kdswh11: kdst_fetch' tch: 1 le: 0x3abf6da78
flags: only_sequential_access
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
Encrypted block <6, 458877122> content will not be dumped. Dumping header only.
buffer tsn: 6 rdba: 0x32343030 (200/3420208)
scn: 0x6712.00293835 seq: 0x37 flg: 0x5a tail: 0x34333735
frmt: 0x00 chkval: 0x0c73 type: 0x30=unknown
Hex dump of corrupt header 4 = CORRUPT
0x6712.293835会快在内存的scn值,这里是16进制,转成10进制,就是ORA-00600报错的后来的内存。
手动dump块,查看块中SCN的信息:
Block header dump: 0x1b59e8bf
Object id on Block? Y
seg/obj: 0x2eebec csc: 0xdf3.42a08fd3 itc: 3 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1b59e602 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0065.00a.000a6d82 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x03 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
块在物理上存放的SCN的信息是正确的,只是在内存中的块是错误的。
3,处理方案
刷新buffer cache就可解决故障,是什么原因导致在内存中数据的SCN值不一致,目前在MOS中,还没有找到在ORA-00600 2252在DATA块上面的BUG。