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 ;


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Oracle ORA-08102
相关日志:
评论: 0 | 引用: 153 | 查看次数: 5767
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启