回滚段头重要的数据结构ControlSCN

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

在回滚段头有一个重要的数据结构称为: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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有