zoukankan      html  css  js  c++  java
  • 图解一个事务操作流程

    事务的操作流程

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

       事务ID

           select xid,xidusn,xidslot,xidsqn,ubablk,ubafil from v$transaction;

        例子:在开启事务前查看一下事务的信息,显示为空,证明现在是没有开启事务的

        

          向表中插入数据,开启一个事务

         一个事务开始以后,oracle首先会分配一个事务ID,这个ID是唯一的。

       事务表

           undo表空间的undo段的第一个数据块,存在一个事务表,根据数据块的大小,每一个表最多可以放47个事务。每一个回滚段最多可以47个事务

        在分配到ID后,在undo表空间中找一个undo段,在undo段头块中的事务表中写上自己的信息。一个undo段最多可以有47个活动事务。

          1.oracle尽量的一个事务使用一个回滚段

          2.事务太多而回滚段太少,那么可以多个是事务使用一个回滚段

               3.oracle尽量的将活动的事务均匀的放在回滚段上

       回滚块的段头块

           查看回滚段

            select * from v$rollname;

            

           查看回滚段的地址

            select header_block,header_file from dba_segments where segment_name='_SYSSMU13$';

          alter system dump undo header '_SYSSMU22$';//转储回滚段头 ----存储的名字是以当前会话的进程编号命名的

        查看当前会话的进程编号  

            alter system dump datafile 5 block 4308;//转储回滚段数据块

          事务槽:xid uba(undo block address)1-255个

            一个事务的开始要在两个位置写上事务信息

            1.回滚段的段头块里的事务表上写上事务信息

            2.在要修改的数据块上写上事务信息

            事务槽在具体的数据块中,事务表在回滚段的段头块中

          当一个事务的开启,会有三个地方存放回滚数据

        1.事务表:回滚段的段头块里有事务表 ---- 存储事务信息

        2.事务槽:修改的数据块的块头部事务槽  ---- 存储事务信息

        3.回滚块:存储修改前的数据

      事务开启,在undo表空间中,找一个相对空闲的undo段,然后在undo段的段头块中事务表寻找槽位,写上事务信息xid。同时oracle会给这个事务分配一个undo块,(uba)undo块的地址写到事务表中。

      修改数据:首先事务槽中找到槽位,将事务ID写上,这个事务ID即是一个编号,也是一个地址。之后进行修改数据。

      修改数据前,将修改前的数据写入分配的undo数据块中。同时事务槽中也有uba地址指向的是回滚块。

      剖析xid:既是事务编号,也是地址

          1.使用了哪个回滚段的回滚块 块地址

          2.使用段头块的事务表的哪一行

          3.第几次使用,覆盖次数,循环使用的次数

       以上三点可以唯一标志事务。

    oracle在rollback时,首先要找到事务,找到uba,之后再找最新的回滚块。

    事务的修改过程

        1.事务开始首先在undo表空间中相对空闲的undo段的段头块中的事务表里,找一行信息将自己的xid信息写上 ,同时在undo段中分配一个回滚块,将回滚块的地址写到事务表的事务槽中。 

        2.修改具体的数据块,将修改前的数据写入回滚块,同时将回滚块的地址写入事务表

        3.当一个回滚块不够用会分配其他的回滚块,这些回滚块之间是串联起来的,还要讲最新的回滚块地址写到事务表中

    在hui

          

      

      

       

  • 相关阅读:
    R语言初涉
    Android源码大全
    Centos关闭防火墙
    Java开发常用下载的网址
    linux下解压命令大全
    Android常见布局问题
    配置Nutch模拟浏览器以绕过反爬虫限制
    Nutch的发展历程
    用三层交换机当路由器——最复杂的网络拓扑结构
    Ant 简易教程
  • 原文地址:https://www.cnblogs.com/KAJIA1/p/12124288.html
Copyright © 2011-2022 走看看