第14章 事务和锁-数据库原理与应用教程(Oracle 12c版)-赵明渊-清华大学出版社

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
事务是数据库程序的基本单位,一般地,一个程序包含多个事务,数据 存储的逻辑单位是数据块,数据操作的逻辑单位是事务。
现实生活中的银行转账、网上购物、库存控制、股票交易等,都是事物 的例子。例如,将资金从一个银行账户转到另一个银行账户,第一个操作从 一个银行账户中减少一定的资金,第二个操作向另一个银行账户中增加相应 的资金,减少和增加这两个操作必须作为整体永久性地记录到数据库中,否 则资金会丢失。如果转账发生问题,必须同时取消这两个操作。一个事务可 以包括多条INSERT、UPDATE和DELETE语句。
Oracle的特点是没有“开始事务处理”语句,但有“结束事务处理”语句 当发生如下事件时,事务就自动开始了:
(1)连接到数据库,并开始执行第一条DML语句(INSERT、 UPDATE或DELETE)。
(2)前一个事务结束,又输入另一条DML语句。 当发生如下事件时,事务就结束了:
(1)用户执行COMMIT语句提交事务,或者执行ROLLBACK语句撤 销了事务;
(2)用户执行了一条DDL语句,如CREATE、DROP或ALTER语句;
数据库原理与应用教程
(Oracle 12c 版)
5

14.2 事务处理
(3)用户执行了一条DCL语句,如GRANT、REVOKE、AUDIT、 NOAUDIT等;
(4)用户断开与数据库的连接,这时用户当前的事务会被自动提交; (5)执行DML语句失败,这时当前的事务会被自动回退。 另外,可在SQL*Plus中设置自动提交功能。
14.2.3 使用ROLLBACK语句回退全部事务 要取消事务对数据所做的修改,需要执行 ROLLBACK语句回退全部 事务,将数据库的状态回退到原始状态。
语法格式:
ROOLBACK; Oracle通过回退段(或撤销表空间)存储数据修改前的数据,通过重 做日志记录对数据库所做的修改。如果回退整个事务,Oracle将执行以下 操作。
UPDATE course SET credit=3 WHERE cno='1004'; 使用COMMIT语句提交事务。 COMMIT; 执行情况如图14.1所示。 使用COMMIT语句提交事务后,1012的课程学分已永久性地修改为3。
数据库原理与应用教程
(Oracle 12c 版)
8

14.2 事务处理
数据库原理与应用教程
(Oracle 12c 版)
7

14.2 事务处理
【例14.1】 使用UPDATE语句对course表课程号为1012的课程学分进行修改, 使用COMMIT语句提交事务,永久性地保存对数据库的修改。 启动SQL*PLUS,在窗口中,使用UPDATE语句对course表的课程学分进行修 改。
数据库原理与应用教程
(Oracle 12c 版)
6
•Hale Waihona Puke Baidu
14.2 事务处理
14.2.2 使用COMMIT语句提交事务 使用COMMIT语句提交事务后,Oracle将DML语句对数据库所作的修 改永久性地保存在数据库中。 在使用COMMIT提交事务时,Oracle将执行如下操作。 (1)在回退段的事务表内记录这个事务已经提交,并且生成一个唯一 的系统改变号(SCN)保存到事务表中,用于唯一标识这个事务。 (2)启动LGWR后台进程,将SGA区重做日志缓存在的重做记录写人 联机重做日志文件,并且将该事务的SCN也保存到联机重做日志文件中。 (3)释放该事务中各个SQL语句所占用的系统资源。 (4)通知用户事务已经成功提交。
(Oracle 12c 版)
4

14.2 事务处理
Oracle提供的事务控制是隐式自动开始的,它不需要用户显示地使用 语句开始事务处理。事务处理包括使用COMMIT语句提交事务、使用 ROLLBACK语句回退全部事务和设置保存点回退部分事务。
14.2.1 事务的开始与结束 事务是用来分割数据库操作的逻辑单元,事务既有起点,也有终点。
语法格式:
SET AUTOCOMMIT ON|OFF
其中,ON表示设置为自动提交事务,OFF为不自动提交事务。一旦设 置了自动提交,用户每次执行INSERT、UPDATE或DELETE语句后,系统 会自动进行提交,不需要使用COMMIT语句来提交。但这种设置不利于实 现多语句组成的逻辑单元,所以默认是不自动提交事务。
第14章 事务和锁
14.1 事务的基本概念 14.2 事务处理 14.3并发事务和锁
数据库原理与应用教程
(Oracle 12c 版)
1

14.1 事务的基本概念
14.1.1 事务的概念
事务(Transaction)是Oracle中一个逻辑工作单元(Logical Unit of work), 由一组SQL语句组成,事务是一组不可分割的SQL语句,其结果是作为整体 永久性地修改数据库的内容,或者作为整体取消对数据库的修改。
数据库原理与应用教程
(Oracle 12c 版)
2

14.1 事务的基本概念
14.1.2 事务特性
事务定义为一个逻辑工作单元,即一组不可分割的SQL语句。数据库理 论对事务有更严格的定义,指明事务有4个基本特性,称为ACID特性,即原 子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性 (Durability)。
(1)原子性
事务必须是原子工作单元,即一个事务中包含的所有SQL语句组成一个 工作单元。
(2)一致性
事务必须确保数据库的状态保持一致,事务开始时,数据库的状态是一
致的,当事务结束时,也必须使数据库的状态一致。例如,在事务开始时, 数据库的所有数据都满足已设置的各种约束条件和业务规则,在事务结束时 ,数据虽然不同,必须仍然满足先前设置的各种约束条件和业务规则,事务 把数据库从一个一致性状态带入另一个一致性状态。
数据库原理与应用教程
(Oracle 12c 版)
3

14.1 事务的基本概念
(3)隔离性 多个事务可以独立运行,彼此不会发生影响。这表明事务必须是独立 的,它不应以任何方式依赖于或影响其它事务。 (4)持久性 一个事务一旦提交,它对数据库中数据的改变永久有效,即使以后系 统崩溃也是如此。
数据库原理与应用教程
相关文档
最新文档