三篇系统篇
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库恢复小结
数据库恢复的基本原理:冗余。 利用存储在其它地方的备份数据来重建数 据库。
恢复的实现技术:复杂。 恢复子系统的代码要占系统全部代码的10% 以上。
第七章 数据库恢复技术
7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结
2)有些事务已经完全执行成功,但是还没有来 得及把结果写到数据库中,因此,当系统重新 启动时,要求把这一部分的事务结果重新写到 数据库中去。重做Redo。
三、介质故障
系统故障 —— 软故障 介质故障 —— 硬故障:
✓磁盘损坏 ✓磁头碰撞 ✓强磁场干扰
介质故障的影响: ✓破坏数据库或部分数据,发生的可能性小,
一、什么是事务
事务(Transaction) 是用户定义的一个数据库操作序列,这些操作 要么全做,要么全不做,是一个不可分割的工 作单位
事务和程序是两个概念 ✓在关系数据库中,一个事务可以是一条SQL
语句,一组SQL语句或整个程序 ✓一个应用程序通常包含多个事务
事务是数据库恢复和并发控制的基本单位
7.3 故障的种类
事务内部故障 系统故障 介质故障 计算机病毒
一、事务故障
什么是事务故障 ✓某个事务在运行过程中由于种种原因未
运行至正常终止点就夭折了
1)可以预期的事务故障
✓在事务程序中可以预先估计到的错误 ✓可以在事务程序的代码中加入判断和
ROLLBACK语句,当事务执行到 ROLLBACK语句时,由系统对事务进行 回滚操作,撤销所有刚刚进行的操作。
这些备用的数据文本称为后备副本或后援副本
转储的分类
静态转储 动态转储 海量转储 增量转储
转储状态 转储方式
1.静态转储
静态转储:从转储开始到转储结束的整个过程 中,不能有事务在运行,即不允许对数据库进 行任何存取、修改操作。因此,静态转储得到 的结果一定是一个数据一致性的副本。
优点:简单,易操作。 缺点:由于在转储时不能运行事务,即不能对 数据库进行任何操作,降低了数据库的可用性。
7.4 恢复的实现技术
数据库恢复包括2个关键问题:
✓ 如何建立冗余数据 —— 如何备份数据库或数 据库中的数据: ➢ 数据转储 ➢ 登录日志文件
✓ 当数据库被破坏时,如何利用这些备份数据 来恢复数据库。
7.4.1 数据转储
转储:是指DBA定期的将整个数据库复制到磁 带或另一个磁盘上保存起来的过程
3.海量转储与增量转储
海量转储: 每次转储全部数据库 增量转储: 只转储上次转储后更新过的数据
海量转储与增量转储比较 ✓从恢复角度看,使用海量转储得到的后备副
本进行恢复往往更方便 ✓但如果数据库很大,事务处理又十分频繁,
则增量转储方式更实用更有效
4.转储方法小结
转储方法分类
转储 方式
海量转储 增量转储
在动态转储时,必须建立日志文件,协助后备 副本进行数据库故障恢复
在静态转储中,也可以建立日志文件。当使用 后备副本把数据库恢复到某一个正确状态后, 还可以使用日志文件把这一刻后的事务处理重 新做一次,从而恢复尽可能多的数据
三、登记日志文件的原则
在建立日志文件时,必须遵循2条原则:
✓原则1:登记的次序严格按照并行事务执行 的时间
✓Undo队列:Βιβλιοθήκη 障发生时尚未完成的事务 T2, T4, T5, T6, T7, T9 …...
系统故障的恢复步骤
2. 对Undo队列事务进行UNDO处理 反向扫描日志文件,对每个UNDO事务的更 新操作执行逆操作 T2, T4, T5, T6, T7, T9 ……
3. 对Redo队列事务进行REDO处理 正向扫描日志文件,对每个REDO事务重新 执行登记的操作 T1, T3, T8…..
空值) ✓更新后数据的新值(对删除操作而言, 此项为空
值)
日志文件的内容(续)
4. 以数据块为单位的日志文件内容 ✓事务标识 ✓被更新的数据快
注意:将更新前和更新后的整个数据块都放 入到日志文件,因此不需要操作类型和操作 对象等信息。
二、日志文件的用途
在事务故障恢复和系统故障恢复时,必须使用 日志文件
事务故障的恢复步骤
3. 继续反向扫描日志文件,查找该事务的其他更 新操作,并做同样处理。
4. 如此处理下去,直至读到此事务的开始标记, 事务故障恢复就完成了。
7.5.2 系统故障的恢复
系统故障对数据库的影响及其相应的恢复方法有 以下2 种:
✓有些事务没有执行成功就被迫中止,因此,当 系统重新启动时,要求撤销Undo 这些事务已 经做过的所有操作,从而保证数据的一致性。
✓各个事务的所有更新操作
注意:每个事务的开始标记、每个事务的结束标 记、每个更新操作均作为日志文件中的一个日 志记录。
以记录为单位的日志文件内容
一个日志记录的内容:
✓ 事务标识 ✓ 操作类型(插入、删除或修改) ✓操作对象(记录ID、Block NO.) ✓ 更新前数据的旧值(对插入操作而言,此项为
一、事务故障
2)非预期的事务故障 ✓在事务程序中不可能事先估计到的错误 ➢运算溢出 ➢数据错误 ➢并发执行的事务发生死锁 而被迫撤销某个事务等
事务故障的恢复
对于事务内部故障,可以采用的恢复方法是:
撤消事务(UNDO) ✓强行回滚(ROLLBACK)该事务,
即清除该事务对数据库的所有修改, 使得这个事务好象根本没有执行过一 样。
1. 原子性
事务的原子性: ✓事务是数据库的逻辑工作单位 ✓事务中包括的诸操作要么都做,要么都不做
保证原子性是数据库系统本身的职责,由DBMS 的事务管理子系统来实现
2. 一致性
事务的一致性:事务执行的结果必须是使数据 库从一个 一致性状态变到另一个一致性状态
✓事务一致性状态:数据库中只包含成功事务 提交的结果
第七章 数据库恢复技术
7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结
7.1 事务的基本概念
一、什么是事务 二、如何定义事务 三、事务的特性
✓有些事务已经完全执行成功,但是还没有来得 及把结果写到数据库中,因此,当系统重新启 动时,要求重做Redo 这些事务并把结果写入 数据库中去。
系统故障的恢复由系统在重新启动时自动完成, 不需要用户干预
系统故障的恢复步骤
1. 正向扫描日志文件(即从头扫描日志文件)
✓Redo队列: 在故障发生前已经提交的事务 T1, T3, T8…..
但破坏性最大。
三、介质故障
介质故障的恢复:
1)把备份的数据库恢复到一个新的磁盘上, 使数据库处于备份时的正确状态;
2)在日志文件中找到从备份那一刻到发生介 质故障时所提交的成功事务,并把所有的这 些事务重做一遍。
四、计算机病毒造成故障
计算机病毒是一种人为的故障或破坏,可以 影响软件、硬件、介质等。 解决方法:尽量防毒。
执行 ✓事务在运行过程中被强行停止
第七章 数据库恢复技术
7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结
7.2 数据库恢复概述
故障是不可避免的 ✓计算机硬件故障 ✓系统软件和应用软件的错误 ✓操作员的失误 ✓恶意的破坏 故障的影响 ✓运行事务非正常中断 ✓破坏数据库
二、如何定义事务
用户显示定义的2种方式:
(1) BEGIN TRANSACTION SQL 语句1 SQL语句2
COMMIT
说明:事务正常结束,提交事务的所有操作 (读+更新),事务中所有对数据库的更 新操作永久生效。
二、如何定义事务
用户显示定义的2种方式:
(2) BEGIN TRANSACTION SQL 语句1 SQL语句2
转储状态
动态转储
静态转储
动态海量转储 静态海量转储
动态增量转储 静态增量转储
5. 转储策略
应定期进行数据转储,制作后备副本。 但转储又是十分耗费时间和资源的,不能频繁 进行。 DBA应该根据数据库使用情况确定适当的转储 周期和转储方法。
✓每天晚上进行动态增量转储 ✓每周进行一次动态海量转储 ✓每月进行一次静态海量转储
事务故障的恢复步骤
1. 反向扫描文件日志(即从最后向前扫描日志文 件),查找该事务的更新操作。
2. 对该事务的更新操作执行逆操作。即将日志记 录中“更新前的值”写入数据库: ✓若是插入操作, “更新前的值”为空,则相 当于做删除操作 ✓若是删除操作,“更新后的值”为空,则相 当于做插入操作 ✓若是修改操作,则用修改前的值代替修改后 的值。
隔离性由DBMS的并发控制自子系统实现。
4. 持续性
持续性(永久性) ✓一个事务一旦提交,它对数据库中数据的改
变就应该是永久性的。 ✓接下来的其他操作或故障不应该对其执行结
果有任何影响。
持久性由DBMS的恢复管理子系统实现。
破坏事务特性的因素
保证事务ACID特性是事务处理的任务
破坏事务ACID特性的因素 ✓多个事务并行运行时,不同事务的操作交叉
二、系统故障
系统故障:
✓引起系统停止运行,并要求重新启动系统的 事件,都称为系统故障
➢某些硬件故障(CPU坏) ➢软件故障(OS,DBMS,应用程序
出现错误) ➢突然停电 影响:正在运行的事务都要受到影响,但是 不会破坏数据库。
系统故障的恢复
1)有些事务没有执行成功就被迫中止,因此, 当系统重新启动时,要求数据库的恢复子系 统撤销这些事务已经做过的所有操作,从而 保证数据的一致性。撤销Undo。
2. 动态转储
动态转储:在转储期间允许对数据库进行存取 或修改操作,即允许事务在运行,转储和用户 事务可以同时执行。
优点:用户事务可以和转储并行进行,不会影 响新事务的运行。 缺点:不能保证副本中的数据正确有效。
解决方法:必须在转储期间把所有事务对数据 库的修改活动记录下来,建立一个日志文件, 这样,把备份的副本和日志文件结合起来才能 把数据库恢复到某一个正确的状态。
7.4.2 登记日志文件
1. 日志文件 是用来记录事务对数据库的更新操作的文件
2. 日志文件的格式 以记录为单位的日志文件 以数据块为单位的日志文件
日志文件的内容(续)
3. 以记录为单位的日志文件内容
✓各个事务的开始标记(BEGIN TRANSACTION) ✓ 各个事务的结束标记(COMMIT或ROLLBACK)
数据库恢复概述(续)
数据库的恢复: ✓数据库管理系统必须具有把数据库从错误状
态恢复到某一个已知的正确状态的功能。
数据库系统采用的恢复技术是衡量系统优劣的 重要指标。
第七章 数据库恢复技术
7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结
✓原则2:必须先写日志文件,后写数据库。
第七章 数据库恢复技术
7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结
7.5.1 事务故障的恢复
事务故障:事务在运行至正常终止点前被中止 恢复方法:由恢复子系统利用日志文件撤消 (UNDO)此事务已对数据库进行的修改 由系统自动完成,不需要用户干预
✓事务不一致状态:数据库中包含失败事务的 结果
确保事务的一致性是编写事务的应用程序员的职 责,系统运行时,由DBMS的完整性子系统检查 该任务。
3. 隔离性
当多个事务并发执行时: ✓一个事务的执行不能被其他事务干扰 ✓一个事务内部的操作及使用的数据对其他并
发事务是隔离的 ✓并发执行的各个事务之间不能互相干扰
ROLLBACK
说明:事务异常终止,事务运行的过程中发 生了故障,不能继续执行,回滚事务的所 有更新操作,事务滚回到开始时的状态。
二、如何定义事务
系统隐式定义方式:
当用户没有显式地定义事务时,DBMS按 缺省规定自动划分事务。
三、事务的特性(ACID特性)
事务的ACID特性: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持续性(Durability )