第十章数据库恢复技术•事务•故障的种类•恢复的实现技术、策略•具有检查点的恢复技术设想网上购物的一次交易,付款过程包括以下DB操作:1)更新所购商品的库存信息;2)与银行系统交互,保存客户付款信息;3)生成订单一、事务事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。定义方式BEGINTRANSACTIONBEGINTRANSACTIONSQL语句1SQL语句1SQL语句2SQL语句2。。。。。。。。。。COMMITROLLBACK事务的特性(ACID特性)原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability)1.原子性事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。2.一致性定义事务时,应保证事务执行的结果必使数据库从一个一致性状态变到另一个一致性状态.例:银行转帐,从帐号A中取出一万元,存入帐号B。B=B+10000A=A-10000BA3.隔离性对并发执行而言,一个事务的执行不能被其他事务干扰。T1的修改被T2覆盖了!读A=16A←A-3写回A=13①读A=16②③A←A-1写回A=15④T2T14.持续性一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。思考:破坏事务ACID特性的因素可能有哪些?回顾什么叫事务?如何用SQL语句定义事务?事务的特性?在哪些情况下事务的特性可能遭到破坏?二、故障的种类1.事务故障:事务在运行过程中被中断,没有达到预期的终点。例如:运算溢出,并发死锁而被撤销的事务思考:事务故障带来的问题2.系统故障:造成系统停止运转的事件,影响所有正在运行的事务。例如:系统断电,CPU故障,OS故障等思考:系统故障带来的问题3.介质故障:硬故障,指外存故障,如磁盘损坏、磁场干扰等。4.计算机病毒三、恢复的实现技术基本原理:冗余当数据库被破坏或产生不正确的数据时,用存储在系统别处的冗余数据来重建。如何建立冗余数据?数据转储登记日志文件1数据转储转储是指DBA定期地将整个数据库复制到另一个磁盘上保存起来的过程;备用数据称为副本。当数据库被破坏,可将副本重新装入。故障发生点转储运行事务↓正常运行─┼───────┼─────────────TaTbTf重装后备副本重新运行事务恢复─┼───────┴------------→转储和恢复:转储的分类静态转储:转储过程中不允许运行事务。动态转储:转储过程中允许运行事务。思考:•转储得到的副本上的数据是否正确有效?海量转储:转储全部数据。增量转储:只转储上一次转储后更新过的数据。思考:•用哪种转储方式得到的副本进行恢复更方便?•如果数据库很大,使用哪种方式转储更有效?利用静态转储副本进行恢复故障发生点静态转储运行事务↓正常运行─┼───────┼─────────────TaTbTf重装后备副本恢复─┼───────┥利用动态转储副本进行恢复TaTbTf动态转储运行事务故障发生点正常运行─┼───────┼─────────────登记日志文件登记新日志文件─────────┼─────────────转储日志文件重装后备副本,然后利用转储的日志文件恢复恢复到一━━━━━━┥致性状态转储方法小结转储状态动态转储静态转储转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储2日志文件•日志文件是用来记录事务对数据库的更新操作的文件•日志文件的内容,包括:事务开始标记、结束标记、更新操作•每个日志记录包括:–事务标识–操作类型–操作对象–更新前数据的旧值–更新后数据的新值•作用:事务故障和系统故障的恢复;协助后备副本恢复数据库。•登记日志文件的原则:按时间次序登记;先写日志文件,后写数据库三、恢复策略1事务故障的恢复由恢复子系统利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复由系统自动完成,不需要用户干预。具体步骤:1)反向扫描文件日志,查找该事务的更新操作;2)对该事务的更新操作执行逆操作。3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理;4)直至读到此事务的开始标记,事务故障恢复...