资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2019年10月28日,1,第六章 数据库保护,6.1 事务 6.2 数据库恢复技术 6.3 并发控制 6.4 数据库的完整性 6.5 数据库的安全性,2019年10月28日,2,学习目标,理解并掌握事务的相关概念 了解数据库保护的四方面技术: 数据库的恢复技术 并发控制 数据库的完整性 数据库的安全性,2019年10月28日,3,6.1 事务,6.1.1 事务的概念 6.1.2 事务的特性 6.1.3 SQL Server2000事务应用举例 6.1.4 事务的状态转换,2019年10月28日,4,6.1.1 事务的概念,事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务和程序是两个概念 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序 一个应用程序通常包含多个事务 事务是数据恢复和并发控制的基本单位,2019年10月28日,5,事物的三种运行模式: 1)自动提交事务 2)显式事务 3)隐性事务,每条单独语句都是一个事务。,BEGIN TRANSACTION /*事务开始*/ COMMIT /*提交事务*/ ROLLBACK /*事务回滚*/,例如银行转帐。,在前一个事务完成时则新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式的表示完成。,2019年10月28日,6,6.1.2 事务的特性,事务的ACID特性: 原子性(Atomicity)原子性由恢复机制实现 一致性(Consistency)由并发控制机制实现 隔离性(Isolation)通过并发控制机制实现 持续性(Durability )通过恢复机制实现,一个事务的执行不能被其他事务干扰,2019年10月28日,7,6.1.3 SQL Server2000事务应用举例,教材例6-2,自学,2019年10月28日,8,6.1.4事务的状态转换,活动 状态,部分 提交,全部 提交,失败,异常终止,事务状态转换图,2019年10月28日,9,6.2 数据库恢复技术,6.2.1 数据库可能出现的故障 6.2.2 数据库的恢复原理 6.2.3 SQL Server2000种数据备份与恢复的实现,数据库的恢复就是将数据库从错误的状态恢复到某一正确状态。,2019年10月28日,10,6.2.1 数据库可能出现的故障,1. 事务内部故障,2. 系统故障,3. 介质故障,可以通过事务本身发现的故障; b. 非预期故障:运算溢出、并发事务发生 死锁、违反完整性约束条件、,4. 计算机病毒,发生故障后,应强行回滚,使该事务好像 根本没有启动一样,这种恢复操作称为 事务撤销(Undo)。,指造成系统停止运转的任何事件,使得 系统要重新启动; 系统故障的影响:尚未完成事务可能已部分 写入数据库。,恢复子系统要做的工作: (1) 撤销所有未提交事务; (2) 重做所有已提交事务。,指外存故障 介质故障的影响: 破坏数据库或部分数据库; 影响部分正在执行的事务。,恢复策略:数据转储。,病毒的影响: 破坏应用程序,进而破坏数据库; 修改缓冲区; 直接破坏数据库。,恢复策略:数据转储。,2019年10月28日,11,各类故障对数据库的影响:,(1) 数据库本身被破坏;,(2) 数据库没有被破坏,但数据可能不正确。,恢复原理:冗余,2019年10月28日,12,6.2.2 数据库的恢复原理,恢复机制涉及的关键问题 1. 如何建立冗余数据,即数据库的重复存储; 数据转储(backup) 登录日志文件(logging) 2. 如何利用这些冗余数据实施数据库恢复。,2019年10月28日,13,一、数据转储,所谓转储,即DBA定期的将整个数据库复制到磁带或另一个磁盘上保存起来的过程。,转储十分耗费时间和资源,不能频繁进行。,2019年10月28日,14,1)静态转储,在系统中无运行事务时进行转储 转储开始时数据库处于一致性状态 转储期间不允许对数据库的任何存取、修改活动 优点:实现简单 缺点:降低了数据库的可用性 转储必须等用户事务结束 新的事务必须等转储结束,1、静态转储和动态转储,2019年10月28日,15,2)、动态转储,转储操作与用户事务并发进行 转储期间允许对数据库进行存取或修改 优点 不用等待正在运行的用户事务结束 不会影响新事务的运行 动态转储的缺点 不能保证副本中的数据正确有效 利用动态转储得到的副本进行故障恢复 需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件 后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态,2019年10月28日,16,海量转储: 每次转储全部数据库 增量转储: 只转储上次转储后更新过的数据 海量转储与增量转储比较 从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便 但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效,2海量转储与增量转储,2019年10月28日,17,转储方法分类,3转储方法小结,2019年10月28日,18,二、登陆日志文件,日志文件(log)是用来记录事务对数据库的 更新操作的文件。,一、日志文件的格式和内容 二、日志文件的作用 三、登记日志文件,2019年10月28日,19,1)、日志文件的格式 以记录为单位的日志文件 以数据块为单位的日志文件,2)、 日志文件内容 日志文件中的一个日志记录 (log record) 各个事务的开始标记(BEGIN TRANSACTION) 各个事务的结束标记(COMMIT或ROLLBACK) 各个事务的所有更新操作,1、日志文件的格式和内容,3)、 基于记录的日志文件,每条日志记录的内容 事务标识 操作类型(插入、删除或修改) 操作对象(记录ID、Block NO.) 更新前数据的旧值(对插入操作而言,此项为空值) 更新后数据的新值(对删除操作而言, 此项为空值),4)、 基于数据块的日志文件,事务标识 被更新的数据块,2019年10月28日,21,日志文件的作用:,(1) 事务故障恢复和系统故障恢复必须用日志文件;,(2) 动态转储方式中必须建立日志文件,后援副本和日志文件综合起来才能有效恢复数据;,(3) 静态转储方式中,数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时的状态,然后利用日志文件,把已完成事务进行重做处理,对故障发生时尚未完成事务做撤销处理。,2、日志文件的用途,2019年10月28日,22,为保证数据库是可恢复的,登记日志文件时必须遵循两条原则 登记的次序严格按并行事务执行的时间次序 必须先写日志文件,后写数据库,3、登记日志文件,2019年10月28日,23,6.2.3 SQL Server2000种数据备份与恢复的实现,2019年10月28日,24,6.3 并发控制,6.3.1 并发操作带来的不一致问题 6.3.2 并发控制封锁及解锁协议,在数据库技术中,并发是指多个事务同时访问同一数据。 与事务的并发执行相对的是事务的串行执行,即每个时刻只有一个事务运行,其他的事务只有在这个事务执行完毕后才可运行。,2019年10月28日,25,6.3.1并发操作带来的不一致问题,存在三种因并发操作带来的不一致问题: 1、丢失修改(Lost Update) 2、不可重复读(Non-Repeatable read) 3、读“脏”数据(dirty read),2019年10月28日,26,1、丢失修改,例:甲、乙两个售票点的T1,T2两个事务,丢失修改:两个事务T1和T2读入同一个数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。,(1) 读A=16,例:求A、B两个售票点的总票数,并验算,(1) 读A=50 读B=100 和=150,不可重复读:T1读取数据后,T2执行更新操作,使T1无法再现前一次读取结果,有三种情况:,(3) 读A=50 读B=99 和=149,(1) T2修改了T1读取的值;,(2) T2删除了T1读取的部分记录;,(3) T2插入了满足T1读取条件的部分记录。,后两种不可重复读也称为幻影现象。,2、不可重复读,2019年10月28日,28,例:查询A售票点的票数,(1) 读A=50 A=A-1 写A=49,读“脏”数据:T1读取数据后写回磁盘,T2读取同一数据后,T1事务被撤销。,(3) 回滚 A恢复为50,3、读“脏”数据,2019年10月28日,29,6.3.2 并发控制封锁及解锁协议,封锁是实现并发控制的一个非常重要的技术。既可使事务并发地执行又保证数据的一致性。,定义:所谓封锁就是事务在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁,加锁后事务就对该数据对象有了一定的控制,在事务释放它的锁之前,其它的事务不能更新此数据对象。,有两种类型的锁:排他锁(Exclusive Locks,简记为X锁)和共享锁(Share Locks,简记为S锁)。,排它锁,排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁,共享锁,共享锁又称为读锁 若事务T对数据对象A加上S锁,则事务T可以读A,但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,2019年10月28日,31,锁的相容矩阵,2019年10月28日,32,在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol) 何时申请X锁或S锁 持锁时间、何时释放 不同的封锁协议,在不同的程度上为并发操 作的正确调度提供一定的保证 常用的封锁协议:三级封锁协议,封锁协议(简介),2019年10月28日,33,6.4 数据库的完整性,6.4.1 数据库的完整性介绍 6.4.2 SQL中完整性约束 6.4.3 SQL Server2000中完整性约束的实现,6.4.1 数据库的完整性介绍,数据库的完整性:即数据的正确性和相容性,数据库完整性约束条件:即加在数据库数据之上的语义约束条件。,完整性检查:DBMS中检查数据是否满足完整性条件的机制。,2019年10月28日,35,6.4.2 SQL中完整性约束,三种完整性约束: 1 实体完整性约束:UNIQUE(定义候选码)、PRIMARY KEY(定义主键) 2 参照完整性约束: FOREIGN KEY() REFERENCES() ON DELETE ON UPDATE 3 用户定义的完整性约束,CREATE TABLE S (SNO CHAR(6), SNAME CHAR(10), SAGE INT, PRIMARY KEY(SNO),2019年10月28日,36,6.4.3 SQL Server2000中完整性约束的实现,在SQL Server 2000 支持五类约束,这五类约束分别是空值约束、CHECK约束、唯一性约束、主键约束和外键约束。,2019年10月28日,37,6.5 数据库的安全性,6.5.1 计算机系统的安全性问题 6.5.2 权限 6.5.3 数据库的安全性控制 6.5.4 SQL Server2000中系统安全性实现,2019年10月28日,38,6.5.1 计算机系统的安全性问题,要保证数据库系统的安全性首先要保证计算机系统的安全性。,计算机系统安全性,是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。,2019年10月28日,39,数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。,数据库的一大特点: 数据可以共享,数据库共享不能是无条件的。,例:军事秘密、 国家机密、 新产品实验数据、 市场需求分析、市场营销策略、销售计划、 客户档案、 医疗档案、 银行储蓄数据等,2019年1
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号