数据库软考-数据库恢复知识考点①

0 阅读3分钟

解题思路:

  1. 找到检查点(CHECKPOINT)
  2. 观察检查点之前有START标志的事务。
  3. 将这些事务分为以下三类

(1)在检查点之前提交(COMMIT)的事务: 这类事务在检查点时已经正

常结束,并不是活动事务,它所做的所有操作已经更新到了数据库,在

恢复时不用做任何操作。

(2)在检查点之后提交的事务: 这类事务在检查点时并没有正常结束,

是活动事务,故障恢复时需要做REDO(重做)。

(3)在检查点之前和之后都没有提交的事务: 这类事务在检查点时并

没有正常结束,是活动事务,故障恢复时需要做UNDO(撤销)。

例题实战

image.png 可以参考下面这个表

image.png

问题1:请给出系统恢复时需要重做(Redo)的事务列表和需要撤销(Undo)的事务列表。

答案:很明显 T1在故障发生前已经提交了事务,所有不用管,T2在故障发生后提交的需要做重做(Redo)处理,T3在故障发生前没有提交在故障发生后也没有提交,所以做 重做(Undo)处理。 当然答题的时候简单点就像这样写即可:

Redo:T2

Undo:T3

**问题2:假设各数据项的初始值为:I=22,J=45,K=9,系统出错恢复后,I,J,K的数值会恢复为多

少?**

答案:做这个的时候按事务顺序写个草稿

I=3

L=37

J=5

这里发现T1提交了,就说明数据时间改了,那么I=3就是OK了, 我在后面备注一下

I=3 OK

L=37

J=5

M=15

K=11

然后这里是检查点的位置,

这里是T2提交了

然后就故障了


以上就是我们的大概草稿,由此分析可知,I=3是板上钉钉的事情了,接下来就是J、K的值

我们发现T2(L、J)事务是在检查点之后提交的,这里我们就能做出判断,要做Redo操作,

那么J原本的45的值就会改成5,L的值就会改成37(题目没问,我们也分析了), T3(M、K)事务我们发现它在检查点之前或者之后都没有提交事务,那么就做撤销(Undo)操作,原来的值不变。那么K=9。

最终答题:I=3,J=5,k=9

问题3 假设掉电造成磁盘介质损坏,数据库无法启动,请用100字以内的文字简要说明其恢复过程。

常见的有三种故障

  1. 事务故障
  2. 系统故障
  3. 介质故障

这里题目提到磁盘介质损坏,我们就应该想到是介质故障

答:更换存储介质,重装数据库,装载故障前最近一次的数据库备份(数据库镜像)和日志文件副本,撤销(UND0)故障发生时(检查点前)未完成的事务,重做(RED0)(检查点后)已提交的事务。

通用模板

image.png 如果是事务故障我们该怎么回答:

image.png

如果是系统故障我们该怎么回答:

image.png