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

0 阅读3分钟

案例题

某装备的组装过程需要经过多道程序,由于工作空间狭小,同时只能有一人在操作间工作,所以在每道工序之间需要先完成使用配件的出库后,操作人员携带配件到操作间进行安装工作,安装过程中需要扫描配件编码以自动记录该配件的安装情况。

假设存在三个事务用于处理某一类配件的某次安装实施,事务T1负责出库登记T2负责安装登记T3负责将未使用的配件重新入库。所有三个事务执行完成后,T1出库的数量应等于T2安装的数量与T3重新入库的数量之和。

数据项1记录配件的库存数量,数据项记录成功安装的数量。某次组装过程出库了12个配件安装了6个。假设数据库系统采用检查点机制对故障进行恢复,部分日志文件如表5-1所示。

日志记录内容中:<Ti,START>表示事务Ti开始执行,<Ti,COMMIT>表示事务Ti提交,<Ti,D,V1,V2>表示事务TI将数据项D的值由V1修改为V2.例如:<T1,1,22,3>表示事务T1将数据项1的数值从22修改为3。

<Ti,D,V>表示将事务Ti回滚,数据项D的值回滚到V。表示事务Ti回滚结束。CRASH表示系统磁盘出错。请回答以下问题。

image.png

image.png

看完题目不要着急做题,理解题目最重要, 题目中加粗的都是我刻意的,能在考试出画出题目的重点,你已经成功了一半

简单来画草稿分析一下

T1 I=8,(这里就是配件库存数量只剩8,出了12个,跟题目完全一样)

T2 J=1,J=5,J=6(这里表示的是安装配件的数量,我们发现只安装了6个,还剩下6个)

T3 这里是填空,I=8这里是库存的数量,后面要填写的是库存最终的数量,

已知出口12个,只安装了6个,还剩下6个,那么这6个就要再回库存数量,所以就是8+6=14

然后CRASH 发生故障,

这里我们看题目就知道,一般流程都是要回滚了,在表中发现就T3事务没有提交,那就是T3要做Undo了, <T3,I,8>把库存数量改回8

表中最后一个填空,自然就是结束了

<T3 abort>

认真看完题目其实都能把题做出80%了,所有认真阅读题目是非常重要的。

问题1:请用100字以内的文字简要说明数据库系统常见故障类型,并说明表5-1中的日志记录表明 数据库出现哪种类型的故障。

答案: 数据库系统常见的故障类型有:

(1)事务故障:是由于程序执行错误而引起事务非预期的、异常终止的故障。

(2)系统故障:是指硬件故障、软件(DBMS、OS或应用程序)漏洞的影响,导致丢失了内存中的信息,影响正在执行的事务,但未破坏存储在外存上的信息。

(3)介质故障:是指数据库的存储介质发生故障,如磁盘损坏,瞬间强磁场干扰等。 表5-1日志记录中的数据库出现介质故障。

———————————————————————————————

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

答案:Redo:T2, Undo:T3

———————————————————————————————

问题3:根据题干中所描述的业务逻辑,请填写表5-1日志记录中的空白(a):请给出Undo恢复的补 偿日志记录,填写空白(b)和(c)。

由我们开始分析那样, a:14 b:<T3,I,8> C:<T3 abort>