Oracle重做和撤销

  

  <强>   

  

  <强>      <强>      <强>   

  

   Oracle重做和撤销

  

  <强>   甲骨文            <强>      <强>      <强>   重做         

  

  <强>   :

  

  <强>   

     

  <强>   (2)上校长度是6,数据是78 (x的16进制ASCII码是78)

  

  

  

  

  

  

  

  

  

  <强>   

  

  

  

  

     

  <强>   (2)上校长度是10,数据是59 (Y的16进制ASCII码是59)

  

  

  

  

  

  

  

  

  

  <强>   

  

  

  

  

     

  <强>   (col2)长度变成了10,是10个59 (Y的十六进制ASCII码是59),同时行地址由@0x1d3f变成了@0x2a7,说明这一行的空间容不下新增的数据,换了新地址。

  

  <强>   

  

  <强>   磅(锁字节)由0 x0变成了0 x2,表明这条记录被该块事务槽列表中的第二个事务槽所标识的事务锁定。事务槽可以在块首部看到。我们将在第三章更深入地讨论它。

  

  <强>   

     

  <强>   当前重做日志文件转储中,我们可以检查变化矢量,描述我们对表做了什么:

  

  <强>   

     

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  <强>   URP(更新行块),第六行告诉我们正在更新块的块地址(bdba)和对象的段头块(hdba)

  

  <强>   

  

  <强>   7行,我们看到执行这个更新的事务使用的是ITL条目2 (itli:),它是对tabn: 0槽:4的更新(第一个表中的第5行;请记住,集群中的块可以容纳来自许多表的数据,因此每个块必须包含一个列表,用于标识块中有行的表)。

  

  <强>   

  

  <强>   

  

  <强>   (ncol:),其中我们更改了一列(nnew:),将行长度(大小:)增加了4个字节,并且我们将第2列更改为YYYYYYYYYY。

  

  <强>   2 - 1 .在事务中间进行   <强>      <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   ,我省略了转储的改变向量,部分是因为   <强>   Oracle 10 g以后情况会有不同   <强>   

  

  <强>   2 - 1中的各项内容:

  

  <强>   

  

  <强>   撤销记录描述如何回退修改的数据。这意味着当我们在交易过程中,如果另一个用户试图查看我们修改过的任何数据,可以指示他使用撤消记录以查看该数据的旧版本,从而使我们的工作不可见直到我们决定发布(提交)它的那一刻。我们可以保证对方用户要么什么都看不到,要么什么都看的到。

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   

     

  <强>   

  

  <强>   undo记录撤销记录的存在意味着   <强>   

  

  <强>   

  

  <强>   

  

  <强>   

  

  <强>   9我输出中,我们已经执行了51次重做复制和重做分配锁存,并且创建了51个重做条目。与10 g的结果相比较:

  

  <强>   10 g版本,我们的会话之仅申请了一次   

Oracle重做和撤销