分析过程:
1、tjcw数据库后台alert告警大量出现如下的ora-00600错误告警
Fri Jul 06 15:59:13 2012
Errors in file f:Oracleadmintjcwudumptjcw_ora_3200.trc:
ORA-00600: 内部错误代码,参数: [6122], [0], [1], [0], [], [], [], []
Recovery of Online Redo Log: Thread 1 Group 2 Seq 3588 Reading mem 0
Mem# 0 errs 0: F:ORACLEORADATATJCWREDO02.LOG
2、从 f:oracleadmintjcwudumptjcw_ora_3200.trc日志可以看到如下的信息。
Block header dump: 0x0248f58c
Object id on Block? Y
seg/obj: 0x19d7e csc: 0xbae.b4053409 itc: 120 flg: E typ: 2 - INDEX
brn: 0 bdba: 0x248f589 ver: 0x01
inc: 0 exflg: 0
3、从oracle metalink的doc[ID 99300.1],可以看出ora-00600 [6122]和索引损坏有关。
4、从上面2,3两步基本上可以确认是索引损坏导致600错误。
5、现在需要证实是否真的是索引损坏导致的错误。
A. 从seg/obj: 0x19d7e可以计算出这个Oracle的对象的object_id,因为是16机制,
需要换算成10机制。
0x19d7e=14+7*16+13*16*16+9*16*16*16+1*16*16*16*16=105854
B. 找出是什么数据库对象。
SQL> select owenr,object_name,object_type from dba_objects where
object_id=105854;
OWNER OBJECT_NAME OBJECT_TYPE
----------- --------------- ----------------------------------
BDCWYB SYS_EVENT_IDX_1 INDEX
C. 这个索引存放在哪些Datafile上面。
SQL>select distinct FILE_ID from dba_extents where wner='BDCWYB' and
segment_name='SYS_EVENT_IDX_1';
FILE_ID
----------
9
SQL> select file_name from dba_data_files where file_id=9;
FILE_NAME
---------------------------------------------------------------
F:ORACLEORADATATJCWUSERS01.DBF
D. 是用Oracle dbv工具测试user01.dbf是否真的存在坏块. 从失败的页总数
(索引):1再次确认存在索引坏块.
C: >dbv file=F:ORACLEORADATATJCWUSERS01.DBF
blocksize=8192
DBVERIFY: Release 9.2.0.1.0 - Production on 星期五 7月 6 15:46:23
2012
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
DBVERIFY - 验证正在开始 : FILE =
F:ORACLEORADATATJCWUSERS01.DBF
Block Checking: DBA = 38335884, Block Type = KTB-managed data
block
**** actual rows locked by itl 1 = 1 != # in trans. header = 2
---- end index block validation
页 587148 失败,校验代码为 6401
DBVERIFY - 验证完成
检查的页总数 :589600
处理的页总数(数据):455602
失败的页总数(数据):0
处理的页总数(索引):113755
失败的页总数(索引):1
处理的页总数(其它):12760
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数 :7483
标记为损坏的总页数:0
汇入的页总数 :0
6、从上面的分析得知,确实是索引坏块导致的600错误,故需要重建索引,消除600告警.
处理步骤:
1. 从上面的分析得知确实是索引坏块导致的600错误,现在重建索引,不能使用rebuild index,因为索引损坏的部分是索引段头,rebuild index会报如下的错误。
SQL> alter index BDCWYB.SYS_EVENT_IDX_1
rebuild;
alter index BDCWYB.SYS_EVENT_IDX_1 rebuild c
*
ERROR 位于第 1 行:
ORA-00600: 内部错误代码,参数: [6122], [0], [1], [0], [], [], [], []
drop index BDCWYB.SYS_EVENT_IDX_1;
create index BDCWYB.SYS_EVENT_IDX_1 on BDCWYB.SYS_EVENT(EVT_GUID)
tablespace users;
2. 索引重建好了之后之后,再次检查是否还存在坏块,现在无坏块。
C:>dbv file=F:ORACLEORADATATJCWUSERS01.DBF blocksize=8192
DBVERIFY: Release 9.2.0.1.0 - Production on 星期五 7月 6 16:35:38 2012
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - 验证正在开始 : FILE = F:ORACLEORADATATJCWUSERS01.DBF
DBVERIFY - 验证完成
检查的页总数 :590720
处理的页总数(数据):455602
失败的页总数(数据):0
处理的页总数(索引):114951
失败的页总数(索引):0
处理的页总数(其它):12760
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数 :7407
标记为损坏的总页数:0
汇入的页总数 :0
当前位置: 数据库>oracle
ORA-00600: 内部错误代码,参数: [6122]
来源: 互联网 发布时间:2017-05-01
本文导语: 分析过程: 1、tjcw数据库后台alert告警大量出现如下的ora-00600错误告警 Fri Jul 06 15:59:13 2012 Errors in file f:Oracleadmintjcwudumptjcw_ora_3200.trc: ORA-00600: 内部错误代码,参数: [6122], [0], [1], [0], [], [], [], [] ...