zoukankan      html  css  js  c++  java
  • ORA00600[6711]错误一例

    一套Linux上的10.2.0.4系统,日志中频繁出现ORA-00600[6711]内部错误:
    Wed Sep  1 21:24:30 2010
    Errors in file /s01/10gdb/admin/YOUYUS/bdump/youyus_smon_5622.trc:
    ORA-00600: internal error code, arguments: [6711], [4256248], [1], [4256242], [0], [], [], []
    Wed Sep  1 21:24:31 2010
    Non-fatal internal error happenned while SMON was doing logging scn->time mapping.
    
    MOS上有一个关于6711内部错误十分简单的Note,该文档声称出现6711错误极有可能是部分类型为簇(cluster)的数据字典表存在潜在的讹误,这个Note甚至没有告诉我们该错误argument参数的意义。 不过其实我们可以猜出来,因为是和corruption相关的错误,那么实际上可能关联的几个因素无非是obj#,file#,block#;4256248和4256242 两个数字像极了Data Block Address,把他们当做dba来看待,也就指向了1号数据文件的61938块和61944数据块,我们来看看这些块属于哪个对象:
    SQL> set linesize 200;
    SQL> select segment_name, segment_type
      2    from dba_extents
      3   where relative_fno = 1
      4     and (61938 between block_id and block_id + blocks or
      5         61944 between block_id and block_id + blocks);
    
    SEGMENT_NAME                                                                      SEGMENT_TYPE
    --------------------------------------------------------------------------------- ------------------
    SMON_SCN_TO_TIME                                                                  CLUSTER
    
    不出意料是一个cluster,SMON_SCN_TO_TIME是SMON_SCN_TIME表的基簇,SMON_SCN_TIME表用以记录数据库中scn对应的时间戳。我们直接查看用以创建数据字典的sql.bsq文件,可以进一步了解他们的结构:
    cat $ORACLE_HOME/rdbms/admin/sql.bsq|grep -A 24 "create cluster smon_scn_to_time"
    create cluster smon_scn_to_time (
      thread number                         /* thread, compatibility */
    )
    /
    create index smon_scn_to_time_idx on cluster smon_scn_to_time
    /
    create table smon_scn_time (
      thread number,                         /* thread, compatibility */
      time_mp number,                        /* time this recent scn represents */
      time_dp date,                          /* time as date, compatibility */
      scn_wrp number,                        /* scn.wrp, compatibility */
      scn_bas number,                        /* scn.bas, compatibility */
      num_mappings number,
      tim_scn_map raw(1200),
      scn number default 0,                  /* scn */
      orig_thread number default 0           /* for downgrade */
    ) cluster smon_scn_to_time (thread)
    /
    
    create unique index smon_scn_time_tim_idx on smon_scn_time(time_mp)
    /
    
    create unique index smon_scn_time_scn_idx on smon_scn_time(scn)
    /
    
    从以上脚本可以看到这个簇上存在多个索引,我们需要进一步validate验证所有这些对象:
    SQL> analyze table SMON_SCN_TIME validate structure;
    Table analyzed.
    
    SQL>analyze table SMON_SCN_TIME validate structure cascade;
    Table analyzed.
    
    SQL> analyze cluster SMON_SCN_TO_TIME validate structure;
    Cluster analyzed.
    
    SQL> analyze cluster SMON_SCN_TO_TIME validate structure cascade;
    analyze cluster SMON_SCN_TO_TIME validate structure cascade
    *
    ERROR at line 1:
    ORA-01499: table/index cross reference failure - see trace file
    
    到这里问题已经很清晰了,问题出在SMON_SCN_TO_TIME的索引smon_scn_to_time_idx身上,极有可能是该索引上出现了逻辑讹误。所幸有问题的仅仅是索引,找出问题所在后要解决就显得容易得多了:
    SQL> alter index smon_scn_to_time_idx rebuild ;
    
    Index altered.
    
    /* 在索引出现讹误的情况下仅仅rebuild往往是无效的,在我们rebuild的同时告警日志中再次出现了ORA-00600[6711]错误 !!! */
    
    /* 我们需要的彻底把有问题的索引drop掉,并再次创建!!! */
    
    SQL> drop index smon_scn_to_time_idx ;
    
    Index dropped.
    
    SQL> create index smon_scn_to_time_idx on cluster smon_scn_to_time;
    
    Index created.
    
    /* 至此问题解决,告警日志中不再出现错误! * /
    
    /* That's great! * /
    
  • 相关阅读:
    详述@Responsebody和HTTP异步请求的关系
    利用synchronized解析死锁的一种形成方式
    初识Spring JdbcTemplate
    初识SpringIOC
    JasperReport框架使用教程(附带常见空白页问题说明)
    LeetCode~1033.移动石子直到连续
    LeetCode~941.有效的山脉数组
    LeetCode~344. 反转字符串
    Job for network.service failed because the control process exited with error code问题
    LeetCode~报数(简单)
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967522.html
Copyright © 2011-2022 走看看