数据库恢复技术

1.事务是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分隔的工作单位。

事务具有四个特性(ACID):原子性、一致性、隔离性、持续性

  • 原子性:事务是数据库的逻辑工作单位,一个事务中包括的操作要么全做,要么不做
  • 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
  • 隔离性:一个事务的执行不能被其他事务所干扰。
  • 持续性:持续性是指一个事务已经提交,那么他对数据库的改变就是永久的,接下来的任何其他操作或者故障不应该对其执行结果有任何影响。

故障恢复可以保持事务的原子性和持久性。

2.为什么事务正常结束时会影响数据库的正确性?

事务执行的结果必须是试数据库从一个一致性状态到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就可能处于不正确的状态,或者说是不一致的状态。

3.登记日志文件时为什么必须先写日志文件,后写数据库?

把对数据库的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只执行了一个。
如果先写了数据库修改,而没有在运行记录中登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是执行了一次UNDO操作,并不会影响数据库的正确性。所以要先写日志文件,然后再写数据库的修改。

4.针对不同的故障,试给出恢复的策略和方法

事务故障的恢复步骤是:

  • 反向扫描文件日志,查找该事务的更新操作。
  • 对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库
    直至读到此事物的开始标记,该事务故障的恢复就完成。
    系统故障的恢复:
  • 正向扫描日志文件,找出再故障发生前已经提交的事务队(REDO)和未完成的是事务队列(UNDO)
  • 对未完成的事务队列中的各个事务进行UNDO处理
  • 对已经提交的事务队列中的各个事务进行REDO处理
    介质故障的恢复故障恢复步骤:
  • 转入最新的数据库后备副本(离故障发生时最近时刻的转储副本),使数据库恢复到最近一次转储时的一致性状态。
    装入转储结束时刻的日志文件副本。
    启动系统恢复命令,由DBMS完成恢复功能。

5.什么时检查点记录,检查点记录包括哪些内容?

检查点时刻所有正在执行的事务清单,如T1和T2
这些事务的最近一个日志记录的地址,如D1、D2

6.具有检查点的恢复技术有什么优点?试举一个具体例子加以说明。

利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将消耗大量的时间。此外,需要REDO处理的事务实际上已经将他们的更新操作结果写到数据库中了,恢复子系统又重新执行了这些操作,浪费了大量的时间。
例如:

在采用检查点技术之前,恢复时需要从头扫描日志文件,而利用检查点技术只需要从tc开始扫描日志,这就缩短了扫描日志的时间。
事务T3的更新操作实际上已经写到数据库中了,进行恢复时没有必要再进行REDO处理,采用检查点技术做到了这一点。

7.试述使用检查点方法进行恢复的步骤。

  • 在重新开始文件(5题图)中,找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
  • 由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。建立两个事务队列:
    UNDO-LIST:需要执行undo操作的事务集合
    REDO-LIST:需要执行redo操作的事务集合
    把ACTICVE-LIST暂时放入UNDO-LIST队列,REDO队列暂时为空。
  • 从检查点开始正向扫描日志文件
    如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列。
    如有提交的是事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到文件结束。
  • 对UNDO-LIST中的每个事务执行UNDO操作,对REDO-LIST中的每个事务执行REDO操作。

8. 什么是数据库镜像?他有什么用途?

数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据一致性。

数据库镜像的用途:

  • 用于数据库恢复。当出现介质故障时,镜像磁盘可继续使用,同时DBMS自动利用镜像磁盘数据进行数据库的 恢复,不需要关闭系统何和重装数据库副本。
  • 提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排他锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放。

考研复试数据库原理课后习题(十)——数据库恢复技术相关推荐

  1. 考研复试数据库原理课后习题(十三)——大数据管理

    大数据管理 1.什么是大数据?大数据有何特征 大数据是指无法在可容忍的时间内用现有IT技术和软硬件工具对其进行感知.获取.管理.处理和服务的数据集合 大数据的基本特征如下: 大数据的首要特征是数据量巨 ...

  2. 西安电子科技大学计算机复试题目,西安电子科技大学考研复试 微机原理练习题...

    <西安电子科技大学考研复试 微机原理练习题>由会员分享,可在线阅读,更多相关<西安电子科技大学考研复试 微机原理练习题(26页珍藏版)>请在人人文库网上搜索. 1.微型计算机原 ...

  3. 电子信息工程保研复试|考研复试——通信原理复试问题集锦

    电子信息工程保研/考研复试--通信原理问题集锦 保研/考研复试--通信原理问题集锦(复习重点以及面试真题!!良心整理) 面向考研/保研同学,时间紧任务重,归纳了去年保研面试中复习以及被问到的通信原理相 ...

  4. 编译原理课后习题答案清华大学出版社第二版

    想看更多算法题,可以扫描上方二维码关注我微信公众号"数据结构和算法",截止到目前我已经在公众号中更新了500多道算法题,其中部分已经整理成了pdf文档,截止到目前总共有800多页( ...

  5. 数据库原理(一)- 数据库系统概述

    数据库原理(一)- 数据库系统概述 四个基本概念 数据 数据库 数据库管理系统 数据库系统 四个概念的关系 数据管理技术的产生和发展 人工管理阶段 文件管理阶段 数据库系统阶段 三个阶段的比较 数据库 ...

  6. 人本原理内涵_叶澜教育学原理课后答案资料配套题库考研真题精选课后习题章节题库...

    叶澜<教育学原理>配套题库[考研真题精选+课后习题+章节题库] 第一部分 考研真题精选 一.单项选择题 二.名词解释题 三.辨析题 四.简答题 五.材料分析题 六.论述题 第二部分 课后习 ...

  7. mysql数据库原理及设计_MySQL数据库原理、设计与应用

    内容简介 本书是面向MySQL数据库初学者推出的一本入门教材,以通俗易懂的语言.丰富实用的案例,详细讲解了MySQL的开发和管理技术. 全书共12章.第1章讲解了数据库基本概念和MySQL的安装步骤: ...

  8. java 实验十 数据库实验_java 实验十 数据库 实验报告

    实验十数据库 实验目标: 1. 掌握jdbc直接链接:学会连接多种数据库: 3 掌握SQL语句: 4 掌握Statement和ResultSet的用法. 实验任务: 1. 使用Acces数据库新建一个 ...

  9. mysql数据库原理实验报告_数据库原理实验报告(Mysql).doc

    数据库原理实验报告(Mysql).doc 实验项目列表 序号实验项目名称指导教师1实验一 数据库的定义实验(验证性)2实验二 数据库的建立和维护实验(验证性)3实验三 数据库的查询实验(验证性)4实验 ...

最新文章

  1. 华为实习日记——第四天
  2. ArrayList分析
  3. error LNK2026: 模块对于 SAFESEH 映像是不安全的
  4. linux oracle12c dbca,Linux下Oracle 12c R2图形化安装笔记
  5. 重学java基础第十课:windows快捷键
  6. Air Data System
  7. mysql数据库从删库到跑路之mysq索引
  8. React学习(8)—— 高阶应用:不使用ES6、JSX实现React
  9. git push报错 ! [remote rejected] master -> master (push declined due to email privacy restrictions)
  10. 2021-2025年中国冲浪板鳍行业市场供需与战略研究报告
  11. 阿里云泄露 40 家名企源代码!
  12. 举例说明html语言的结构,第2章、HTML语言的基本结构.doc
  13. 在Linux(Ubuntu)下编写编译C语言
  14. python123反素数_初学python之路-day01
  15. 二进制编码转ASCII字符与字符转二进制码的小解码器、编码器
  16. 冷知识,PCB工程师的等级之分
  17. 麻瓜编程python爬虫微专业_麻瓜编程·python实战·1-3作业:爬取租房信息
  18. 如何下载网页上的音频文件
  19. 工作多年,分享16条实用职场经验给你
  20. 迪杰斯特拉算法简单实现

热门文章

  1. 支付宝小程序云开发(Serverless)
  2. 学富五车的你,敢迎战Python开发的成语接龙游戏吗?
  3. 小甲鱼《零基础学习Python》课后笔记(二十三、二十四):递归——这帮小兔崽子和汉诺塔
  4. 如何解决CPU使用率过高问题
  5. 减少系统的停顿时间(STW)的增量收集算法 和分区算法
  6. Witt向量简介 §1.1:环上赋值基础
  7. 网络训练技巧--参数初始化与优化方法
  8. access百度翻译 get_【Access示例】英文翻译成中文
  9. centos6.4下安装fetion
  10. MPB:微生物所蔡磊组-​​基于二代测序的真菌基因组组装和注释