码迷,mamicode.com
首页 > 数据库 > 详细

oracle事物

时间:2016-12-20 23:29:40      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:自己的   strong   ges   images   一件事   数据字典   segment   相对   http   

undo段的组成:段头、回滚块

事物ID:每一个事物都有一个自己的事物ID,就像身份证号一样。

技术分享

     在v$transaction数据字典中xid就是事物ID,xid既是一个编号,也是一个地址,xid中写的有1、使用哪个回滚段的段头块;2、事物表中有47行,使用的是哪一行;3、该行被覆盖的次数。这样就组成了唯一的事物ID。

     事物表:undo表空间的undo段的第一个数据块(即undo段的段头块)里放事物表,共有47行。事物开始第一件事就是在事物表中找到一个空行,写上事物信息。也就是说undo段最多47个活动事物,但是oracle会尽量将一个事物放到一个段上,为了均匀分配(undo段的段头块的位置在dba_segments表空间可以查得)。

oracle中有哪些undo段:

技术分享

事物槽:在每个数据块的块头部分有事物槽,事物槽包括xid、uba(undo block address)等等。

当事物发生的时候,第一件事会在undo表空间的相对空闲的undo段的段头块的事物表中找到一个槽位,写上事物信息(xid),给这个事物分配一个undo块(undo块里写的就是修改之前的数据),然后将undo块的地址(即uba写到事物表中),所以现在事物表中有xid和uba;第二件事在要修改的数据块的块头的事物槽中找到槽位,写上事物信息(xid),(目的是通过数据块上的xid可以找到事物表),然后在将要修改的数据块上修改数据,修改之前的信息写到undo块里。同时,在事物槽中也写上uba地址,指向回滚块。为什么要在两个地方写事物信息呢?下面有解释。

比如该事物修改了较多的数据,产生3个undo块,3个undo块有先后关系,它们会链起来,但是这是事物表中的uba就只是指向最新的undo块,这是便于回滚。

数据块的事物槽中的uba指向回滚数据,这便于构造CR块。

 

oracle事物

标签:自己的   strong   ges   images   一件事   数据字典   segment   相对   http   

原文地址:http://www.cnblogs.com/oraclelike/p/6204458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!