Oracle事务处理

  • 事务的定义
  • 事务的概念和特性
  • ACID原则(原子性、一致性独立性持久性
  • 事务处理
  • (1)提交事务
  • (2)回滚事务
  • (3)保存点

 

 

一:事务的定义

事务是由一系列相关的SQL语句组成的最小逻辑工作单元。

 

 

二:事务的概念和特性

  • 数据库中的事务是工作中的一个逻辑单元,由一个或多个SQL语句组成。
  • 如果对事务执行提交,则该事务中进行的所有操作均会提交,成为数据库中的永久组成部分。
  • 如果事务遇到错误而被取消或回滚,则事务中的所有操作均被清除,数据恢复到事务执行前的状态。(一个事务中的所有SQL语句要么全部被执行,要么全部没有执行)

 

 

三:ACID原则

ACID原则是数据库事务正常执行的四个特性,分别指原子性、一致性独立性持久性

  • 原子性(Atomicity):事务是不可分割的原子工作单元;对于事务中的数据修改,要么全部执行,要么全都不执行,也就是说一个事务不可能只执行了一半就停止了。
  • 一致性(Consistency):事务在完成时,必须使所有的数据都保持一致。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向链表)都必须是正确的。
  • 独立性(Isolation):事务的独立性也称作隔离性,由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。
  • 持久性(Durability):事务执行成功以后,该事务对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚

 

 

四:事务处理

在 Oracle数据库中,没有提供开始事务处理语句,所有的事务都是隐式开始的。

Oracle认为第一条修改数据库的语句,或者一些要求事务处理的场合都是事务隐式的开始,当用户需要终止一个事务处理时,必须显式地执行 COMMIT语句或 ROLLBACK语句,分别用来表示提交事务回滚事务

(1)提交事务
提交事务也就表示该事务中对数据库所做的全部操作都将永久地记录在数据库中。提交事务时使用 COMMIT语句,用来标志一个成功的隐性事务或显式事务的结束。
 

执行COMMIT语句提交事务时, Oracle会执行如下操作

  • 在回退段内的事务表中记录这个事务已经提交,并且生成一个唯一的系统改变号(SCN),并将该SCN值保存到事务表中,用于唯一标识这个事务。
  • 启动LGWR后台进程,将SGA区中缓存的重做记录写入到联机重做日志文件,将该事务的SCN值也保存到日志文件中(SGA系统全局区包含数据缓冲区和日志缓冲区)
  • Oracle服务器进程释放事务处理所使用的资源
  • 通知用户事务已经成功提交

提示:事务所包含的SQL语句的数量,不会影响 Oracle提交事务的性能

 

(2)回滚事务

回滚一个事务也就意味着该事务中对数据库进行的全部操作都将被取消。

对事务执行回滚操作时使用 ROLLBACK语句,表示将事务回滚到事务的起点或事务内的某个保存点。

回滚整个事务, Oracle将会执行如下操作

  • Oracle通过回退段中的数据撤消事务中所有SQL语句对数据库所做的任何操作。
  • Oracle服务器进程释放事务所使用的资源。
  • 通知用户事务回滚成功。

 

(3)保存点

在事务的处理过程中,如果发生了错误并且使用 ROLLBACK进行了回滚,则在整个事务处理中对数据所做的修改都将被撤消。在一个庞大的事务中,这种操作将会浪费大量的资源。

这时,可以为该事务建立一个或多个保存点。使用保存点可以让用户将一个规模比较大的事务分割成一系列较小的部分。当回滚事务时,就可以回滚到指定的保存点。

//语法
savepoint [savepoint_name]
//其中, savepoint_name表示为保存点指定的一个名称
//注意:如果没有为存储点指定名称,则回滚事务时,回滚到上一个保存点

 

 


版权声明:本文为weixin_42717928原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。