IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ORA-600 4193 错误说明和解决

    惜分飞发表于 2016-07-27 13:06:32
    love 0

    联系:手机(13429648788) QQ(107644445)QQ咨询惜分飞

    标题:ORA-600 4193 错误说明和解决

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    ORA-600 4193 解释说明

    ERROR:              
    
      Format: ORA-600 [4193] [a] [b]
    
    VERSIONS:           
      versions 6.0 to 12.1
    
    DESCRIPTION:        
    
      A mismatch has been detected between Redo records and Rollback (Undo) 
      records.
    
      We are validating the Undo block sequence number in the undo block against 
      the Redo block sequence number relating to the change being applied.
    
      This error is reported when this validation fails.
    
    ARGUMENTS:
      Arg [a] Undo record seq number
      Arg [b] Redo record seq number
    
    FUNCTIONALITY:
      KERNEL TRANSACTION UNDO
    
    
    
    
    
    ORA-600 [4193] [a] [b] [ ] [ ]  [ ]        
    Versions: 7.2.2  - 9.2.0                              Source: ktuc.c
    ===========================================================================
    Meaning: seq# mismatch while adding an undo record to an undo block. This 
             is done by the application of redo. 
    ---------------------------------------------------------------------------
    Argument Description:
    
        a. (ktubhseq): undo record seq# - this is the seq# of the block that 
                                          this undo record WILL BE APPLIED TO. 
                                          This is from the Undo Block. It is 
                                          NOT the seq# of the undo block itself.
                                          
        b. (ktudbseq): redo RECORD seq# - this is the seq# number in the block 
                                          that this redo WILL BE APPLIED TO. 
                                          This is from the Redo Record. 
    
    ---------------------------------------------------------------------------
    Diagnosis:
    
        This error is raised in kturdb which handles the adding of undo records 
        by the application of redo. 
        
        When we try to apply redo to an undo block (forward changes are made by 
        the application of redo to a block) we check that the seq# in the undo 
        record matches the seq# in the redo record. These seq# should be the 
        same because when we apply a redo record we must apply it to the 
        correct version of the block. We can only apply a redo record to a 
        block that contains the same seq# as in the redo record. 
    
        If the seq# do not match then this error is raised. This implies some 
        kind of block corruption in either the redo or the undo block. 
    
    7.3.x - 8.1.7.x
    ASSERT2(ubh->ktubhseq == db->ktudbseq, OERI(4193), KSESVSGN,
                ubh->ktubhseq, db->ktudbseq);
    9.2.x
    ksesic2(OERI(4193), ksenrg(ubh->ktubhseq), ksenrg(db->ktudbseq));
    
    struct ktubh
    {
      kxid  ktubhxid;      /* txid of tx currently using or last used this block */
      ub2   ktubhseq;                              /* undo block sequence number */
      ub1   ktubhcnt;    /* high water mark record index, number of undo entries */
      ub1   ktubhirb;  /* rollback record index, rec index to start the rollback */
      ub1   ktubhicl;  /* collecting record index, rec index to start retrieving col info */
      ub1   ktubhflg;                                                 /* dummy */
      ub2   ktubhidx[1];     /* byte offset of record in block, grows at runtime */
    };
    
    struct ktudb   Kernel Transaction Undo Data operation Block (redo)
    {
      ub2    ktudbsiz;                                          /* size of entry */
      ub2    ktudbspc;                 /* verification: space left in undo block */
      ub2    ktudbflg;            /* flag to indicate the kind of redo operation */
      kxid   ktudbxid;                                          /* current tx id */
      ub2    ktudbseq;                                  /* block sequence number */
      ub1    ktudbrec;                       /* new record index for this change */
    };
    

    ORA 600 4193 处理方法同How to resolve ORA-600 [4194] errors

    • ORA-600[4194]/[4193]解决
    • How to resolve ORA-600 [4194] errors
    • ORA-00600[4194]故障解决
    • ORACLE 8.1.7 数据库ORA-600 4000故障恢复
    • undo异常事务回滚规则分析
    • 数据库报ORA-00607/ORA-00600[4194]错误
    • MOVE和CAST比较(续)
    • undo坏块导致数据库异常终止案例
    • ORA-00600[kcratr1_lostwrt]/ORA-00600[3020]错误恢复
    • undo segment header坏块异常恢复
    • 通过bbed查看数据块结构
    • 找出11g undo 回滚段名称


沪ICP备19023445号-2号
友情链接