ORA-08102 问题的处理

今天上午,数据库报警:ora-8102:index key not found,obj#28091,dba ******
        原因:                   
       在前一天,开发人员反应原来的SQL语句查询速度变慢,经过确认发现使用的索引是
       ORDER_TAB_I_ORDER_STATU_3,并对其重建后作
       analyze index  ORDER_TAB_I_ORDER_STATU_3 compute statistics;

       操作完成后,原来的SQL语句查询恢复到正常,查看执行计划COST值恢复正常,但后来数据库出现了ORA-08102,
       12月21日上午,产品在检查日志信息时发现有几笔订单,在更新订单状态时失败,
       经查是由于索引问题导致的,由于用户在更新订单状态是要对索引进行更新和维护,
       而这个索引在进行更新操作时出现了异常,导致更新失败,最终导致订单状态更新失败.       
        处理过程:
         1>删除在线数据库和订单状态相关的索引  PAYMENT.ORDER_TAB_I_ORDER_STATU_3
        SQL> drop index PAYMENT.ORDER_TAB_I_ORDER_STATU_3;
        
      2>在线重建 PAYMENT.ORDER_TAB_I_ORDER_STATU_3 索引到新的表空间
        SQL> CREATE INDEX PAYMENT.ORDER_TAB_I_ORDER_STATU_3 ON 
               PAYMENT.ORDER_TAB
               (PAY_NAME, ORDER_STATUS, ORDER_DATE, STORE_NAME)
               TABLESPACE INDXNEW  ONLINE;
               
      3>测试未成功执行的更新语句
        SQL> UPDATE  ORDER_TAB SET BANK_STATUS=?,BAK=? WHERE ORDER_ID=?
  
  处理过程影响的范围:
          
            在索引删除和重建完成前,使用相关索引的查询会有性能下降,待索引重建完毕后,一切恢复正常.
           
       
       分析:
          通过Metalink 查证,出现这种问题的原因可能是下面3方面:
           -table row level   表级别 损坏
           -table block level 块级别 损坏
           -index level       索引级别 损坏
    
   从目前解决问题的方法和结果判断,出现问题属于第三种情况,索引级别的问题.
  
  目前正在执行 ANALYZE TABLE payment.order_tab VALIDATE STRUCTURE CASCADE ONLINE;
  对在线的ORDER_TAB 表作分析,明天根据分析日志,最终确定是否是索引级别的问题.
  物理standby机器上,日志发现在master创建数据文件时候失败,但是表空间已经创建,执行如下语句后解决:
 alter database create datafile 11 as '/home/oracle/oradata/ntespay/indxnew01.dbf'
 alter database recover managed standby database disconnect ;

你可能感兴趣的:(问题,职场,处理,休闲,ORA-08102)