ORA-600(ktecgeb-2)错误

还是一个ORA-600错误,这个错误出现在10.2环境中。
客户的DATA GUARD环境中的物理备库,由于要进行测试,因此设置了FLASHBACK ON,创建了恢复点,然后激活成主库并打开,准备进行测试,但是发现在后台告警日志中出现了这个错误,详细的错误信息如下:

Completed: ALTER DATABASE OPEN
Wed Oct 26 22:08:27 2011
Errors IN file /oracle/admin/standdb/bdump/standdb_j003_446902.trc:
ORA-00600: internal error code, arguments: [ktecgeb-2], [788585233], [0], [], [], [], [], []
Wed Oct 26 22:08:33 2011
Errors IN file /oracle/admin/standdb/bdump/standdb_j003_446902.trc:
ORA-00600: internal error code, arguments: [ORA-00600: internal error code, arguments: [ktecgeb-2], [788585233], [0], [], [], [], [], []
ORA-06512: at "SYS.PRVT_ADVISOR", line 1624
ORA-06512: at "SYS.DBMS_ADVISOR", line 186
ORA-06512: at "SYS.DBMS_SPACE", line 1500
ORA-06512: at "SYS.DBMS_SPACE", line 1566
], [], [], [], [], [], [], []

显然导致错误产生的原因是后台JOB的运行,而这个JOB跑的任务是检查对象空间使用情况。继续检查详细TRACE信息:

oracle@srv4:/oracle/admin/standdb/bdump/more /oracle/admin/standdb/bdump/standdb_j003_446902.trc
/oracle/admin/standdb/bdump/standdb_j003_446902.trc
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options
ORACLE_HOME = /oracle/product/db10gr2
System name:    AIX
Node name:      srv4
Release:        3
Version:        5
Machine:        0055053E4C00
Instance name: standdb
Redo thread mounted BY this instance: 1
Oracle process NUMBER: 20
Unix process pid: 446902, image: oracle@srv4 (J003)
 
*** ACTION NAME:(AUTO_SPACE_ADVISOR_JOB) 2011-10-26 22:08:27.409
*** MODULE NAME:(DBMS_SCHEDULER) 2011-10-26 22:08:27.409
*** SERVICE NAME:(SYS$USERS) 2011-10-26 22:08:27.409
*** SESSION ID:(1081.3) 2011-10-26 22:08:27.409
*** 2011-10-26 22:08:27.409
ksedmp: internal OR fatal error
ORA-00600: internal error code, arguments: [ktecgeb-2], [788585233], [0], [], [], [], [], []
CURRENT SQL statement FOR this SESSION:
SELECT STATUS FROM TABLE( DBMS_SPACE.VERIFY_SHRINK_CANDIDATE_TBF( :B1 , :B2 , :B3 , :B4 , :B5 ))
----- PL/SQL Call Stack -----
  object      line  object
  handle    NUMBER  name
700000243900620      1788  package body SYS.DBMS_SPACE
700000243900620      1806  package body SYS.DBMS_SPACE
700000242c6dc98         1  anonymous block
700000242ea5808      1698  SYS.WRI$_ADV_OBJSPACE_TREND_T
700000242fce6c0      1535  package body SYS.PRVT_ADVISOR
700000242fce6c0      1618  package body SYS.PRVT_ADVISOR
700000242fed300       186  package body SYS.DBMS_ADVISOR
700000243900620      1500  package body SYS.DBMS_SPACE
700000243900620      1566  package body SYS.DBMS_SPACE
----- Call Stack Trace -----
calling              CALL     entry                argument VALUES IN hex      
location             TYPE     point                (? means dubious VALUE)     
-------------------- -------- -------------------- ----------------------------
ksedst+001c          bl       ksedst1              000000000 ? FFFFFFFFFFE5C14 ?
ksedmp+0290          bl       ksedst               104A557A8 ?
ksfdmp+0018          bl       03F4CD24             
kgerinv+00dc         bl       _ptrgl               
kgeasnmierr+004c     bl       kgerinv              000000000 ? FFFFFFFFFFE67D0 ?
                                                   FFFFFFFFFFE6328 ? 02F00DB14 ?
                                                   FFFFFFFFFFE6250 ?
ktecgeb+01bc         bl       kgeasnmierr          1101957F8 ? 1104C40E0 ?
                                                   104D81670 ? 200000002 ?
                                                   000000000 ? 02F00DB11 ?
                                                   000000000 ? 000000000 ?
kteinlast+01b4       bl       ktecgeb              104D816C0 ? 104D816B0 ?
                                                   104D816A0 ? 104D81698 ?
ktsa_verify_shrink_  bl       kteinlast            FFFFFFFFFFE6730 ?
candidate+02f4                                     FFFFFFFFFFE6780 ? 100000000 ?
                                                   700000242C6DC98 ?
ktsaps_verify_shrin  bl       ktsa_verify_shrink_  FFFFFFFFFFE6730 ?
k_candidate+0418              candidate            FFFFFFFFFFE6780 ? 110195978 ?
                                                   02D8C0274 ? 700000242C6DC98 ?
pevm_icd_call_commo  bl       _ptrgl               
n+03f8                                             
pfrinstr_ICAL+00c8   bl       pevm_icd_call_commo  1109064B0 ? 000000000 ?
                              n                    1438BD4EF ? 6000000000000 ?
                                                   6000000000008 ? 0FFFE70A0 ?
                                                   110900230 ?
pfrrun_no_tool+005c  bl       _ptrgl               
pfrrun+1014          bl       pfrrun_no_tool       FFFFFFFFFFE70C0 ?
                                                   7000002421FC0E8 ?
                                                   7000002421FC0E8 ?
plsql_run+06b4       bl       pfrrun               1109064B0 ?
peicnt+0224          bl       plsql_run            1109064B0 ? 100007FFFFFFF ?
                                                   000000000 ?
kkxuexe+0360         bl       peicnt               1108BC3B8 ? 1109064B0 ?
kkxmpsexe+029c       bl       03F4AB20             
kgmexwi+056c         bl       _ptrgl               
kgmexec+0bcc         bl       kgmexwi              1101957F8 ? 000000000 ?
                                                   FFFFFFFFFFE9320 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   07FFFFFF8 ? 000000000 ?

从TRACE文件不难看出,Oracle在验证数据文件是否空间收缩的候选对象时报错。根据metalink记录的bug,并没有和当前现象吻合的记录,不过大部分问题都与ASSM管理表空间有关。
对于这个错误而言,对于备库可以简单的忽略,对于引起错误的JOB也可以停用,但是这个错误反映出备库的状态不正常,因此这个备库作为主库的备份是不安全的,应该通过DBV之类的工具检查数据文件是否存在坏块,建议对报错的数据文件重新从主库获取COPY,来避免坏块或逻辑错误的隐患。

This entry was posted in BUG and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *