我是靠谱客的博主 激动乌冬面,最近开发中收集的这篇文章主要介绍事务的操作流程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、事务的基本概念
 一组DML语句 insert、delete、update
 COMMIT;
 ROLLBACK;
 SAVEPOINT <savepoint_name>
 ROLLBACK TO [SAVEPOINT] <savepoint_name>

2、隐式提交和回滚
 DDL
 退出
  异常退出
  正常退出

 

2、图解一个事务的操作流程
 Undo段的组成:段头、回滚块
  1、分配一个事务ID
  select xid,xidusn,xidslot,xidsqn,ubablk,ubafil from v$transaction;
  事务表
   undo段的第一个数据块(段头块,有一个事务表,有47行),每一个回滚段最多可以47个事务


  回滚段的段头块
  select * from v$rollname;
  select header_block,header_file from dba_segments where segment_name='_SYSSMU1$';
  alter system dump undo header '_SYSSMU1$';//转储回滚段头

select spid from v$process where addr in (select paddr from v$session where
 sid=(select sid from v$mystat where rownum=1));

3324

cd  $ORACLE_BASE/admin/$id/udmp/

ls *3324*


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


图解IMU机制



 事务槽(要修改的数据块的头部),最多有255个,存在事务信息:xid、uba(undo block address)
 回滚块(存回滚数据的)


1、一个事务开始 在undo表空间找一个空闲的undo段
找到段头的事务表,把事务信息写上(xid UBA)。
同时还要找一个undo块,然后让事务表的信息指向块。


2、修改具体的数据块。首先在数据块的事务槽写上事务编号。

   修改了数据块几行数据。然后把修改前的数据放入undo块。同时地址(UBA地址)指向undo块。


xid事务编号 也是地址(1、事务使用那个回滚段的段头块

                                       2、使用的事务表的哪一行

                                       3、第几次被使用)
3、事务表有xid UBA(多个回滚块总是指向最新的块)

被修改的有4个地方

1、事务表被修改了

2、回滚段被修改了

3、数据块事务槽被修改了

4、数据块的数据行被修改了

最后

以上就是激动乌冬面为你收集整理的事务的操作流程的全部内容,希望文章能够帮你解决事务的操作流程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部