收藏 分享(赏)

数据库原理10-第6章.ppt

上传人:hwpkd79526 文档编号:8269885 上传时间:2019-06-17 格式:PPT 页数:83 大小:1.55MB
下载 相关 举报
数据库原理10-第6章.ppt_第1页
第1页 / 共83页
数据库原理10-第6章.ppt_第2页
第2页 / 共83页
数据库原理10-第6章.ppt_第3页
第3页 / 共83页
数据库原理10-第6章.ppt_第4页
第4页 / 共83页
数据库原理10-第6章.ppt_第5页
第5页 / 共83页
点击查看更多>>
资源描述

1、管理学院 信息管理系 肖 洁,数据库原理及应用,第6章 数据库的管理,本章要点,事务及其并发调度;封锁技术;数据库系统的故障及其恢复方法;完整性约束的定义、检查和处理;数据库安全性控制方法。,一、事务的概念,1、事务的定义事务是数据库的逻辑工作单位,由用户定义的一组操作序列组成,序列中的操作要么全做要么全不做。事务的开始:隐含的事务的结束:COMMIT TRANSACTIONROLLBACK TRANSACTION 事务举例,2、事务的特性(1)原子性:一个事务中的所有操作是不可分割的,要么全部执行,要么全部不执行。(2)一致性:一个被成功执行的事务,必须能使数据库从一个一致性状态变为另一个一

2、致性状态。(3)隔离性:当多个事务并发执行时,任一事务的执行不会受到其他事务的干扰,多个事务并发执行的结果与分别执行单个事务的结果是完全一样的。(4)持续性:事务被提交后,不管DBMS发生什么故障, 该事务对数据库的所有更新操作都会永远被保留在数据库中,不会丢失。,DBMS事务管理子系统,编写事务的应用程序员,DBMS并发控制子系统,DBMS事务管理子系统和恢复管理子系统,调度:事务的执行次序。 串行调度:多个事务按照某一次序串行地执行。 并行调度:多个事务同时交叉地并行执行。两个事务T1和T2:read(X); /*读出标准房的剩余数量X*/X=X-3; /*订了3间标准房,X-3*/wri

3、te(X); /*将新的标准房的剩余数量X写回数据库*/read(Y); /*读出商务房的剩余数量Y*/Y=Y-1; /*订了1间商务房,Y-1*/write(Y); /*将新的商务房的剩余数量Y写回数据库*/,二、数据库的并发控制,串行调度,并发调度,可串行化,(一)事务并发执行所带来的问题1、丢失更新问题,2、不可重复读问题,3、读“脏”数据问题,(二)封锁并发控制的主要技术封锁:事务T在对某个数据对象(如关系、元组等) 进行查询或更新操作以前,应先向系统发出对该数据对象 进行加锁的请求,否则就不可以进行相应的操作,而事务 在获得了对该数据对象的锁以后,其他的事务就不能查询 或更新此数据对

4、象,直到相应的锁被释放为止。,1、排它锁和共享锁排它锁(X锁):事务T对数据对象既可读,也可更新。共享锁(S锁):事务T对数据对象可读,但不能更新。锁相容矩阵:,2、封锁协议(1)一级封锁协议:事务T在更新数据对象以前,必须对该数据对象加排它锁,并且直到事务T结束时才可以释放该锁。,一级封锁协议不能防止不可重复读问题,一级封锁协议不能防止读“脏”数据问题,(2)二级封锁协议:规定事务T在更新数据对象以前必须 对数据对象加X锁,且直到事务T结束时才可以释放该锁, 还规定事务T在读取数据对象以前必须对数据对象加共享锁 (S锁),读完后即可释放S锁。可以防止丢失更新、读“脏”数据问题,但不能防止不可

5、重复读问题。,二级封锁协议不能防止不可重复读问题,(3)三级封锁协议:规定事务T在更新数据对象以前, 必须对数据对象加X锁,且直到事务T结束时才可以释放 该锁,还规定事务T在读取数据对象以前必须对数据对象 加S锁,并且S锁也必须在事务T结束时才可释放。可以防止丢失更新、读“脏”数据、不可重复读问题。,3、活锁和死锁(1)活锁:在多个事务并发执行的过程中,可能会存在某个尽管总有机会获得锁的事务却永远也没得到锁,这种现象称为活锁。(2)死锁:多个并发事务处于相互等待状态,其中的每一个事务都在等待它们中的另一个事务释放封锁,这样才可以继续执行下去,但任何一个事务都没有释放自己已获得的锁,也无法获得其

6、他事务已拥有的锁,所以只好相互等待下去。,(3)活锁的预防:“先来先服务”策略 (4)死锁的预防: 每个事务必须一次性地将所有要使用的数据加锁或必须按照一个预先约定的加锁顺序对使用到的数据加锁。 每当处于等待状态的事务有可能导致死锁时,就不再等待下去,强行回滚该事务。 (5)死锁的检测:“事务依赖图” (6)死锁恢复:从发生死锁的事务中选择一个回滚代价最小的事务,将其彻底回滚,或回滚到可以解除死锁处,释放该事务所持有的锁,使其他事务可以获得相应的锁而得以继续运行下去。,SQL Server 2008锁的类型,三、数据库的恢复技术,(一)数据库系统的故障1、事务故障:由于事务内部的逻辑错误(如运

7、算溢出、数据输入错、记录找不到等)或系统错误(如并发事务发生死锁而被选中撤销等)所引起的,使事务在未达到规定的终点以前就被迫中止的任何事件。2、系统故障:由硬件故障、软件故障(操作系统故障、DBMS代码错等)、停电等原因造成的、使系统停止运转、必须重新启动的任何事件。3、介质故障:用于存放数据库的磁盘在物理上受到了损坏,使得数据库中的数据无法读出而引起的故障。,系统自动恢复,DBA,(二)故障恢复技术1、数据转储由DBA定期地将物理数据库中的数据复制到另外的磁盘保存起来的过程。(1)数据转储状态 静态转储 :在系统中无任何运行事务时所进行的数据转储。优点:简单,且得到的一定是一个正确的后备副本

8、。 动态转储:可以与并发事务同时进行的数据转储。必须将转储期间事务对数据库的更新操作登记在日志文件中,以备恢复之用。,(2)数据转储方式 海量转储 :每次转储全部数据库。优点:恢复更方便。 增量转储:每次只转储上一次转储后更新过的数据。优点:更实用更有效。,数据转储分类,2、日志文件日志是以事务为单位记录数据库的每一次更新活动的文件,由系统自动记录。(1)日志文件的格式和内容日志文件的格式: 以记录为单位的日志文件 以数据块为单位的日志文件,日志文件的内容:,(2)利用日志文件撤销事务或重做事务两个基本操作: UNDO(Ti):撤销事务Ti REDO(Ti):重做事务Ti UNDO(Ti)的具

9、体步骤: 反向扫描日志文件,找到需要撤销的事务的更新操作。 对事务Ti的更新操作执行逆操作,即将日志文件中“更新前的值”写入数据库。 继续反向查找该事务的其他更新操作,并执行逆操作。 重复执行步骤(3),直到遇到该事务的事务开始记录。,REDO(Ti)的具体步骤: 正向扫描日志文件,找到需要重做的事务的更新 操作。 对事务Ti重新执行日志文件登记的操作,即将日志 文件中 “更新后的值”写入数据库。 继续正向查找该事务的其他更新操作,并重新执 行,将日志文件中的“更新后的值”写入数据库。 重复执行步骤(3),直到遇到该事务的事务提交 记录。,(3)日志文件的登记登记日志文件时必须遵循以下两条原则

10、: 登记的次序严格按并发事务执行的时间次序。 必须先写日志文件,后写数据库。,3、检查点技术提高日志文件技术的效率检查点方法:在日志文件中再增加一个检查点记录,同 时还增加一个重新启动文件。系统在运行的过程中会周期性 地产生一个检查点,以保存数据库的状态。 检查点恢复只对事务故障和系统故障有效,对于介质故 障,日志的扫描从备份点开始。,T1,T2,T3,T4,T5,检查点,系统故障,ti时刻,tj时刻,时间,不用恢复,REDO,UNDO,REDO,UNDO,利用检查点方法的恢复步骤:(1)根据日志文件建立事务重做队列和撤销队列。从检查点开始,正向扫描日志文件,找出在故障发生前已经提交的事务,放

11、入事务重做队列;故障发生时尚未完成的事务,放入事务撤销队列。 (2)对重做队列做REDO处理,对撤销队列做UNDO处理。,4、数据库镜像根据DBA的要求,自动把整个数据库或其中的关 键数据复制到另一个磁盘上。每当主数据库更新时, DBMS自动把更新后的数据复制过去,即DBMS自动保 证镜像数据与主数据库的一致性。,(三)故障恢复策略 1、事务故障的恢复撤销UNDO 2、系统故障的恢复 日志文件中有事务开始记录,没有事务提交记录撤销UNDO 日志文件中既有事务开始记录,也有事务提交记录重做REDO,系统故障恢复的具体步骤: (1)正向扫描日志文件,找出系统故障发生前未完成的事务,将它们的事务标志

12、记入撤销(UNDO)队 列;找出系统故障发生前已经完成的事务,将它们的事务标志记入重做(REDO)队列。 (2)对UNDO队列中的各事务实行撤销(UNDO)操作。 (3)对REDO队列中的各事务实行重做(REDO)操作。,3、介质故障的恢复利用数据转储后产生的后备副本与日志文件进行恢复。 具体步骤:(1)装入最近一次转储的后备副本,将数据库恢复到最近一次转储时的一致性状态。 静态转储:只要装入后备副本即可; 动态转储:还必须同时装入转储开始时刻的日志文件副本,利用系统故障恢复的方法(REDO+UNDO),将数据库恢复到最近一次转储时的一致性状态。(2)装入转储结束时刻的日志文件副本,重做已完成

13、的事务。,SQL Server 2008数据库的三种恢复模型 1、完整恢复模型SQL Server 2008数据库将忠实、完整地记录所有的日志 2、大容量日志记录恢复模型当需要执行大容量日志记录操作(如大批量的数据录入、更新或删除)时,切换到大容量日志记录恢复模型。 3、简单恢复模型虽然会记录下所有的日志操作,但检查点进程的发生会自动截断日志中的不活动部分(已经完成的部分)。可能会导致无法恢复到历史上某个时刻的情况。,三种恢复模型的选择,SQL Server 2008中数据的备份与恢复提供了四种数据库备份与恢复的方式: 完整数据库备份和恢复:备份整个数据库。 差异数据库备份和恢复:仅备份自上次

14、完全数据库备 份后被修改过的内容。 事务日志备份和恢复:备份日志文件。 文件组备份和恢复:对组成数据库的文件或文件组进行单独的备份。,DBA在实践中最常用的备份和恢复方法: 完整数据库备份与恢复 完整差异数据库备份与恢复 完整日志数据库备份与恢复,完整数据库备份与恢复举例:假设现在有3个完全数据备份: 10:00时完整数据库备份1。 11:00时完整数据库备份2 。 12:00时完整数据库备份3 。 恢复: 恢复到10:00 恢复到11:00 恢复到12:00,完整差异数据库备份与恢复举例:假设现在有2个完整数据库备份: 10:00时完整数据库备份1。 12:00时完整数据库备份2 。还有3个

15、差异数据库备份: 10:30时差异数据库备份1,在完整数据库备份1基础上。 11:00时差异数据库备份2,在完整数据库备份1基础上。 12:30时差异数据库备份3,在完整数据库备份2基础上。 恢复: 11:00时的状态:完整数据库备份1差异数据库备份2 12:30时的状态:完整数据库备份2差异数据库备份3,完整日志数据库备份与恢复举例:假设现在有2个完整数据库备份: 10:00时完整数据库备份1。 12:00时完整数据库备份2 。还有3个日志数据库备份: 10:30时日志数据库备份1。 11:00时日志数据库备份2。 12:30时日志数据库备份3。,恢复:11:00时的状态:完整数据库备份1日

16、志数据库备份1日志数据库备份212:30时的状态:完整数据库备份2日志数据库备份3 或:完整数据库备份1日志数据库备份1日志数据库备份2日志数据库备份3,恢复到12:45时的状态: 完全数据库备份2日志数据库备份3当前日志备份(12:30以后的日志的事务不要做完,而指定做到12:45,即时点恢复就可以) 。 完全数据库备份1日志数据库备份1日志数据库备份2日志数据库备份3当前日志备份(12:30以后的日志的事务不要做完,而指定做到12:45,即时点恢复就可以)。,恢复到10:45时的状态:完全数据库备份1日志数据库备份1 日志数据库备份2(10:3011:00之间的事务不做完,而是指定做到10

17、:45,即时点恢复就可以)。,例1: 对“StudManage”数据库做一次全库备份,备份名字为 “StudManage backup”,备份设备是“mybak”本地磁 盘设备,此备份将覆盖以前所有的备份。BACKUP DATABASE StudManageTO DISK mybakWITH INIT, /*重写设备上所有的备份集数据 */NAME=StudManage backup,例2: 对“StudManage”数据库做一次差异备份,备份名字为“StudManage backup”,备份设备是“mybak”本地磁 盘设备,新备份的数据将添加到备份设备上原备份内 容的后面。BACKUP D

18、ATABASE StudManageTO DISK mybakWITH DIFFERENTIAL, /*差异备份 */NOINIT, /*备份集将追加到指定的磁盘设备上 */NAME=StudManage backup,例3: 对“StudManage”数据库做一次日志备份,备份名字为“StudManage backup”,备份设备是“mybak”本地磁 盘设备,新备份的数据将添加到备份设备上原备份内容的后面。BACKUP LOG StudManageTO DISK mybakWITH NOINIT, /*备份集将追加到指定的磁盘设备上 */NAME=StudManage backup,例4:

19、 对“StudManage”数据库在“mybak”本地磁盘设备上作 了3次备份(全库、差异、日志各一次)后发生介质故障,要求用RESTORE语句恢复该数据库。RESTORE DATEBASE StudManageFROM mybakWITH FILE=1, /*从磁盘设备的第一个备份恢复数据 */NORECOVERY /*指示还原操作不回滚任何未提交的事务 */RESTORE DATEBASE StudManageFROM mybakWITH FILE=2, /*从磁盘设备的第二个备份恢复数据 */NORECOVERY RESTORE LOG StudManageFROM mybakWITH

20、FILE=3, /*从磁盘设备的第三个备份恢复数据 */RECOVERY /*指示还原操作回滚任何未提交的事务 */,数据库的分离与附加,数据库的分离与附加,数据库的分离与附加,四、数据库完整性,(一)完整性约束的定义1、实体完整性的定义主键取值非空且惟一;PRIMARY KEY约束2、参照完整性的定义外键的值要么为空,要么等于被参照关系中某一个主键的值;FOREIGN KEY约束,3、用户定义完整性的定义作用对象:属性列:规定属性列的数据类型、取值范围等;元组:规定元组中各属性间的相互关系;关系:规定各元组间或关系间的相互联系。UNIQUE约束、CHECK约束、NOT NULL/NULL约束

21、触发器,(1)触发器的概念及定义触发器的基本语法触发器:是一种特殊的存储过程,规定用户在对数据 库表(关系)执行插入、删除和修改等更新操作时,数据库 系统应该执行什么相关的操作以保证数据的完整性。 语法格式:CREATE TRIGGER ON | FOR | AFTER | INSTEAD OFINSERT,UPDATE,DELETEAS,(2)触发器应用举例例5例6例7例8,(二)完整性约束的检查和处理1、外键的空值问题学生(学号,姓名,性别,年龄,班级号)被参照关系考试(学号,课程号,成绩) 参照关系“考试”表的外键“学号”不允许为空。2、删除被参照关系元组的问题(1)级联方式(CASCA

22、DE) (2)受限方式(RESTRICT)(3)置空方式(SET NULL),外键,3、修改被参照关系中主键值的问题(1)级联方式(CASCADE) 参照关系中所有与被参照关系中要修改元组主键值相同的外键值一起修改为新值。“学生”表中“学号”修改,则“考试”表中“学号”也修改。(2)受限方式(RESTRICT)当参照关系中没有任何元组的外键值与被参照关系中要修改元组的主键值相同时,系统才进行修改。(3)置空方式(SET NULL)参照关系中相应元组的外键值置空。,例9: CREATE TABLE 考试(学号 char(6) REFERENCES 学生(学号)ON DELETE CASCADEO

23、N UPDATE CASCADE,课程号 char(6) REFERENCES 课程(课程号)ON DELETE RESTRICTON UPDATE CASCADE,成绩 INT,PRIMARY KEY(学号,课程号);,SQL Server 2008中无此关键词,默认的处理方式即为受限方式。,五、数据库安全性,访问控制措施:用户验证和存取控制。(一)用户验证1、软件验证技术口令验证、问/答验证等; 2、硬件验证技术指纹验证、声音识别验证、手写签名验证、手型几何验证和身份卡验证等。,(二)存取控制1、DBMS的存取控制机制(1)DBMS规定用户想要操作数据库中的数据,必须拥有相应的权限。 (2

24、)DBMS将授权结果存放入数据字典(3)当用户提出操作请求时,DBMS会根据数据字典中保存的授权信息,判断用户是否有权对相应对象进行操作,若无权则拒绝执行操作。,思考:某个想执行下面语句的用户需要拥有哪些权限。INSERT INTO 女生考试(学号,课程号,成绩)SELECT 学号,课程号,成绩FROM 考试WHERE 学号 IN (SELECT 学号FROM 学生WHERE 性别=女);,2、DBMS的存取控制方法(1)自主存取控制(DAC) 方法(2)强制存取控制(MAC)方法(3)基于角色的存取控制(RBAC)方法,(1)自主存取控制(DAC) 方法允许用户将其拥有的权限授予其他用户。典

25、型的DAC授权策略: 集中管理策略:只允许某些特权用户授予/收回其他用户对客体(基本表、索引、视图等)的访问权限; 基于拥有权的管理策略:只允许客体的创建者授予/收回其他用户对客体的访问权限; 非集中管理策略:在客体拥有者的认可下,允许一些用户授予/收回其他用户对客体的访问权限。,(2)强制存取控制(MAC)方法在MAC中,DBMS所管理的全部实体被分为主体(用户及其进程)和客体(基本表、索引、视图等)两大类。 对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label),敏感度标记分成若干级别:绝密(Top Secret)、 机密(Secret)、可信(Confidentia

26、l)、公开(Public) 主体的敏感度标记称为许可证级别(Clearance Level) 客体的敏感度标记称为密级(Classification Level) MAC机制就是通过对比主体的Label和客体的Label,最 终确定主体是否能够存取客体。,强制存取控制规则:当某一用户(或某一主体)以标记label注册入系统时, 系统要求他对任何客体的存取必须遵循下面两条规则:(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。,强制存取控制的特点:MAC是对数据本身进行密级标记,无论数据如何复制, 标记

27、与数据是一个不可分的整体,只有符合密级标记要求的 用户才可以操纵数据,从而提供了更高级别的安全性。,(3)基于角色的存取控制(RBAC)方法角色(Role)是权限的集合,将一个角色授权给某个 用户时,该用户就具有了角色中所包含的所有权限。,用户,角色,权限,U-R,R-A,m,n,m,n,SQL Server 预定义的数据库角色: db_accessadmin 、db_backupoperator、db_datareader、 db_datawriter、db_ddladmin、db_denydatareader db_denydatawriter、db_owner、db_securityadmin、public,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报