4.5数据库恢复技术 故障分类 存储器结构 恢复与原子性 基于日志的恢复 并发事务的恢复 ·缓冲管理 非易失性存储器丢失信息的故障 · ORACLE恢复
4.5 数据库恢复技术 • 故障分类 • 存储器结构 • 恢复与原子性 • 基于日志的恢复 • 并发事务的恢复 • 缓冲管理 • 非易失性存储器丢失信息的故障 • ORACLE恢复
故障分类 事务故障 逻辑错误:因为某些内部错误条件导致事务不能完 成 系统错误:因为某种错误条件(如死锁)导致数据库系 统终止一个活跃事务 系统崩溃:停电故障或者其他软硬件故障导致系统崩溃. 故障-停止假设:假设非易失性存储器的内容不会因 系统崩溃而破坏 数据库系统通过许多完整性检查来防止磁盘数据 被破坏 磁盘故障:磁头损坏或类似的磁盘故障可能破坏全部或 部分磁盘存储器 假设损坏是可以检测到的:磁盘驱动器使用校验和 来检测故障
故障分类 • 事务故障: – 逻辑错误: 因为某些内部错误条件导致事务不能完 成 – 系统错误: 因为某种错误条件(如死锁)导致数据库系 统终止一个活跃事务 • 系统崩溃: 停电故障或者其他软硬件故障导致系统崩溃. – 故障-停止假设: 假设非易失性存储器的内容不会因 系统崩溃而破坏 • 数据库系统通过许多完整性检查来防止磁盘数据 被破坏 • 磁盘故障: 磁头损坏或类似的磁盘故障可能破坏全部或 部分磁盘存储器 – 假设损坏是可以检测到的: 磁盘驱动器使用校验和 来检测故障
恢复算法 恢复算法是指即使发生故障也能确保数据库一致性和 事务原子性及持久性的技术 恢复算法有两个部分 1.在正常事务处理过程中采取行动来确保有足够的信 息用于从故障恢复 2.在故障发生后采取行动来将数据库内容恢复到一个 确保原子性,一致性和持久性的状态
恢复算法 • 恢复算法是指即使发生故障也能确保数据库一致性和 事务原子性及持久性的技术 • 恢复算法有两个部分 1. 在正常事务处理过程中采取行动来确保有足够的信 息用于从故障恢复 2. 在故障发生后采取行动来将数据库内容恢复到一个 确保原子性, 一致性和持久性的状态
存储器结构 易失性( Volatile存储器: 不能在系统崩溃后保存下来 例如:主存,高速缓存 非易失性( Nonvolatile)存储器 可以在系统崩溃后保存下来 例如:磁盘,磁带,闪存,非易失性RAM(电池供电) 稳定( Stable)存储器: 虚构的能够经受任何故障的存储器 可用多个非易失性介质存储相同的副本来近似
存储器结构 • 易失性(Volatile)存储器: – 不能在系统崩溃后保存下来 – 例如: 主存, 高速缓存 • 非易失性(Nonvolatile)存储器: – 可以在系统崩溃后保存下来 – 例如: 磁盘, 磁带, 闪存, 非易失性RAM (电池供电) • 稳定(Stable)存储器: – 虚构的能够经受任何故障的存储器 – 可用多个非易失性介质存储相同的副本来近似
数据库恢复的目标 保证DB完整性、数据正确、一致: 维持事务的原子性; 故障后状态恢复
数据库恢复的目标 保证DB完整性、数据正确、一致: • 维持事务的原子性; • 故障后状态恢复
恢复的基本原则和方法 基本原则:冗余,重复存储。 方法: (1)周期备份后备副本,对整个DB进行拷贝; (2)建日志,每一次更改作记录; (3)处理: DB已被破坏,先装入备份,再利用两个状态间的 日志作恢复; 如果是错误数据,则可利用日志恢复
恢复的基本原则和方法 基本原则:冗余,重复存储。 方法: (1)周期备份后备副本,对整个DB进行拷贝; (2)建日志,每一次更改作记录; (3)处理: DB已被破坏,先装入备份,再利用两个状态间的 日志作恢复; 如果是错误数据,则可利用日志恢复
使用日志的数据库恢复技术 日志:日志是记录事务对DB操作的相关信息 基于记录项日志,一般记录更新操作(插入、删除、 修改),包含修改数据项的新值、旧值:
使用日志的数据库恢复技术 日志 :日志是记录事务对DB操作的相关信息。 基于记录项日志,一般记录更新操作(插入、删除、 修改),包含修改数据项的新值、旧值: (事务,数据项,旧 值,新值)
推迟更新技术 1日志记录 (1)事务所有数据库更新操作推迟到提交时执行,先 写日志,最后统一更新; (2)事务所有更新记录必须先写入日志,才能达到提 交点 2故障后恢复: (1)Redo(T)操作:对于日志, 将X值改为V2 幂等性:redo(redo..redo(T).)=redo(T 多次操作和一次操作效果一样
推迟更新技术 1 日志记录 (1)事务所有数据库更新操作推迟到提交时执行,先 写日志,最后统一更新; (2)事务所有更新记录必须先写入日志,才能达到提 交点。 2 故障后恢复: (1)Redo(T)操作:对于日志, 将X值改为V2; 幂等性:redo ( redo…redo(T)..)= redo(T) 多次操作和一次操作效果一样
恢复过程: 1)扫描日志,建立提交事务表,未提交事 务表; (2)对于提交事务表中所有事务T,按在日志 中顺序正向执行redo(T) (3)对于未提交事务表中事务T,放弃T,从日志中 删除
恢复过程: (1)扫描日志,建立提交事务表,未提交事 务表; (2)对于提交事务表中所有事务T,按在日志 中顺序正向执行redo(T); (3)对于未提交事务表中事务T,放弃T,从日志中 删除
即时更新技术 1日志记录 (1)先写日志,再更新,边记边写; (2)事务所有更新日志均已记录,才允许提交 2故障后恢复 (1)undo(T)操作,满足幂等性,redo逆操作: 反向扫描日志,对于记录,将X值改为V 对已插入的新记录进行删除操作,对已删除的进行插入 操作,对修改的数据恢复旧值
即时更新技术 1 日志记录 (1)先写日志,再更新,边记边写; (2)事务所有更新日志均已记录,才允许提交。 2 故障后恢复 (1)undo(T)操作,满足幂等性,redo逆操作: 反向扫描日志,对于记录,将X值改为V1; 对已插入的新记录进行删除操作,对已删除的进行插入 操作,对修改的数据恢复旧值