数据库系统在正常停止时,会将内存中的所有日志信息、被更新过的数据写入磁盘,然后在日志文件的最后写入检查点记录 。这样,所有已提交事务的更新全部落实到磁盘中,数据库中的数据就处于一致状态。如果数据库系统异常中止,那么仍旧在内存中的日志信息、被更新的数据就全部丢失。在这种情况下,一些事务的更新处理可能只是部分落实到磁盘中,从而导致数据库处于不一致状态。重新启动时,在用户能够访问数据库中的数据之前,数据库系统要首先使用日志信息,使数据库处于一致状态。这就是崩溃恢复。
1. 崩溃恢复的处理方式
崩溃恢复就是数据库系统在异常中止后重新启动,使用数据库日志文件,恢复数据库到一致状态的过程。其关键点就是:决定那些事务需要重做,那些事务需要回滚。通过重做已提交事务,避免事务的丢失;通过回滚未完成事务,删除造成数据不一致的部分事务更新 。所有这些操作,是依靠日志文件以及文件中的最后一个检查点记录 来实现的。
数据库系统在执行检查点操作时,暂停所有事务的更新处理,将内存中的所有日志信息、被更新过的数据写入磁盘,作永久性的保存。基于日志文件的最后一个检查点记录,系统中的事务有以下三种状态:
( 1 )在此之前已经提交。这些事务的更新,肯定已经落实到磁盘,不需要考虑。
( 2 )在此之前已开始执行,但还没有提交。这些事务的更新,在此之前的部分已经落实到磁盘,但无从确定在此之后的部分是否落实到磁盘。
( 3 )在此之后开始。这些事务的更新,不能确定是否落实到磁盘。
因此,在崩溃恢复时,系统只要基于日志文件中的最后一个检查点记录,找到所有无法确定其更新全部写入磁盘的事务。对这些事务,由最后一个检查点记录开始,正向扫描日志文件,重新执行有提交记录的事务,没有提交记录的事务就进行回滚 ,这样就可以使数据库处于一致状态。
2. 崩溃恢复的处理步骤
对崩溃恢复,数据库系统大体上采用以下步骤进行处理:
( 1 )从日志文件的最后一条记录开始,由后至前扫描日志记录,找到日志文件中的最后一个检查点记录。
( 2 )找出该检查点操作发生时,正在执行、还没有提交的事务清单。然后由该检查点记录开始,正向扫描日志文件,找到该检查点操作发生后开始的新事务和提交的事务。由此我们可以得到两个事务清单:
① 有提交标识的事务清单。这些事务需要重新执行。
② 没有提交标识的事务清单。这些事务需要回滚。
( 3 )对需要重新执行的事务,从最后的检查点操作记录开始,正向扫描日志文件,找出这些事务的操作记录重新执行。对需要回滚的事务,从日志文件的最后开始,由后向前扫描,找出这些事务的操作,执行反向处理。
经过以上的崩溃恢复处理,数据库恢复到一致状态,系统就正常运行,允许用户访问数据库中的数据。
3. 崩溃恢复的使用说明
崩溃恢复由数据库系统自动完成,和数据库使用的日志归档模式无关。只要系统非正常关闭,再次启动时就要执行崩溃恢复。数据库系统在异常中止后重新启动,往往需要更长的时间才能够访问,就是因为系统要执行崩溃恢复的缘故。
崩溃恢复不需要使用数据库备份。从第 7 章我们知道:日志文件可处于活动和不活动两种状态。崩溃恢复需要使用处于活动状态的日志文件,因而它们不能被归档、删除。一旦这些活动的日志文件不小心被删除或者遭到破坏,无法完成崩溃恢复,无法恢复数据库一致性,那么整个数据库系统就遭到破坏。如果出现这种情况,就只能使用数据库备份,进行数据库的不完整恢复,从而造成数据的丢失。
如果为了提高数据库系统的处理性能,不要求事务提交前将日志信息写入磁盘,那么系统的异常中止可能会造成已提交事务的丢失,崩溃恢复不会重新执行这些事务。在这种应用环境下,在系统异常中止、重新启动后,需要进行人工检查,发现而重新执行那些丢失的事务。
转自: http://blog.chinaunix.net/u2/70714/showart_1004038.html
分享到:
相关推荐
金蝶数据库服务突然崩溃时的数据恢复.doc
innodb 日志 回滚段 & 崩溃恢复 实现详解
软件系统应急预案及快速恢复方案.docx软件系统应急预案及快速恢复方案.docx软件系统应急预案及快速恢复方案.docx软件系统应急预案及快速恢复方案.docx软件系统应急预案及快速恢复方案.docx软件系统应急预案及快速...
SQL Server数据库崩溃时恢复策略初探.pdf
恢复,在数据库崩溃的时候提供恢复,怎样、怎么要这么多子啊
oracle 备份与恢复 第一章 备份和恢复的基本概念 1. 数据丢失的分类 数据丢失可分为逻辑丢失和物理丢失。 逻辑丢失:用户错误操作和应用程序错误造成数据丢失...崩溃恢复(Crash Recovery)与实例恢复(Instance Recovery
在生产环 境中,可能由于很多原因(DC硬件故障等)造成DC崩溃,此时我们有多种方法对DC进行 还原操作,如系统重建,即如果域中有一台正常的DC,我们可以重新安装windows server 2008,提升AD,然后通过复制完成DC的...
Windows系统崩溃后快速恢复Oracle数据库的妙招.pdf
系统崩溃:由于系统崩溃而造成的数据丢失损坏; 2、支持打开镜像文件,支持选择多个磁盘进行扫描恢复 3、自动保存扫描记录,支持断点扫描 4、可修复损坏无法播放视频文件 5、可对扫描到的MP4视频文件进行预览 6、...
进程监视器 可以监视内存的进程,如果消失不存在,则可以重新启动该应用程序。达到崩溃恢复的目的。
操作系统崩溃,数据库全部⽂件都在时,数据库恢复⽅法 在论坛上,有⼈问: ⼀个朋友的Oracle数据库所在的 操作系统崩溃,现遗留下数据⽂件 ⽂件分布结构如下: d:/oracle/oradata/STAN CONTROL01.CTL CONTROL02.CTL ...
系统崩溃、恢复步骤等应急预案文档.docx
MySQL 工具myisamchk进行表的维护和崩溃恢复
Oracle实例崩溃了、模拟崩溃后的恢复
系统崩溃、恢复步骤等应急救援预案文档.doc
SQL Server数据库崩溃后的恢复之法
win764sp1主题原版dll,解决vbox因主题破解过而提示内存0x000000000不能为written造成崩溃的问题
系统崩溃:由于系统崩溃而造成的数据丢失损坏; 2、支持打开镜像文件恢复,支持选择多个磁盘进行扫描恢复 3、自动保存扫描记录,支持断点扫描 4、可对扫描到的MOV视频文件进行预览 5、扫描速度快,每分钟可达4-7GB...