【数据库系统概论(王珊)】第10章 数据库恢复技术

本文详细介绍了数据库恢复技术,重点关注事务的特性、四大类故障、恢复机制及如何利用冗余数据进行恢复。内容包括事务故障、系统故障、介质故障的恢复步骤,以及静态转储、动态转储、日志文件在恢复过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库系统概论——第10章 数据库恢复技术

事务

       事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不作,是一个不可分割的工作单位。

事务的特性

       原子性、 一致性、隔离性、 持续性

事务是恢复和并发控制的基本单位。

四大类故障:

       事务内部的故障、系统故障、介质故障、计算机病毒

恢复机制涉及的两个关键问题:

       第一,如何建立冗余数据;
       第二,如何利用这些冗余数据实施数据库恢复。

建立冗余数据值常用的技术是:

       数据转储和登录日志文件。

数据转储分类

静态转储:

       在系统中无运行事务是进行的转储操作。简单,但会降低数据库的可用性。

动态转储:

       转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。

优点:

       不用等待正在运行的用户事务结束,不会影响新事务的运行。

缺点:

       不能保证副本中的数据正确有效。

海量转储:

       每次转储全部数据库。

增量转储:

       每次只转储上一次转储后更新过的数据。

日志文件:

       用来记录事务对数据库的更新操作的文件。

登记日志文件时必须遵循的两条原则:

       (1)登记的次序严格按并发事务执行的时间次序。
       (2)必须先写日志文件,在写数据库。

事务故障的回复(由系统自动完成)
步骤:

       (1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
       (2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”(Befor Image, BI)写入数据库。
        插入操作, “更新前的值”为空,则相当于做删除操作
        删除操作,“更新后的值”为空,则相当于做插入操作
       若是修改操作,则用BI(Before Image) 代替 AI(After Image)
       (3) 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
       (4)如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

系统故障的回复(由系统在重新启动时自动完成)
步骤:

       (1)正向扫描日志文件(即从头扫描日志文件)
Redo队列: 在故障发生前已经提交的事务 T1, T3, T8……
Undo队列:故障发生时尚未完成的事务 T2, T4, T5, T6, T7, T9 ……
        (2)对Undo队列事务进行UNDO处理。反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作。
       T2, T4, T5, T6, T7, T9 ……
       (3)对Redo队列事务进行REDO处理。正向扫描日志文件,对每个REDO事务重新执行登记的操作。
       T1, T3, T8……

介质故障的回复
步骤:

       (1)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。(对于静态转储的数据库副本,装入后数据库即处于一致性状态。对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。)
       (2)装入有关的日志文件副本,重做已完成的事务。
首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值