数据库原理讲义8-数据库保护.ppt_第1页
数据库原理讲义8-数据库保护.ppt_第2页
数据库原理讲义8-数据库保护.ppt_第3页
数据库原理讲义8-数据库保护.ppt_第4页
数据库原理讲义8-数据库保护.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理及应用,主 讲:陈安龙,数据库保护,数据库保护包括: 数据完整性 数据安全性 并发控制 故障恢复,事务管理概况,事务概念:有时,某个工作的完成要分若干步骤。只有所有步骤都成功做完,则该项工作才完成;否则,其中任一步失败,该工作亦失败。针对此类工作特点,引入“事务”(Transactoin)概念。在DBMS中,定义此类工作为事务,并保证其执行特点。,一.事务基本概念,事务的执行保证:DBMS应保证事务执行特点以及数据库的数据完整性。如果事务执行成功,DBMS应保证事务中所有步骤对数据的更新有效;若事务失败,DBMS应撤销“已执行步骤”对数据的更新。,事务典型事例:银行A、B两个帐户间的

2、转帐工作。该工作分二步来完成,第一步,从A帐户划出X款项,第二步,向B帐户划入X款项。只有这两步都完成了,该转帐工作才完成。否则,任一步失败,则该转帐工作失败。,UPDATE Accounts SET balance = balance x WHERE account_id=A UPDATE Accounts SET balance = balance + x WHERE account_id=B,事务的组成及执行:事务是DBMS的最小执行单位,由有限的数据库操作序列组成,也是最小的故障恢复单位和并发控制单位。,说明:对数据库的操作必须自成/组合为一个事务单位,以事务为最小的单位执行之;在并发

3、执行时,亦是以事务为单位进行;在事务不完整、需要恢复数据时,仍然是以事务为单位进行。,DBMS中的事务控制:,(1) 隐式的事务控制:默认情况下,DBMS一般将一个数据库操作(如一条SQL语句)当作一个事务来控制执行。,(2) 显式的事务控制:对涉及多步操作的(一般含多条SQL语句) 、有事务特点的工作,则需要人为地、显式地将这些操作“界定”组合成一个事务交DBMS控制执行。,说明:事实上,有时一条SQL语句的工作也有事务特点,例如一条删除多行数据的SQL语句。,SYBASE/SQL SERVER提供的界定事务的常用语句:, BEGIN TRANSACTION | TRAN | WORK 事务

4、名, ROLLBACK TRANSACTION | TRAN | WORK 事务名, COMMIT TRANSACTION | TRAN | WORK 事务名,事务控制语句使用示例,BEGIN TRAN accout_transfer UPDATE Accounts SET balance = balance x WHERE account_id=A IF ERROR 0/* 有错误出现 */ ROLLBACK TRAN/* 回退事务 */ UPDATE Accounts SET balance = balance + x WHERE account_id=B IF ERROR 0 /* 有错

5、误出现 */ ROLLBACK TRAN ELSE COMMIT TRAN /* 提交事务 */,二. 事务的ACID准则,(1)原子性(Atomicity):事务中的所有操作要么成功执行,要么都不执行(Nothing or All)。其保证由事务管理器(Transaction Manager)负责,“提交(Commit)”和“回退(Rollback)”操作是其中的关键。, COMMIT表明事务成功结束:告诉事务管理器事务成功完成,DB又处于一致状态,该事务的所有更新操作现可被提交或永久保留。,DBMS为保证在并发访问和故障情况下对数据的维护,要求事务有如下四个重要特征或准则(ACID):,

6、ROLLBACK表明事务不成功结束:告诉事务管理器出现故障,DB可能处于不一致状态,该事务中已做的所有更新操作必须回退或撤销(Undo)。事务回退后,DB又处于一致状态。,说明:,(2)一致性(Consistency):在无其它事务并发执行时,单独运行的事务应保证DB从一个一致状态转到另一个一致状态,但事务内勿需保证一致性。该特性的一部分需由用户负责。,(4)持久性(Durability):一旦DBMS告诉用户事务成功执行,其对数据库的影响应是持久的,即使事务导致的变化在写盘之前系统崩溃仍应如此。该特性和第一个特性由故障恢复通过日志负责。,(3)隔离性(Isolation):DBMS为改善性能

7、要交错执行几个事务的操作,但要求这些并发执行的事务,对用户而言象是单独执行一样。该特性由并发控制负责。,三. 事务管理的内容,由于出现异常,中途中止或不成功退出;,遇到如不能访盘等异常状态而中止。,引起事务不完全的三个故障原因:,ACID准则的保证:不仅在系统正常如此,在系统故障时也应如此;在单个事务执行时如此,在事务并发执行时也应如此。,可能因电源等故障,系统崩溃;,故障恢复(Crash Recovery):保证事务在故障时满足ACID准则的技术;,并发控制(Concurrency Control):保证事务在并发执行时满足ACID准则的技术;,事务管理(Transaction Manage

8、ment):故障恢复和并发控制的合称。,一、并发控制,1、什么是并发控制,即控制数据库系统的并发操作,保证其可靠运行。 而并发操作就是指同时执行多个处理任务。,3、并发操作的好处, 提高系统的资源利用率 改善短事务的响应时间,2、并发操作的形式, 交叉并发(单CPU系统) 同时并发(多CPU系统),4、并发操作的问题, 丢失更新,例如,有 事务1 和 事务2 同时向 帐户A 付款 100,假设帐户A 的余额 Balance 的初始值为 1000。,读帐户A的余额, 赋给局部变量 n = Balance1000,执行 n = n +100,写入帐户A的余额 Balance = n = 1100,

9、最后结果:帐户A 的余额为1100,只增加了100。,读帐户A的余额, 赋给局部变量 m = Balance1000,执行 m = m +100,写入帐户A的余额 Balance = m =1100,提交,提交, 读脏数据,例如,有事务1 向帐户A付款 100,而同时事务2 读取帐户A 的余额用于计算税额。假设帐户A 的余额 Balance 的初始值为 1000。,读帐户A的余额, 赋给局部变量 n = Balance1000,执行 n = n +100,写入帐户A的余额 Balance = n = 1100,最后结果:事务2的计算结果不准确,因为事务1 已经取消了付款。,读帐户A的余额, 赋

10、给局部变量 m = Balance =1100,计算税额,出现异常,执行回滚 恢复帐户A的余额 Balance = 1000,此数据为脏数据,所谓脏数据就是指不准确的数据。, 不可重读,例如,事务1 读取帐户A 的余额分别用于计算国税和地税,而同时,事务2 同时向帐户A 付款100,假设帐户A 的余额 Balance 的初始值为 1000。,读帐户A的余额, 赋给局部变量 x = Balance1000,计算国税,读帐户A的余额, 赋给局部变量 y = Balance1100,读帐户A的余额, 赋给局部变量 m = Balance1000,执行 m = m +100,写入帐户A的余额 Bala

11、nce = m =1100,计算地税 发现 x 和 y 不相等!,提交,即事物执行过程中,多次读取的数据前后不一致。,5、解决方案 加锁,(1)锁的基本类型 排它锁(eXclusive,也称 X锁,用于写操作) 某数据对象在没有加任何锁的情况下,一个事务可以对其加X锁,而其他事务就不能对其再加任何锁。 共享锁(Share,也称 S锁,用于读操作) 一个事务对某数据对象加了S锁后,其他事务就不能对其加X锁,但可以加S锁。,即对敏感数据的读写进行某种限制,如同加了一把锁。,T2,T1,加锁的相容表,是:可以加锁 否:不能加锁,(2)三级封锁协议 一级封锁协议 任一事务在修改某数据前,必须对其加上X

12、锁,该事务结束后才释放。不采用S锁,读取数据不用加锁。 该协议可以解决丢失更新,但不能解决读脏数据和不可重读的问题。 二级封锁协议 符合一级封锁协议,且任一事务在读取某数据前,必须对其加上S锁,读完后就释放。 该协议可以解决丢失更新、读脏数据,但不能解决不可重读的问题。, 三级封锁协议 符合一级封锁协议,且任一事务在读取某数据前,必须对其加上S锁,该事务结束后才释放。 该协议可以解决丢失更新、读脏数据以及不可重读的问题。,(3)加锁请求的选择策略 活锁 当多个事务同时申请对数据的封锁时,由于选择策略的问题导致长时间甚至永远的等待,称为活锁。如随机选择或先来后服务(即堆栈方式)的策略。, 活锁的

13、解决方法 采用先来先服务(即队列方式)并结合优先级的选择策略。, 死锁 在选择策略正确的情况下,出现的相互永远等待的封锁请求,称为死锁。,例如:事务T1 和事务T2 并发执行,且都需要数据A 和数据B,假设数据A 和数据B 初始时为无锁状态 。,申请封锁数据A,最后结果:事务T1 和事务T2 相互僵持,一直到永远。,封锁数据A成功,申请封锁数据B,封锁数据B失败,等待数据B解锁,申请封锁数据B,封锁数据B成功,申请封锁数据A,封锁数据A失败,等待数据A解锁, 死锁的预防法 (1) 一次封锁法 即事务执行前将所有需要或可能需要的数据进行封锁,若全部封锁成功则执行,若不成功则全部放弃封锁。 优点:

14、防止了死锁的发生。 缺点:不仅增加了封锁的申请时间,执行时也延长了其它事务的等待时间,从而降低了系统的并发性。 (2)顺序封锁法 即对所有数据对象规定一个顺序,任何事务必须按照此顺序来申请封锁,若对某一数据对象封锁失败,则只能等待或放弃已申请成功的封锁,不得对后序的数据对象申请封锁。 优点:不仅可以防止死锁的发生,也可以兼顾到并发性。 缺点:数据对象的封锁顺序很难确定。, 死锁的解决法 由于预防死锁在数据库中并不适合,因此,广泛采用的方法是死锁的诊断和解除。 (1)死锁的诊断 超时法 预先规定一个最大等待时间,超过该时间就认为是死锁, 但该时间长了,不能及时发现死锁,而时间短了又容易误判。 等

15、待图法 画出一个有向图,若出现回路就认为是死锁。,(2)死锁的解除 按照一定的原则选择其中一个死锁的事物,将其回滚。被回滚的事物必须等待一段时间才能重新执行,以免再次死锁。 选择的原则是 : 最近执行的; 封锁数据对象最少的; 回滚代价最小的。,6、并发操作的正确性准则 可串行性,当多个事物并发执行的结果与按某一次序串行地执行各事物所得的结果相同,则认为是正确的。 常用的可串行性准则 两段封锁协议 一个事物在读、写数据对象前必须先对其封锁,一旦释放一个封锁后,就不再申请任何封锁。即事物的前部分是对要操作的各数据对象逐步加锁,没有释放,事物的后部分是对各封锁逐步释放,不再申请封锁。,7、选择封锁

16、规模 多粒度封锁, 封锁粒度 即封锁对象的规模。 封锁粒度越大,则封锁代价越小,但并发性也越低;反之,封锁粒度越小,则封锁代价越大,但并发性也越高。 多粒度封锁 根据事物所处理的不同数据对象,合理地选择不同的封锁粒度。, 封锁方式 显式封锁 直接加到某数据对象的封锁。 隐式封锁 某数据对象的上级或下级数据对象被显式封锁, 则该数据对象被隐式封锁。 因此,对某数据对象封锁前,不仅要检查其显式封锁,还要检查其隐式封锁,从而降低了封锁效率。,8、提高封锁效率 意向锁,对某数据对象加锁前,先对其上级数据对象加意向锁。 常用的意向锁有三种: IS锁(Intent Share) 如果对一个数据对象加S锁,

17、则其所有的上级数据对象必须加IS锁。 IX锁(Intent eXclusive) 如果对一个数据对象加X锁,则其所有的上级数据对象必须加IX锁。 SIX锁(Share Intent eXclusive ) 即S锁加IX锁,表示对该数据对象执行读操作,同时会对其某些下级数据对象执行写操作。 意向锁可以提高系统并发度及封锁效率,降低封锁开销。,各类锁的相容矩阵,各类锁的强弱关系,X锁 SIX锁 S锁、IX锁 IS锁,锁的强度越高,其数据的安全性也越高。,二、数据库恢复技术,1、故障的种类, 事务故障 某个事务未正确提交(COMMIT),也未回滚(ROLLBACK),就被异常终止。,即将数据库从任一

18、错误状态恢复到某一正确状态。, 系统故障 如停电、硬件故障、系统软件故障、人为误操作等,使所有正在执行的事务异常终止。此时,计算机必须重新启动。, 介质故障 即外部存储器出现故障。如磁盘损坏,电磁干扰等。, 人为故障 病毒感染,黑客入侵等。,故障恢复手段,1)数据库转储法 即将整个数据库定期地做备份。 静态存储 动态存储 海量存储 增量存储,故障恢复的最简单也最有效的方法就是:事先将正确的数据库做备份(即建立冗余数据),当发生故障时,可根据备份来重建数据库。 建立冗余数据有两种常用的方法:,2)日志文件法 即将所有更新事务记入日志文件。 更新时,必须先写入日志记录,再执行更新。 日志文件有三类

19、记录: 标志事务开始的记录 标志事务结束的记录(注明 COMMIT 或 ROLLBACK) 标志更新操作的记录,格式为 (事务标识,操作类型,更新前数据旧值,更新后数据新值) 其中操作类型有 INSERT、DELETE、UPDATE 三种。,故障恢复的方法,1)事务故障的恢复 可根据日志文件由系统自动恢复。 即反向扫描日志文件,查找该事务的记录;找到该事务的更新记录则进行逆操作,然后继续反向扫描;当找到事务的开始记录时就结束恢复操作。,2)系统故障的恢复 可根据日志文件由系统自动恢复。 即将未完成的事务的更新操作撤消(UNDO),将已完成并提交了的事务重做(REDO)。 方法是:当日志文件的记

20、录达到一定数量时,系统自动将缓存中的内容存盘,并在日子文件中写入一个检查点记录。在出现系统故障时,从日志文件中的最后一个检查点开始执行恢复操作。,故障恢复第一步(建立队列): 找到日志文件的最后一个检查点记录,把其记录的所有正在进行的事务放入撤消(UNDO)队列。,UNDO队列,故障恢复第二步(建立队列) : 从日志文件的最后一个检查点正向扫描日志记录,遇到某事务的开始记录就将该事务放入撤消队列(UNDO);遇到某事务的正常结束(COMMIT)记录则把该事务从撤消队列(UNDO)转入重做(REDO)队列;遇到某事务的非正常结束(ROLLBACK)记录则把该事务从撤消队列去除。,REDO队列,例

21、:,故障恢复第三步(执行REDO队列): 从最后一个检查点正向扫描日志记录,依次重做REDO队列的更新操作。,故障恢复第四步(执行UNDO队列): 从日志文件的末尾反向扫描日志记录,依次将UNDO队列中的更新操作进行逆操作。,3)介质故障的恢复 必须根据数据库备份文件和日志文件由人工参与恢复。 首先重建数据库,并根据保存的日志文件来进一步恢复。然后,由人工重做日志文件以后的事务。 随着磁盘技术的飞速发展,磁盘数据恢复技术也日新月异,因此,在实际的DBMS介质故障恢复工作中,使用的技术也不尽相同。,概念:周期性(天、周)转储(Dump)DB到磁带上。,一.单纯以后备副本为基础的恢复技术,备份时间

22、:一般在夜间、周末;,改进方法:增量转储(Incremental Dumping, ID),只转储修改过的物理块,减少转储时间、存储空间和数据丢失。,技术特点:实现简单,缺点是不能恢复到尽可能近一点的一致状态。只适用于小型或不重要DBS。,恢复方法:DB失效时,取最近的后备副本来恢复DB。,二.以后备副本和日志为基础的恢复技术,前像(BI):事务更新DB所涉及物理块更新前的映象(Before Image, BI)。如撤销(Undo)更新,可使DB恢复到更新前的状态。,日志(Log):供恢复用的DB运行情况的记录。其内容有:前像、后像和事务状态。,后像(AI):事务更新DB所涉及物理块更新后的映

23、象(After Image, AI)。如重做(Redo)更新,可使DB恢复到更新后的状态。,事务状态:根据事务状态变迁,事务状态有:活动状态、操作结束、事务提交、事务结束、事务失败、回退。,事务的两种结局:提交而结束,其对DB的更新才能被其它事务访问;事务失败,事务所作的DB更新必须回退。,故障事务处理的依据:事务是已提交,还是未提交。,系统处理:事务一旦开始,即记入日志,并跟踪事务两种状态,一是活动状态(以记录正在执行的事务),二是提交状态(以区分事务是否提交)。,恢复方法:故障排除后,先取最近副本,然后根据日志中的事务是否提交作相应处理。对未提交事务,应用前像回退;对已提交事务一般用后像重

24、做。,三.基于多副本的恢复技术,NOS/OS级的可靠性技术:镜像磁盘(Mirroring Disk)、双工磁盘(Duplex Disk)、镜像服务器(Mirroring Server)、群集(Cluster)系统。,方法:利用多副本互为备份、恢复。,DBMS级的可靠性技术:数据库复制(Replication)、数据库镜像、日志镜像。,数据复制要求: DBMS须采取一定手段用户对DB的修改能及时反映到所有副本上。,数据复制技术:在多个场地保留多个数据库副本,各个场地的用户可以并发地存取不同的数据库副本。通过分布式的复制服务器(Replication Server)实现。,数据复制优点: (1)

25、当一个用户为修改数据加锁时,其他用户可访问数据库副本;(2) 当数据库出现故障时,系统可用副本进行联机恢复,恢复过程中,用户可继续访问副本而不中断应用。,对等复制:是理想的复制方式。各场地DB地位平等,可互相复制数据。用户可在任一场地读取/更新公共数据,DBMS应将更新数据复制到所有副本。,数据库复制的三种方式:对等(peer-to-peer)复制、主从(master/slave)复制和级联(cascade)复制。,主从复制:数据只能从主DB复制到从DB。更新数据也只能在主场地进行,从场地供用户读数据。当主场地出现故障时,更新数据的应用可转到某一从场地。,级联复制: 从主场地复制来的数据又从该

26、场地复制到其他场地。级联复制可平衡当前各种数据需求对网络流量的压力。,数据库镜像: DBMS为避免磁盘介质故障,提供日志与数据库镜像,由DBMS根据DBA要求,自动将整个DB或其中关键数据复制到另一个磁盘上。当主DB更新时,DBMS自动将更新后的数据复制过去。出现介质故障时,可由镜像磁盘提供应用服务,并利用它进行数据库恢复。其实现是通过复制数据进行。,数据库日志管理,日志(Log)记录:DB恢复所必需的数据。,一.日志基本内容(不同DBMS略有差别), 活动事务表(Active Transaction List, ATL):记录正在执行、尚未提交的事务标识符(Transaction Ident

27、ifier, TID)。,日志及DB的存放:日志丢失 DB无法恢复 日志、DB分别存放(分区、磁盘、磁带副本)。, 提交事务表(Committed Transaction List, CTL):记录已提交事务的标识符。,注意:提交时,要提交的TID CTL,从ATL中删除该TID。, 前像(BI)文件:可看成堆(Heap)文件,每个物理块有块标识符(Block Identifier, BID)。, 后像(AI)文件:结构类似前像文件,但其记录的是后像。, 回退时,从前像文件中找出该事务所有前像块,按逻辑块号写入关系对应块中。, 恢复时,可按CTL中的事务次序,按逻辑块号写入后像。,说明:, B

28、ID组成:TID、关系名、逻辑块号。TID为执行更新操作的事务;关系名为被更新的关系;逻辑块号表示该块是关系中哪一块的前像。,二.恢复后对日志的处理, 不保留已提交事务的前像:已提交事务,只会做redo,不会做undo,故其前像可不保留;, 有选择地保留后像:当更新内容写入DB后,如磁盘不出故障,后像可不保留。而磁盘故障机率小,故有些DBMS(如ORACLE)允许用户作出是否保留后像的选择;, 合并后像:对给定逻辑块号,只需保留最近的后像即可。,DBMS围绕更新事务的工作,回答如下问题:,1.DBMS需要对进行数据更新的事务做什么样的外围操作,才能在出现故障时顺利地恢复之?,2.如何安排这些事

29、务外围操作的执行步骤?,3.安排事务外围操作步骤时应遵守的规则 ?,一.事务外围操作安排时应遵守的规则,1.提交规则(Commit Rule),该规则要求:后像应在提交前写入DB或日志(均在不易失存储器上)中。,说明:, 提交规则不要求后像一定在提交前写入DB,写入日志中亦可,即:如后像已写入日志,即使未写入DB或未完全写入DB,事务仍可提交,待事务提交后再继续写入DB。如此期间出现故障,可用日志的后像重做;其它事务可从缓冲区(未写入DB前更新内容仍在缓冲区)访问更新后的内容。,2.先记后写规则(Log Ahead Rule), ACID持久性要求。,该规则要求:如后像在事务提交前写入DB,需

30、先将前像写入日志,以便事务失败后,撤销事务所做的更新。,二. 事务状态及DBMS对应的工作安排,方案1:后像在事务提交前完全写入DB,(1) DBMS工作步骤安排,按后像写入DB时间及事务状态的不同,有三种安排方案。,(2) 故障时的事务恢复措施,如果事务按上步骤执行过程中发生故障,可根据下表进行恢复。,注: “有”与“无”,表示事务标识符TID是否在ATL或CTL表中。, CTL表中的“有”与“无”,表示事务“已提交”与“未提交” 。,方案2:后像在事务提交后才写入DB,(1) DBMS工作步骤安排,(2) 故障时的事务恢复措施,如果事务按上步骤执行过程中发生故障,可根据下表进行恢复。,方案

31、3:后像在事务提交前后写入DB,(1) DBMS工作步骤安排,(2) 故障时的事务恢复措施,如果事务按上步骤执行过程中发生故障,可根据下表进行恢复。,三、数据库安全技术,1、合法用户的鉴别, 用户标识 即区分每个用户的标识,如用户名。,即防止数据库被人为破坏和非法存取。, 用户身份鉴别 常用的有口令、个人生物特征、磁卡等方法。,2、自主存取控制(DAC,Discretionary Access Control ),1)合法用户的类型 CONNECT 即一般用户,可以查询或更新部分数据,可以创建 视图或定义数据别名。 RESOURSE 除具有一般用户的特权外,还可以创建表、索引等, 可以将其创建

32、的表的访问权限授予其他用户,也可以收回, 可以跟踪审计其所创建的数据对象。, DBA 即数据库管理员,拥有最高特权,可以支配整个数 据库的所有资源,并可以注册或注销其他用户。, 用户注销(REVOKE) 只有DBA才能执行用户注销。格式为: REVOKE FROM ;,SQL语言的用户注册和注销 用户注册(GRANT) 只有DBA才能执行用户注册。格式为 : GRANT TO IDENTIFIED BY ; 其中用户类型为 CONNECT、RESOURCE、DBA。,2)授予用户操作权限 一般授权 即授予某用户对某数据对象进行某种操作的权利。 SQL语言格式为: GRANT ON TO WITH GRANT OPTION ;,可以用PUBLIC 表示全体用户,表示获得权限的用户还可以用GRANT命令将该权限再授予其他用户,即间接授权。,3)收回用户操作权限 即由授权者收回用GRANT命令授予某用户的对某数据对象的操作权限。 SQL语言格式为: REVOKE ON FROM ;,若授权时带有 WITH GRANT OPTION 选项,则同时收回所有的间接授权。,3、强制存取控制(MAC,Mand

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论