Skip to content

ORA-00600: 内部错误代码, 参数: [ktecgetsh-inc], [1], [], [], [], [], [], []

 

系统 :aix 53

版本: 10.2.0.3

 

Errors in file /oracle/app/oracle/admin/sxsi/udump/sxsi_ora_909628.trc:
ORA-00600: 内部错误代码, 参数: [ktecgetsh-inc], [1], [], [], [], [], [], []

处理过程:

 

3.1查看数据库等待事件:

确定当前session没有任何等待事件

SQL> select sid from v$mystat where rowed <=1;

SQL> select sid,event,p1,p1text from v$session

     

 

3.3定位出现问题的ACA的表:

SQL> select * from tab where tname like '%ACA6%';

 

TNAME                          TABTYPE  CLUSTERID

—————————— ——- ———-

ACA6                           TABLE

ACA60701                       TABLE

ACA6A                          TABLE

ACA6B                          TABLE

ACA6C                          TABLE

ACA6MERGE                      TABLE

ACA6MOVE                       TABLE

ACA6_BACKUP                    TABLE

ACA6_CW                        TABLE

ACA6_DEF                       TABLE

ACA6_TEMP                      TABLE

 

TNAME                          TABTYPE  CLUSTERID

—————————— ——- ———-

ACA6_TZ                        TABLE

F_ACA6                         TABLE

F_ACA6_1201                    TABLE

F_ACA6_BAK_20100629            TABLE

MLOG$_ACA6                     TABLE

ZZZ_ACA6_12                    TABLE

ZZZ_ACA6_DB                    TABLE

ZZZ_ACA6_YL                    TABLE

  找出ACA6

 

3.4  通过视图dba_indexes查看ACA6表上的索引

SQL> select INDEX_NAME,INDEX_TYPE from dba_indexes where table_name = 'ACA6';

 

INDEX_NAME                     INDEX_TYPE

—————————— —————————

IDX_ACA6_AAC001_AAE140         NORMAL

PK_ACA6                        NORMAL

IDX_ACA6_AAC001                NORMAL

IDX_ACA6_AAE063                NORMAL

IDX_ACA6_AAE074                NORMAL

IDX_ACA6_AAB001                NORMAL

IDX_ACA6_EAE038                NORMAL

IDX_ACA6_AAE002                NORMAL

IDX_ACA6_PRSENO                NORMAL

PK_ACA6                        NORMAL

IDX_ACA6_PRSENO                NORMAL

 

INDEX_NAME                     INDEX_TYPE

—————————— —————————

PK_ACA6                        NORMAL

IDX_ACA6_AAC001                NORMAL

IDX_ACA6_AAE002                NORMAL

IDX_ACA6_AAE063                NORMAL

IDX_ACA6_AAE074                NORMAL

IDX_ACA6_EAE038                NORMAL

IDX_ACA6_PRSENO                NORMAL

 

已选择18行。

  由上面的查询可以看出此表有18个索引,如果全部重建,那么需要的时间需要比较长,这里我们根据错误以及内部原理推出错误只局限在出现错误的对应的分区表上的索引,所以只要找出对应的分区表上的索引即可。

3.5  根据客户提供的aca6表的aca6_6分区进行拆分,那么报错也是这个分区表:

执行

SQL>Select * from aca6 partition(aca6_1) where ….;

 

SQL>select * from aca6 partition(aca6_6) where aae002='125485532354'; 

ORA-10632:invalid rowid

   得出的是 分区表aca6 1-5partition都是正常的,只有执行拆分操作的6号分区出现问题,根据查询到的ace002索引为此分区aae002字段上的索引,吕与我采用CATS尝试创建该表备份,并重建ACE002索引。

1.6    通过下面语句执行cats以及重建

 

Create table aca6_6bak as select * from aca6 partition(aca6_6);

报错:ora 10632.

终止业务服务器,尝试重建索引:

select dbms_metadata.get_ddl('index','IDX_ACA6_AAE002') from dual;

然后将结果粘贴执行,

报错:ora 10632

  

发现事故非常严重,已经无法访问表,无法用cats和重建索引方式解决这个问题,逐建议采用备份恢复,但是最后发现备份恢复不出

 3.7 执行hint全扫分析

 

select /*+ parallel(aca6,2) */ count(*) from aca6 partition(aca6_6);

 3725620 rows

ora  10632invaild rowid

这里标明,表数据还能扫描,还没全坏继续执行

SQL> select * from aca6 partition(aca6_6) where rownum <= 10000

观察等待事件

SQL> select sidevent,p1,p2 from v$session where sid in (select sid from v$mystat where

Rownum <=1);

SID EVENT

———- —————————————————————-

        P1         P2

———- ———-

       137 SQL*Net message to client

1650815232          1

…….

在这里结果标明扫描并没有从磁盘里读取数据块,任何的select的操作都不可能没有等待事件,向磁盘读取数据过程都需要一定的时间,并且会有相关的IO事件在event中显示,

这里分析:数据库并没有向硬盘读取数据,表的数据在硬盘中,数据是正常的,可能是由于这个bug引起内存错误造成oracle无法正确去读取硬盘数据块。

解决办法:

将共享池刷新一遍,尝试cats以及index rebuild

操作:

SQL >Alter system flush shared_pool;

SQL >Alter system flush buffer_cache;

 

然后执行CATS以及INDEX REBUILT成功。备有aca6_6bak一份,大约5G数据