Chinaunix首页 | 论坛 | 博客
  • 博客访问: 605146
  • 博文数量: 841
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 10:08
文章分类

全部博文(841)

文章存档

2011年(1)

2008年(840)

我的朋友

分类:

2008-10-28 10:11:09


  在回滚段头有一个重要的数据结构称为:Control SCN.
  
  这个SCN是最近一个被重用的事务槽的SCN(重用是按事务的先后顺序重用的)。如果Control SCN比查询的Snapshot SCN新,那么不会试图去构造前镜像,而是马上返回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.
【责编:admin】

--------------------next---------------------

阅读(336) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~