DBMS_08系统故障对策.pptVIP

  • 4
  • 0
  • 约5.58千字
  • 约 32页
  • 2017-08-31 发布于天津
  • 举报
DBMS_08系统故障对策.ppt

第八章:系统故障对策 引言 故障发生时数据必须受保护 数据不能因查询或数据库的更新受到破坏 日志 恢复 检查点 备份 8.1 可回复操作的问题和模型 故障模式 错误数据输入 介质故障 灾难性故障 系统故障 事务 事务 事务管理器 事务的正确执行 数据元素 数据库状态 一致性状态 正确性原则 事务的原语操作 三个地址空间: 保存数据库元素的磁盘块空间 缓冲区管理器所管理的虚拟或主存空间 事务的局部地址空间 例8.2 A=B,事务T在逻辑上有下述两步构成: A := A*2; B: = B*2 T的执行包括从磁盘读A和B,在T的局部地址空间算术运算,以及将其新值写入其缓冲区。 8.2 undo日志 日志 事务的交错执行使日志更复杂,仅在事务结束后记载事务的全过程是不够的。 事务重做,事务撤销 Undo日志,仅做事务撤销 日志记录 日志记录类型: START T COMMIT T ABORT T Undo日志需要的其它日志记录类型: 更新记录T,X,v Undo日志规则 两条规则: U1: 如果事务T改变了数据库元素X,那么形如T,X,v的日志记录必须在X的新值写到磁盘前写到磁盘。 U2: 如果事务提交,则其COMMIT日志记录必须在事务改变的所有数据库元素已写到磁盘后在写到磁盘,但应尽快。 写到磁盘的顺序 a)日志记录 b)改变的数据库元素本身 COMMIT日志记录 a)和b)的顺序仅对各个数据库元素单独适用,而不是对事务的更新记录集合整个适用。 刷新日志命令FLUSH LOG 例8.3 按照undo日志来重新考虑例8.2 使用undo日志的恢复 将事务划分为已提交事务和未提交事务 恢复管理器必须从尾部开始扫描日志 例 8.4 考虑例8.3中的动作序列。系统发生崩溃时可能发生的不同时机有几个;考虑每个明显差别的时机。 检查点 周期性地对日志做检查点。在一个简单的检查点中: 停止接受新地事务 等到所有当前活跃的事务提交或中止,并且在日志中写入COMMIT或ABORT记录。 将日志刷新到磁盘 写入日志记录CKPT,并再次刷新日志。 重新开始接受事务。 恢复 例8.5 非静止检查点 建立步骤: 1) 写入日志记录START CKPT(T1,…,Tk)并刷新日志。其中T1,…,Tk是所有的活跃事务。 2) 等待T1,…,Tk中的每一个提交或中止,但允许其它事务开始。 3) 当T1,…,Tk都已完成时,写入日志记录END CKPT并刷新日志。 非静止检查点 恢复: 从尾部开始扫描日志,找到所有未完成的事务,恢复为旧值;扫描过程中: 如果先遇到END CKPT,… 如果先遇到START CKPT(T1,…,Tk),… 例8.6 8.3 redo日志 redo日志和undo日志的主要区别: 1) undo日志在恢复时取消未完成事务并忽略已提交的事务,而redo日志忽略未完成的事务并重复已提交事务所做的改变。 2) undo日志要求在COMMIT日志记录到达磁盘前将修改后的数据库元素写到磁盘,而redo日志要求COMMIT日志记录在任何修改后的值到达磁盘前出现在磁盘上。 3) 当遵循undo规则U1和U2时,发生改变的数据库元素的旧值才是我们所需要的;而使用redo日志恢复时,我们需要的是新值。 redo日志规则 redo日志记录T,X,v 提前写日志规则: R1:在修改磁盘上的任何数据库元素X以前,保证所有与X的这一修改相关的日志记录都必须出现在磁盘上。(包括更新记录T,X,v和COMMIT T记录) 当使用redo日志时: 指出被修改元素的日志记录 COMMIT日志 改变的数据库元素本身 使用redo日志的恢复 确定提交的事务 从日志首部开始扫描日志。对遇到的每一T,X,V记录: 如果T是未提交的事务,则什么也不做。 如果T是提交的事务,则为数据库元素X写入值v。 对每个未完成的事务T,在日志中写入一个ABORT T记录并刷新日志。 例8.8 redo日志的检查点 在检查点的开始和结束之间,将已被提交事务修改但还未写到磁盘的所有数据库元素写到磁盘。 不需等待活跃事务提交或中止就能完成检查点。 执行redo日志的非静止检查点的步骤: redo日志的检查点 1) 写入日志记录START CKPT(T1,T2,…,Tk),其中T1,T2,…,Tk是所有活跃(即未提交的)事务,并刷新日志。 2) 将START CKPT记录写入日志时所有提交事务已经写到缓冲区但还没有写到磁盘的数据库元素写到磁盘 3) 写入日志记录END CKPT,并刷新日志。 使用带检查点的redo日志的恢复 最后一条检查点记录是END CKPT。 最后一条检查点记录是START CKPT(T1,T2,…Tk)。 例8.10 8.4 undo/redo日志 Undo

文档评论(0)

1亿VIP精品文档

相关文档