一、事务的基本概念:
事务:一个数据库操作序列;一个不可分割的工作单位;恢复和并发控制的基本单位;
事务和程序:一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序;程序通常包含多个事务
事务的定义:BEGIN TRANSACTION
SQL1
SQL2
…
COMMIT|ROLLBACK
性质:原子性(事务管理部件处理);一致性(开发人员确保);隔离性(并发控制部件);持续性(恢复管理部件)
二、数据库恢复概述:
故障是不可避免的(系统故障、人为故障)
数据库恢复:把数据库从错误状态恢复到某一已知的正确状态
三、故障的类型:
事务内部故障:可以通过事务程序本身发现的或者非预期的
撤销事务(UNDO)来解决
系统故障:软故障,造成系统停止运转的任何时间,使得系统需要重新启动
发生故障时,事务未提交(UNDO);
发生故障时,事务提交了,但缓冲区中信息尚未完全写回磁盘,重做(REDO)
介质故障:硬故障,值外存故障,如磁盘损坏,磁头碰撞等
装入数据库发生介质故障前某个时刻的数据副本;
重做此时开始的所有成功事务,将这些事务已提交的结果重新计入数据库
计算机病毒:一种人为的故障或者破坏,可以繁殖和传播
四、恢复的实现技术:
恢复操作的基本原理:冗余
利用存储在系统其他地方的冗余数据来重建数据库中已被破坏或不正确的数据
如何建立冗余数据:数据转储(backup),登记日志文件(logging)
数据转储:DBA将整个数据库复制到磁盘或另个磁盘上保存起来的过程,备用的数据称为后备副本或者后援副本
静态转储:在系统无运行事务时进行转储操作,转储期间不操作数据库
实现简单,降低了数据库的可用性
动态转储:转储操作与用户事务并发进行,转储期间允许对数据库进行存取修改
不用等待正在运行的用户事务结束;不会影响事务的运行
但是不能保证副本中的数据正确有效
需要把动态转储期间各事务对数据库的修改活动登记下来建立日志文件
后备副本加上日志文件才能把数据库恢复到某一正确状态
海量转储:每次转储全部数据库
增量转储:只转储上次转储后更新过的数据
日志文件:用来记录事务对数据库的更新操作的文件
格式:以记录为单位;以数据块为单位
以记录为单位:开始标记(BEGIN TRANSACTION),结束标记(COMMIT、ROLLBACK)
各个事务的更新操作:
事务标识、操作类型、操作对象、更新前后数据的值
以数据块为单位:每条日志记录的内容(事务标记、被更新的数据块)
作用:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复
登记日志文件基本原则:
登记的次序严格按照事务的执行次序;必须先写日志文件后写数据库
五、恢复策略:
事务故障的恢复:
由恢复子系统利用日志文件撤销次失误已对数据库进行的修改
由系统自动完成,对用户透明,不需要用户干预
步骤:1.反向扫描日志文件,查找该事务的更新操作;2对该事务的跟新操作执行逆操作至开始标记
系统故障的恢复:
由系统重新启动时自动完成,不需要用户干预
步骤:1.正向扫描日志文件,重做和撤销队列分别加如两种事务操作;2.该重做的重做,该撤的撤
介质故障的恢复:
重装数据库;重做已完成的事务
六、具有检查点的恢复技术:
在日志中增加检查点记录,增加重新开始文件,恢复子系统在登陆日志文件期间动态的维护日志
检查点记录的内容:建立检查点时刻所有正在执行的事务清单;这些事务最近一个日志记录的地址
重新开始文件内容:记录各个检查点记录在日志文件中的位置
恢复子系统定期或者不定期建立检查点,保存数据库状态
七、数据库镜像:
DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上;
DBMS自动保证镜像数据与主数据库的一致性
出现介质故障时,镜像磁盘继续提供使用,DBMS同时利用镜像磁盘进行数据库的恢复
未出现故障时,可用于并发操作