回滚段头重要的数据结构Control SCN

来源: 作者: 2006-04-21 出处:pcdog.com

  • oracle

  •   在回滚段头有一个重要的数据结构称为:Control SCN.
      
      这个SCN是最近一个被重用的事务槽的SCN(重用是按事务的先后顺序重用的)。如果Control SCN比查询的Snapshot SCN新,那么Oracle不会试图去构造前镜像,而是马上返回ORA-01555错误,因为这个UNDO信息肯定已经被覆盖了。
      
      这个Control SCN也会被用于delayed logging cleanout的提交SCN(仅当历史事务的UNDO信息已经被覆盖),在ITL中这个SCN被标记为U,代表"upper bound commit".
      
      我们来看一下这个数据结构:
      
      SQL> create table ud ( n number );
      
      Table created
      
      SQL> insert into ud values(1);
      
      1 row inserted
      
      SQL> insert into ud values(2);
      
      1 row inserted
      
      SQL> commit;
      
      Commit complete
      
      SQL>
      SQL> select * from ud;
      
         N
      ----------
         1
         2
      
      SQL> update ud set n=1000 where n=2;
      
      1 row updated
      
      SQL> select * from ud;
      
         N
      ----------
         1
       1000
      
      SQL> select xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction;
      
      XIDUSN  XIDSLOT   XIDSQN   UBABLK   UBAFIL   UBAREC
      ---------- ---------- ---------- ---------- ---------- ----------
         2     30   11407    251     2     10
      
      SQL> select usn,name from v$rollname where usn=2;
      
        USN NAME
      ---------- ------------------------------
         2 _SYSSMU2$
      
      SQL> alter system dump undo header '_SYSSMU2$';
      
      System altered
      
      检查trace文件(摘录):
      
      TRN CTL:: seq: 0x02cd chd: 0x002e ctl: 0x0018 inc: 0x00000000 nfb: 0x0000
         mgc: 0x8201 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
         uba: 0x008000fb.02cd.0a scn: 0x0000.0e21169a
         
      这里TRN CTL部分的scn就是前面我们所说的Contrl SCN.
    更多内容请看PCdog.com--数据结构数据结构相关文章专题
    上一篇:分析函数lag小技巧
    下一篇:如何获得Oracle的隐含参数