数据库恢复技术
事务
事务是用户定义的一个数据库操作系列,这些操作要么全做,要么不做,是一个不可分割的工作单位
事务通常以BEGIN TRANSACTION 开始,以COMMIT或者ROLLBACK结束。
COMMIT表示提交,即提交事务的所有操作。就是将事务中所有对数据库更新操作写回到磁盘上的物理数据库中去,事务正常结束。
ROLLBACK表示回滚,即系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始的地方。
事务的四 个特点:
1、原子性
2、隔离性
3、一致性
4、持续性
事务不仅是恢复的基本单位,还是并发控制的基本单位
故障的种类和恢复策略
1、事务内部故障——运算溢出、并发事务发生死锁而被选中撤销该事务、违反了某些完整性限制等
恢复步骤
-
-
- 反向扫描文件日志(从后往前扫描),查找该事务的更新操作
- 对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库
- 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
- 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。
-
2、系统故障——特定类型的硬件错误(如CPU故障)、操作系统故障、DBMS代码错误、系统断电
恢复步骤:
-
-
- 正向扫描日志文件(1.将在故障发生前已经提交的事务加入重做(REDO)队列,这些事务既有begin transaction记录,也有commit记录;2.将在故障发生时未完成的事务加入撤销(Undo)队列,这些事务中只有begin transaction记录,无相应的commit记录)
- 对撤销(Undo)队列事务进行撤销(Undo)处理(1.反向扫描日志文件,对每个undo事务的更新操作进行逆操作;2.将日志记录中“更新前的值”写入数据库)
- 对重做(Redo)队列事务进行重做(Redo)处理(1.正向扫描日志文件,对每个REDO事务重新执行登记的操作;2.将日志记录中“更新后的值”写入数据库
-
3、介质故障——磁盘损坏、磁头碰撞、操作系统的某种潜在错误、瞬时强磁场干扰
- 装入最新的数据库后备副本,是数据库恢复到最近一次转储时的一致性状态
- 装入相应的日志文件副本,重做已完成的副本
4、计算机病毒
恢复的基本原理是冗余
建立冗余最常用的技术是数据转储和登记日志文件
1、数据转储
- 静态转储——在系统中的无运行事务时运行的转储操作
- 动态转储——转储期间允许对数据库进行存取和修改
2、登记日志文件
日志文件是用来记录事务对数据库的更新操作的文件
日志文件的作用:
- 事务故障恢复和系统故障恢复必须用日志文件
- 在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库
在静态转储的方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转出结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。
登记日志文件的规则:
- 登记的次序严格按并发事务执行的时间次序
- 必须先写日志文件,后写数据库
原文地址:http://www.cnblogs.com/hinima/p/16900272.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性