一、事务
1.事务的定义:
用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
2.事物的特性:
原子性:Atomicity一个事务的操作要么全做,要么全不做——恢复机制
一致性:Consistency使数据库从一个一致性状态变成另一个一致性状态——原子性、隔离性、持久性
隔离性:Isolation一个事务的执行不被其他事务干扰——并发控制机制——引申出事务的隔离级别,见java数据库管理
持久性:Durability一个事务一旦提交,它对数据库的改变应该是永久性的,接下来的其他操作或故障不应该对其执行结果有影响——恢复机制
3.事务的状态
- 事务的开始begin trans
- 事务的提交commits
- 事务的回滚 rollback
- 事务的结束 end trans
二、故障种类
1.事务内部的故障
2.系统故障(软故障)
3.介质故障(硬故障)
4.计算机病毒
数据库具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能——数据库的恢复
三、恢复的实现技术
1.数据转储
DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。
(1)转储状态
静态转储:在系统中无运行事务时进行的转储操作;
动态转储:转储期间允许对数据库进行存取或修改
(2)转储方式
海量转储:每次转储全部数据
增量转储:每次只转储上一次转储后更新过的数据
2.登记日志文件
(记录对数据库数据的修改,保护数据库以防故障发生以及恢复数据时使用)
必须先写日志文件,后写数据库
日志文件的特点
- 每一个数据库至少包含两个日志文件组,每个日志文件组包含至少两个日志文件
- 日志文件组以循环的方式进行写操作
- 每一个日志文件成员对应一个物理文件。
如果数据库日志满了,会出现什么情况?
只能执行查询等数据库读操作,不能执行更改、备份等写操作。原因是任何写操作都要记录日志。
四、恢复策略
1、事务故障的恢复
- 反向扫描日志文件,查找该事务的更新操作;
- 对事务的更新操作做逆操作
2、系统故障的恢复
- 正向扫描日志文件,找出故障发生前已经提交的事务
- 将已提交事务的标记计入重做队列
- 同事找出故障发生时尚未完成的事务,将其事务标记记入撤销队列
- 对撤销队列中的各个事务进行撤销处理undo
- 对重做队列中的各个事务进行重做处理redo
3、介质故障的恢复
- 装入最新的数据库副本
- 装入相应的日志文件副本,重做已完成的事务