1、第十章 数据库恢复技术事 务v事 务 定 义 事 务 是用 户 定 义 的一个数据 库 操作序列构成, 这 些操作要么全做,要么全不做,是一个不可分割的工作 单 位。 事 务 与 应 用程序是两个概念,一般来 说 ,一个 应 用程序可以包含多个事 务 。 事 务 的开始与 结 束可以由用 户显 式控制。如果用 户 没有 显 式定 义 事 务 , 则 由 DBMS按缺省 规 定自 动 划分事 务 。SQL中事 务 的定 义v事 务 以 Begin transaction开始,以 Commit work或 Rollback work结 束。vCommit work表示提交,事 务 正常 结 束。v
2、Rollback work表示事 务 非正常 结 束,撤消事务 已做的操作,回 滚 到事 务 开始 时 状 态 。事 务 的例子BEGIN TRANSACTIONREAD 甲 账户 余 额 ;甲 账户 余 额 = 1000;IF 甲 账户 余 额 0 THEN;ROLLBACK WORK;ELSEWRITE 甲 账户 余 额 ;READ 乙 账户 余 额 ;乙 账户 余 额 =1000;WRITE 甲 账户 余 额 ;COMMIT WORK;事 务 的特性( ACID)v原子性 (Atomicity)事 务 是数据 库 的 逻辑 工作 单 位,事 务 中包括的 诸 操作要么全做,要么全不做。v
3、一致性 (Consistency)事 务执 行的 结 果 应 当使数据 库 从一个一致性状 态转变为 另一个一致性状 态 。事 务 的特性( ACID)v隔离性 (Isolation)一个事 务 的 执 行不能被其它事 务 干 扰 。即一个事 务 内部的操作及使用的数据 对 其它并 发 事 务是隔离的,并 发执 行的各个事 务 之 间 不能相互干 扰 。事 务 的特性( ACID)v持久性 (Durability)一个事 务 一旦提交之后,它 对 数据 库 的影响必 须是永久的。事 务 提交后,系 统发 生故障不能改 变事 务 的持久性。数据 库 恢复概述v虽 然数据 库 系 统 中采用了各种
4、措施来保 证 系统 安全性和完整性,但 计 算机系 统 的故障是不可避免的, 这 些故障 轻则 造成运行事 务 的非正常中断,影响数据 库 中数据的正确性,重 则破坏数据 库 ,使数据 库 中的全部或部分数据 丢失,因此数据 库 管理系 统 必 须 具有把数据 库从 错误 状 态 恢复到某一已知正确状 态 的功能, 这 就是数据 库 的恢复。数据 库 恢复是通 过数据 库 管理系 统 的恢复子系 统 完成的。数据 库 恢复概述v数据 库 恢复子系 统 的目的包括: 保 证 事 务 的原子性,即确保一个事 务 被交付运行后,要么 该 事 务 中的所有数据 库 操作都被成功地完成,而且 这 些操作的 结 果被永久地存 储到数据 库 中,要么 这 个事 务对 数据 库 没有任何影响。 当系 统发 生故障以后,数据 库 能 够 恢复到正确状 态 。故障的种 类v事 务 内部的故障 事 务 内部的故障包括可 预 期的和不可 预 期的。可 预 期的是指可以通 过 事 务 程序本身发现 和 处 理的故障。而不可 预 期的 错误 是指那些不能由 应 用程序 处 理的事 务 故障,如死 锁 ,运算溢出, 违 反完整性 规则 等。