Skip to content

统计信息误差导致执行计划错误:一例

日前在客户现场对一些sp进程程序调优,中间碰到不少问题

列举其一:

 

select item_code from inv_master where  NVL (COST_FLAG,'N') = 'Y';
 
其中在表inv_master的quota_hours字段创建函数索引
create index idx_inv_master_02 on inv_master(nvl(COST_FLAG,'N') online tablespace idxdata;
 
select count(*) from inv_master;
 
————
636687
 
select count(*) from inv_master where  NVL (COST_FLAG,'N') = 'Y';
 
————
123
 
根据单表选择率这里语句

select item_code from inv_master where  NVL (QUOTA_HOURS,'N') = 'Y';

应该会走indx_inv_master_02这个索引按照 range scan方式扫描,但是在客户的库中还是会全表扫描,由于这个sql在sp中要被反复执行3万多次,这个是一个非常严重的IO问题,

在现场首先做了一次

analyze table INV_MASTER compute statistics;

analyze index IDX_INV_MASTER_02 compute statistics; 
sql还是不走索引,没办法只好做一次10053
——————————————————————————————————–
oradebug setmypid
oradebug unlimit
oradebug event 10053 trace name context forever,level 10
select item_code from inv_master where  NVL (QUOTA_HOURS,'N') = 'Y';
oradebug event 10053 trace name context off;
oradebug tracefile_name
 
TRC文件底部显示:
Table Stats::
  Table: INV_MASTER  Alias: INV_MASTER
    #Rows: 63487  #Blks:  3268  AvgRowLen:  364.00
Index Stats::
  Index: IDX_INV_MASTER_BFLAG  Col#: 68
    LVLS: 1  #LB: 70  #DK: 2  LB/K: 35.00  DB/K: 1451.00  CLUF: 2903.00
  Index: IDX_INV_MASTER_COOP_FLAG  Col#: 169
    LVLS: 1  #LB: 116  #DK: 2  LB/K: 58.00  DB/K: 2229.00  CLUF: 4458.00
  Index: IDX_INV_MASTER_COST_FLAG  Col#: 167
    LVLS: 1  #LB: 116  #DK: 2  LB/K: 58.00  DB/K: 1618.00  CLUF: 3236.00
  Index: IDX_INV_MASTER_FLAG_FC  Col#: 168 167
    LVLS: 1  #LB: 133  #DK: 4  LB/K: 33.00  DB/K: 1098.00  CLUF: 4395.00
  Index: IDX_INV_MASTER_FLAG_PHFL  Col#: 168
    LVLS: 1  #LB: 116  #DK: 3  LB/K: 38.00  DB/K: 1461.00  CLUF: 4384.00
  Index: PK_INV_MASTER  Col#: 3
    LVLS: 1  #LB: 236  #DK: 63487  LB/K: 1.00  DB/K: 1.00  CLUF: 28932.00
***************************************
SINGLE TABLE ACCESS PATH
  —————————————–
  BEGIN Single Table Cardinality Estimation
  —————————————–
  Column (#167): SYS_NC00167$(NVARCHAR2)
    AvgLen: 1.00 NDV: 2 Nulls: 0 Density: 0.5
  Column (#56): COST_FLAG(NVARCHAR2)
    AvgLen: 1.00 NDV: 2 Nulls: 16 Density: 0.5
  Table: INV_MASTER  Alias: INV_MASTER
    Card: Original: 63487  Rounded: 31751  Computed: 31751.50  Non Adjusted: 31751.50
  —————————————–
  END   Single Table Cardinality Estimation
  —————————————–
  Access Path: TableScan
    Cost:  725.29  Resp: 725.29  Degree: 0
      Cost_io: 717.00  Cost_cpu: 107074906
      Resp_io: 717.00  Resp_cpu: 107074906
kkofmx: index filter:NVL("INV_MASTER"."COST_FLAG",U'N')=U'N'
  Access Path: index (AllEqRange)
    Index: IDX_INV_MASTER_COST_FLAG
    resc_io: 1678.00  resc_cpu: 57991026
    ix_sel: 0.50013  ix_sel_with_filters: 0.50013
    Cost: 1682.49  Resp: 1682.49  Degree: 1
  Access Path: index (FullScan)
    Index: IDX_INV_MASTER_FLAG_FC
    resc_io: 2333.00  resc_cpu: 69001720
    ix_sel: 1  ix_sel_with_filters: 0.50013
    Cost: 2338.69  Resp: 2338.69  Degree: 1
 
CBO在选择执行计划时候是根据统计信息来选择的,在这里可以发现统计信息中走这个索引的消耗为1682.49,走全表扫才717的消耗,
可以看出这里的索引统计信息肯定有问题,可以从dba_segements可以计算出索引idx_inv_master_cost_flag总的块为10多个,和这里明显不符,重新收集统计信息后,全表扫改为INDEX RANGE SCAN
 
 
 
over.
exec dbms_stats.gather_table_stats('RS10','INV_MASTER');

Block结构 :使用BBED的方法

 

 datafile.txt
 1 /oracle/oradata/znjtepp/system01.dbf                                              828375040
 2 /oracle/oradata/znjtepp/XSPGIMS_DEVICE.dbf                                       3877634048
 3 /oracle/oradata/znjtepp/sysaux01.dbf                                              513802240
 4 /oracle/oradata/znjtepp/users01.dbf                                               473169920
 5 /oracle/oradata/znjtepp/undotbs1.dbf                                             4294967296
 6 /oracle/oradata/znjtepp/XSPGIMS_FILE.dbf                                         3328180224
 7 /oracle/oradata/znjtepp/XSPGIMS_FUEL.dbf                                          524288000
 8 /oracle/oradata/znjtepp/XSPGIMS_MATERIAL.dbf                                      524288000
 9 /oracle/oradata/znjtepp/XSPGIMS_PLAN.dbf                                          524288000
10 /oracle/oradata/znjtepp/XSPGIMS_PRODUCE.dbf                                      2359296000
11 /oracle/oradata/znjtepp/XSPGIMS_SEQURITY.dbf                                      104857600
12 /oracle/oradata/znjtepp/XSPGIMS_SYSTEM.dbf                                        943718400
13 /oracle/oradata/znjtepp/XSPGIMS_OTHER.dbf                                         314572800
14 /oracle/oradata/znjtepp/RIMS_DATA.dbf                                             209715200
15 /oracle/oradata/znjtepp/XSPGIMS_MONITOR.dbf                                       314572800
16 /oracle/oradata/znjtepp/XSPGIMS_HUMANRESOURCE.dbf                                 314572800
17 /oracle/oradata/TS1.ORA                                                             1048576
18 /oracle/oradata/TS2.ORA                                                             1048576
19 /oracle/oradata/TS3.ORA                                                             1048576
20 /oracle/oradata/TS4.ORA                                                             1048576
21 /oracle/oradata/TS5.ORA                                                             1048576
22 /oracle/oradata/TS6.ORA                                                             1048576
23 /oracle/oradata/TS7.ORA                                                             1048576
24 /oracle/oradata/TS8.ORA                                                             1048576
25 /oracle/oradata/TS9.ORA                                                             1048576
26 /oracle/oradata/TS10.ORA                                                            1048576
27 /oracle/oradata/TS11.ORA                                                            1048576
28 /oracle/oradata/TS12.ORA                                                            1048576
29 /oracle/oradata/TSI1.ORA                                                            1048576
30 /oracle/oradata/TSI2.ORA                                                            1048576
31 /oracle/oradata/TSI3.ORA                                                            1048576
32 /oracle/oradata/TSI4.ORA                                                            1048576
33 /oracle/oradata/TSI5.ORA                                                            1048576
34 /oracle/oradata/TSI6.ORA                                                            1048576
35 /oracle/oradata/TSI7.ORA                                                            1048576
36 /oracle/oradata/TSI8.ORA                                                            1048576
37 /oracle/oradata/TSI9.ORA                                                            1048576
38 /oracle/oradata/TSI10.ORA                                                           1048576
39 /oracle/oradata/TSI11.ORA                                                           1048576
40 /oracle/oradata/TSI12.ORA                                                           1048576
 
para.txt
blocksize=8192
listfile=datafile.txt
mode=edit
 
 
 
SQL> select header_file,header_block from dba_segments where owner='LUDA' and segment_name = 'T1';
 
HEADER_FILE HEADER_BLOCK
———– ————
          4        18587
这里以表t1的段头为例
 
RDBA由,rfile# + block#组成的
相对文件号10位 block号22位
先算22位的BLOCK,其他的就是FILE
如果是ROWID的话,先算16的slot
#########################set 命令################################################
 
set 命令 定位数据块。
例子
定位 4号文件的18587号块
set file 4 block 18587
用rdba定位的话先换算 file 4 和 18587 号块
从右边开始算起   18587 对应2进制 00 0000 0100 1000 1001 1011 
                 4   对应2进制  100
                 所以这里rdba为  0000 0010 000 0000 0100 1000 1001 1011 转换成16进制为 0x100489b
                 
                 所以也可以定位成:
                 set dba 0x100489b
                 BBED> set dba 0x100489b
                 DBA             0x0100489b (16795803 4,18587)
                 
###工具包换算10进制 dbms_utility.data_block_address_file 
用法
SQL> select dbms_utility.data_block_address_file(20971712) "file",dbms_utility.data_block_address_block(20971712) "block" from dual;
 
      file      block
———- ———-
         5        192
###
set dba 4,18587     
BBED> set dba 4,18587    
        DBA             0x0100489b (16795803 4,18587)
 
 
set filename
BBED> set filename "/oracle/oradata/znjtepp/users01.dbf"
      FILENAME        /oracle/oradata/znjtepp/users01.dbf 
      
set file
BBED> set file 4
      FILE#           4
 
set block and set block + ora –
BBED> set block 100
        BLOCK#          100
BBED> set block +100
        BLOCK#          200
BBED> set block +20
        BLOCK#          220
BBED> set block -200
        BLOCK#          20
 
set blocksize 
set listfile这两个set都是用在切换配置文件时候用的
 
#设置屏幕显示区域
BBED> set width 100
        WIDTH           100
        
########################offset 偏移量 以及count #################################################
offset 偏移量
 
 
BBED> dump
 File: /oracle/oradata/znjtepp/users01.dbf (4)
 Block: 18587            Offsets:    0 to  511           Dba:0x0100489b
————————————————————————
 23a20000 0100489b 0031fc19 00000104 f8880000 00000000 00000000 00000000 
 00000000 00000011 00000100 0a9c0000 00000010 00000080 00000080 01004989 
 00000000 00000010 00000000 000000f4 00000000 00000000 00000000 00000010
 …..
 
 
BBED> set offset 200
        OFFSET          200
 
BBED> dump
 File: /oracle/oradata/znjtepp/users01.dbf (4)
 Block: 18587            Offsets:  200 to  711           Dba:0x0100489b
————————————————————————
 00000000 00000000 00010000 00002000 00000000 00001434 00000000 0100489a 
 00000001 0100490a 0100489a 00000000 00000000 00000000 00000000 00000000 
 00000011 00000000 0000d7c4 10000000 01004899 00000008 010048a1 00000008 
 ….
 
 count可以设置dump的内容
 
 例:
 
 BBED> set count 5000
        COUNT           5000
 BBED> dump 
 File: /oracle/oradata/znjtepp/users01.dbf (4)
 Block: 18587            Offsets:  200 to 5199           Dba:0x0100489b
————————————————————————
 00000000 00000000 00010000 00002000 00000000 00001434 00000000 0100489a 
 00000001 0100490a 0100489a 00000000 00000000 00000000 00000000 00000000 
 00000011 00000000 0000d7c4 10000000 01004899 00000008 010048a1 00000008
….
BBED> set file 4 block 18587
        FILE#           4
        BLOCK#          18587
 
BBED> set count 20
        COUNT           20
##/v翻译内容
BBED> dump /v
 File: /oracle/oradata/znjtepp/users01.dbf (4)
 Block: 18587   Offsets:    0 to   19  Dba:0x0100489b
——————————————————-
 23a20000 0100489b 0031fc19 00000104 l #…..H..1……
 f8880000                            l ….
 
 <16 bytes per line>
 
 
 
##可以通过show ,info显示当前的设置情况
BBED> show
        FILE#           4
        BLOCK#          20
        OFFSET          0
        DBA             0x01000014 (16777236 4,20)
        FILENAME        /oracle/oradata/znjtepp/users01.dbf
        BIFILE          bifile.bbd
        LISTFILE        datafile.txt
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           100
        COUNT           5000
        LOGFILE         log.bbd
        SPOOL           No
BBED> info
 File#  Name                                                                            Size(blks)
 —–  —-                                                                            ———-
     1  /oracle/oradata/znjtepp/system01.dbf                                                101120
     2  /oracle/oradata/znjtepp/XSPGIMS_DEVICE.dbf                                          473344
     3  /oracle/oradata/znjtepp/sysaux01.dbf                                                 62720
     4  /oracle/oradata/znjtepp/users01.dbf                                                  57760
     5  /oracle/oradata/znjtepp/undotbs1.dbf                                                     0
     6  /oracle/oradata/znjtepp/XSPGIMS_FILE.dbf                                            406272
     7  /oracle/oradata/znjtepp/XSPGIMS_FUEL.dbf                                             64000
     8  /oracle/oradata/znjtepp/XSPGIMS_MATERIAL.dbf                                         64000
     9  /oracle/oradata/znjtepp/XSPGIMS_PLAN.dbf                                             64000
    10  /oracle/oradata/znjtepp/XSPGIMS_PRODUCE.dbf                                         288000
    11  /oracle/oradata/znjtepp/XSPGIMS_SEQURITY.dbf                                         12800
    12  /oracle/oradata/znjtepp/XSPGIMS_SYSTEM.dbf                                          115200
    13  /oracle/oradata/znjtepp/XSPGIMS_OTHER.dbf                                            38400
    14  /oracle/oradata/znjtepp/RIMS_DATA.dbf                                                25600
    15  /oracle/oradata/znjtepp/XSPGIMS_MONITOR.dbf                                          38400
    16  /oracle/oradata/znjtepp/XSPGIMS_HUMANRESOURCE.dbf                                    38400        
……
 
############################find 命令###################################
map 命令
用于显示数据块的逻辑结构和这些逻辑结构的偏移量,一般配合/v参数使用
 
 
BBED> map /v dba 4,1
 File: /oracle/oradata/LUDA/datafile/o1_mf_users_6zlksyqo_.dbf (4)
 Block: 1                                     Dba:0x01000001
————————————————————
 Data File Header
 
 struct kcvfh, 676 bytes                    @0       
    struct kcvfhbfh, 20 bytes               @0       
    struct kcvfhhdr, 76 bytes               @20      
    ub4 kcvfhrdb                            @96      
    struct kcvfhcrs, 8 bytes                @100     
    ub4 kcvfhcrt                            @108  
    ……
    
    
 
   

RAC增加节点步骤

 

 

参考:http://space.itpub.net/35489/viewspace-563077

           Metalink  : [ID 1279891.1]

           http://www.itpub.net/thread-1361850-1-1.html

 详细文档稍后就会跟进。

 

 1、安装 节点的操作系统,与已经运行的节点一致。

2、配置系统参数和ORACLE的安装环境。

3、从运行节点的机器上把$ORACLE_HOME、$ORACLE-BASE、/etc/ora*复制到新安装机器上对应的目录,要同源地址一致。

4、运行新装机$ORACLE_HOME下的root.sh。

5、修改所有机器$ORACLE_HOME/oracm/admin下rac 配置、/etc/hosts配置。

6、确认当前数据库 的MAXINSTANCES大于等于您新加机器后的节点数,否则需重建控制文件(但一般都够,默认好像是16还是32来着);

7、配置spfile,可以用命令alter system set 参数名=值 scope=spfile;完成后重启就生效了。

也可以把spfile通过create pfile=… from spfile;生成pfile再修改,方便一点,如下所示要修改的内容。

<SID3>.instance_name=RAC3

<SID3>.instance_number=3

<SID3>.local_listener=LISTENER_RAC3

<SID3>.thread=3

<SID3>.undo_tablespace=UNDOTBS3

完成后要通过create spfile from pfile=…..建立回去后配置才生效哦。

8、在每个机器的$ORACLE_HOME/network/admin/tnsnames.ora中添加,并复制到各节点:

LISTENER_RAC3 = (ADDRESS = (PROTOCOL = TCP)(HOST = <node3>)(PORT = 1521))

9、在数据库中添加新的redo logfile:

alter database add logfile thread 3

group 5 (‘/dev/RAC/redo3_01_100.dbf’) size 100M,

group 6 (‘/dev/RAC/redo3_02_100.dbf’) size 100M;

alter database enable public thread 3;

10、在数据库添加新的undotbs:

CREATE UNDO TABLESPACE UNDOTBS3 DATAFILE ‘/dev/RAC/undotbs_03_210.dbf’ SIZE 200M AUTOEXTEND ON NEXT  5120K MAXSIZE UNLIMITED

11、确认新节点的环境变量(ORACLE_HOME、ORACLE_SID等),然后启动第三个实例。

12、可以通过srvctl的配置增加对新节点的管理 。具体查看srvctl帮助,例:srvctl -h   srvctl config -h

ORA-00350: log 2 of instance luda (thread 1) needs to be archived

 

 
 
 
ORA-00262: current log 1 of closed thread 1 cannot switch
ORA-00312: online log 1 thread 1:
'/oracle/oradata/LUDA/onlinelog/o1_mf_1_6zlkxrqf_.log'
ORA-00312: online log 1 thread 1:
'/oracle/flash_recovery_area/LUDA/onlinelog/o1_mf_1_6zlky0b9_.log'
ORA-00350: log 2 of instance luda (thread 1) needs to be archived
ORA-00312: online log 2 thread 1:
'/oracle/oradata/LUDA/onlinelog/o1_mf_2_6zlky76o_.log'
ORA-00312: online log 2 thread 1:
'/oracle/flash_recovery_area/LUDA/onlinelog/o1_mf_2_6zlkyghs_.log'
 
 
SQL> select GROUP#,ARCHIVED ,STATUS from v$log;
 
    GROUP# ARC STATUS
———- — —————-
         1 NO  CURRENT
         3 NO  INACTIVE
         2 NO  INACTIVE
 
 
配置DG时候强行关闭节点2,节点1 
再次启动节点一时候报错
 
[oracle@dg1 09:50:38|~]oerr ora 262
00262, 00000, "current log %s of closed thread %s cannot switch"
// *Cause:  The log cannot be cleared or manually archived because it is
//          the current log of a closed thread, and it is not possible to
//          switch logs so another log is current. All other logs for the
//          thread need to be archived, or cleared, and cannot be reused.
// *Action: Archive another log in the same thread first, or complete the
//          clearing. See attached errors for the reason the switch cannot
//          be completed.
[oracle@dg1 09:59:25|~]oerr ora 312
00312, 00000, "online log %s thread %s: '%s'"
// *Cause:  This message reports the filename for details of another message.
// *Action: Other messages will accompany this message. See the
//          associated messages for the appropriate action to take.
[oracle@dg1 09:59:30|~]oerr ora 350
00350, 00000, "log %s of instance %s (thread %s) needs to be archived"
// *Cause:  The command cannot be done because the log has not been archived,
//          and media recovery has been enabled.
// *Action: Archive the log or disable media recovery. If the command supports
//          an UNARCHIVED option then it can be used. However this may result
//          in making backups unuseable, and forcing the drop of some offline
//          files.
 
 
这里报2个日志组,快速解决办法:
 

alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 1;
alter database open;
 
当然这个报错的原因是首先关闭了dg2节点,当关闭节点1时候,rfs归档无法找到standby,从而传输失败,报错
 
clear =。= 不是很妥当的办法。

 

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数据