数据库安全保护.ppt

上传人:牧羊曲112 文档编号:5985574 上传时间:2023-09-11 格式:PPT 页数:84 大小:543KB
返回 下载 相关 举报
数据库安全保护.ppt_第1页
第1页 / 共84页
数据库安全保护.ppt_第2页
第2页 / 共84页
数据库安全保护.ppt_第3页
第3页 / 共84页
数据库安全保护.ppt_第4页
第4页 / 共84页
数据库安全保护.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《数据库安全保护.ppt》由会员分享,可在线阅读,更多相关《数据库安全保护.ppt(84页珍藏版)》请在三一办公上搜索。

1、2023/9/11,北京林业大学 软件教研室,1,第5章 数据库安全保护,2023/9/11,北京林业大学 软件教研室,2,5.1 数据库的安全性5.2 完整性控制5.3 并发控制与封锁5.4 数据库的恢复,2023/9/11,北京林业大学 软件教研室,3,5.1 数据库的安全性,5.1.1 数据库安全性的含义 数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。安全性问题有许多方面:(1)法律、社会和伦理方面时问题。(2)物理控制方面的问题。(3)政策方面的问题。(4)运行方面的问题。(5)硬件控制方面的问题。(6)操作系统安全性方面的问题。(7)数据库系统本身的安全性方

2、面的问题。,2023/9/11,北京林业大学 软件教研室,4,5.1.2 安全性控制的一般方法,安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。,图5-1 安全控制模型,2023/9/11,北京林业大学 软件教研室,5,安全性控制的一般方法 用户标识和鉴定 用户存取权限控制 定义视图 数据加密 审计(Audit),2023/9/11,北京林业大学 软件教研室,6,用户标识和鉴定 用户标识和鉴定是由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。用户标识和鉴定的方法 用一个用户名或用户标识

3、符来标明用户的身份,系统以此来鉴别用户的合法性。用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。通过用户名和口令来鉴定用户的方法简单易行,但该方法在使用时,由于用户名和口令的产生和使用比较简单,也容易被窃取,因此还可采用更复杂的方法。,2023/9/11,北京林业大学 软件教研室,7,授权表,用户标识,数据对象,操作类型,用户存取权限控制 用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。在数据库系统中,定义用户存取权限称为授权。这些授权定义经过编译后以一张授权表的形式存放在数据字典中。,2023/9/11,北京林业大学 软件教研室,8,关系系统中的存取权限,202

4、3/9/11,北京林业大学 软件教研室,9,对于授权表,一个衡量授权机制的重要指标就是授权粒度,即可以定义的数据对象的范围,在关系数据库中,授权粒度包括关系、记录或属性。授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。,2023/9/11,北京林业大学 软件教研室,10,数据加密加密的基本思想是根据一定的算法将原始数据(明文)加密成为不可直接识别的格式,数据以密文的形式存储和传输。加密方法:替换方法,该方法使用密钥将明文中的每一个字符转换为密文中的字符。转换方法,该方法将明文中的字符按不同的顺序重新排列。通常将这两种方法结合起来使用,就可以达到相当高的安全程度。,2023/9/11

5、,北京林业大学 软件教研室,11,审计 审计功能是一种监视措施,它跟踪记录有关数据的访问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在一个特殊文件中,即审计日志中。记录的内容一般包括:操作类型(如修改、查询等),操作终端标识与操作者标识,操作日期和时间,操作所涉及到的相关数据(如基本表、视图、记录、属性等),数据的前象和后象等。,2023/9/11,北京林业大学 软件教研室,12,5.1.3 SQL Server2000的数据安全性机制,为了实现安全性,SQL Server 2000对用户的访问进行两个阶段的检验:身份验证阶段(Authentication):身份验证机制决定了用户

6、能否连接(或登录)到SQL Server 2000服务器。权限许可确认阶段(Permission Validation):权限许可机制决定了经过了身份验证后的用户连接到SQL Server 2000服务器可以执行的具体操作,包括服务器上的操作和具体的数据库上的操作。,2023/9/11,北京林业大学 软件教研室,13,5.1.4 SQL Server2000的身份验证模式,Windows身份验证模式 在该验证模式下,SQL Server 2000使用Windows操作系统来对登录的账号进行身份验证,支持Windows操作系统的密码策略和锁写策略,账号和密码保存在Windows操作系统的账户数据

7、库中。Windows验证模式下主要有以下优点:(1)数据库管理员的工作可以集中在管理数据库方面,而不是管理用户账户。(2)Windows有着更强的用户账户管理工具。可以设置账户锁定、密码期限等。(3)Windows的组策略支持多个用户同时被授权访问SQL Server。如果网络中有多个SQL Server服务器,就可以选择通过Windows身份验证机制来完成。,2023/9/11,北京林业大学 软件教研室,14,TCP/IP Sockets,命名管道,SQL Server身份验证模式,Windows身份验证模式,混合身份验证模式混合身份验证模式允许以SQL Server身份验证模式或者Wind

8、ows身份验证模式来进行验证。混合验证模式具有以下优点:(1)创建了Windows之上的另外一个安全层次。(2)支持更大范围的用户,如非Windows客户、Novell网用户等。(3)一个应用程序可以使用单个的SQL Server登录账号和口令。,2023/9/11,北京林业大学 软件教研室,15,5.1.5 SQL Server的登录账号和服务器角色,在SQL Server中,账号有两种:一种是登录服务器的登录账号(Login Name),另外一种是使用数据库的用户账号(User Name)。查看服务器的登录账号 使用Enterprise Manager 进入Enterprise Manag

9、er,展开“SQL Server组”,找到所要连接的SQL Server服务器;展开该服务器对应的文件夹,再展开“安全性”文件夹,单击“登录”选项,即可看到系统创建的默认登录账号及已建立的其他登录账号。使用存储过程 EXEC sp_helplogins,2023/9/11,北京林业大学 软件教研室,16,创建服务器的登录账号 利用Enterprise Manage 利用存储过程 EXEC sp_addlogin 登录账号名称,密码,默认数据库名,使用的语言 例5-1 建立了一个名称为Mike的登录账号。EXEC sp_addlogin Mike,m1934,Teach,NULL例5-2 将Mi

10、ke的登录账号加入到数据库Teach中。EXEC sp_adduser Mike更改登录账号的属性 使用存储过程sp_password可改变登录账号的密码 EXEC sp_password 旧密码,新密码,登录账号名称 使用存储过程sp_addsrvrolemember可以将登录账号加入服务器的角色中 EXEC sp_addsrvrolemember 登录账号,服务器角色名称,2023/9/11,北京林业大学 软件教研室,17,删除登录账号 使用Enterprise Manager 使用存储过程 sp_droplogin 登录账号 SQL Server的服务器角色 角色(Role)是对权限集中

11、管理的一种机制,将不同的权限组合在一起就形成了一种角色。服务器角色是执行服务器级管理操作的用户权限的集合。服务器角色是SQL SERVER系统内置的,DBA不能创建服务器角色,只能将其他角色或用户添加到服务器角色中。默认的服务器角色列表,参见P188.注:属于Windows Administrators组的帐号自动被设置为sysadmin服务器角色。,2023/9/11,北京林业大学 软件教研室,18,5.1.6 SQL Server的数据库用户账号和数据库角色,数据库的用户账号用户账号要在特定的数据库内创建,并关联一个登录账号(当一个数据库的用户创建时,必须关联一个登录账号)。每个登录账号在

12、一个数据库中只能有一个用户账号,但每个登录账号可以在不同的数据库中各有一个用户账号。注意:master和tempdb数据库中的guest用户账号不能删除,而其他数据库中的guest用户账号可以删除。登录账号具有对某个数据库的访问权限,并不表示该登录账号对该数据库具有存取的权限。,2023/9/11,北京林业大学 软件教研室,19,查看数据库的用户账号 利用存储过程 EXEC sp_helpuser 创建数据库的用户账号 使用存储过程 sp_adduser 登录账号,用户账号,所属的数据库角色设置数据库用户账号的权限 对数据库对象的操作,具体含义如下SELECT:对表或者视图进行查询。INSER

13、T:在表或者视图中插入记录。UPDATE:对表或者视图中的数据进行修改。DELETE:删除表或者视图中的数据。EXEC:执行存储过程。DRI:可对表的外键加以限制,以完成表的参照完整性。,2023/9/11,北京林业大学 软件教研室,20,删除数据库用户账号 存储过程sp_dropuser 用户账号 数据库角色 数据库角色是对数据库对象操作的权限的集合。数据库角色可分为两种:固定的标准数据库角色(系统创建的)应用程序角色当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据而不是直接地存取数据库数据时,就应该考虑使用应用程序角色。,2023/9/11,北京林业大学 软件教研室,21

14、,2023/9/11,北京林业大学 软件教研室,22,创建新的数据库角色 sp_addrole 角色名,拥有者删除数据库角色 sp_droprole 角色名 创建数据库应用程序角色 sp_addapprole 应用程序角色名,密码 用户和角色的权限问题 用户权限继承角色的权限 用户分属不同角色,2023/9/11,北京林业大学 软件教研室,23,5.2 完整性控制,5.2.1 数据库完整性的含义 数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。数据库的完整性是指防止合法用户使用数据库时向数据库中加入不符合语义的数据。完整性措施的防范对象是不合语

15、义的数据。,2023/9/11,北京林业大学 软件教研室,24,5.2.2 完整性规则的组成,完整性规则主要由以下三部分构成。(1)触发条件:规定系统什么时候使用规则来检查数据。(2)约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。(3)违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。,2023/9/11,北京林业大学 软件教研室,25,完整性规则从执行时间上可分为立即执行约束(Immediate Constraints)和延迟执行约束(Deferred Constrainsts)。立即执行约束是

16、指在执行用户事务过程中,某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查。延迟执行约束是指在整个事务执行结束后,再对约束条件进行完整性检查,结果正确后才能提交。某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查。,2023/9/11,北京林业大学 软件教研室,26,一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示 D(Data):代表约束作用的数据对象,可以是关系、元组和列三种对象;O(Operation):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即执行还是延迟执行;A(Assertion):代表数据对象必须满

17、足的语义约束,这是规则的主体;C(Condition):代表选择A作用的数据对象值的谓词;P(Procedure):代表违反完整性规则时触发执行的操作过程。,2023/9/11,北京林业大学 软件教研室,27,完整性约束条件是完整性控制机制的核心。,例如,对于“学号(SNo)不能为空”的这条完整性约束中,D、O、A、C、P的含义分别如下:D:代表约束作用的数据对象为SNo属性;O:当用户插入或修改数据时需要检查该完整性规则;A:SNo不能为空;C:A可作用于所有记录的SNo属性;P:拒绝执行用户请求。,2023/9/11,北京林业大学 软件教研室,28,关系模型的完整性包括实体完整性,参照完整

18、性和用户定义完整性。对于违反实体完整性和用户定义完整性规则的操作一般都是采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单的拒绝执行,一般在接受这个操作的同时,执行一些附加的操作,以保证数据库的状态仍然是正确的。例如在删除被参照关系中的元组时,应该将参照关系中所有的外码值与被参照关系中要删除元组主码值相对应的元组一起删除。比如,要删除S关系中SNO=S1的元组,而SC关系中又有两个SNO=S1的元组。这时根据应用环境的语义,因为当一个学生毕业或退学后,他的个人记录从S关系中删除,选课记录也应随之从SC表中删除,所以应该将SC关系中两个SNO=S1的元组一起删除。,2023/9

19、/11,北京林业大学 软件教研室,29,5.2.3 完整性约束条件的分类5.2.3.1 从约束条件使用的对象分为值的约束和结构的约束1值的约束:即对数据类型、数据格式、取值范围等进行规定。(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。例如,规定学生姓名的数据类型应为字符型,长度为8。(2)对数据格式的约束。例如,规定出生日期的数据格式为。(3)对取值范围的约束。例如,月份的取值范围为112,日期131。(4)对空值的约束。空值表示未定义或未知的值,它与零值和空格不同。有的列值允许空值,有的则不允许。例如,学号和课程号不可以为空值,但成绩可以为空值。,2023/9/11,北京林业大

20、学 软件教研室,30,2结构约束:即对数据之间联系的约束。数据库中同一关系的不同属性之间,应满足一定的约束条件,同时,不同关系的属性之间也有联系,也应满足一定的约束条件。常见的结构约束有如下四种:(1)函数依赖约束:说明了同一关系中不同属性之间应满足的约束条件。如:2NF,3NF,BCNF这些不同的范式应满足不同的约束条件。大部分函数依赖约束都是隐含在关系模式结构中的,特别是对于规范化程度较高的关系模式,都是由模式来保持函数依赖的。,2023/9/11,北京林业大学 软件教研室,31,(2)实体完整性约束:说明了关系键的属性列必须唯一,其值不能为空或部分为空。(3)参照完整性约束:说明了不同关

21、系的属性之间的约束条件,即外部键的值应能够在参照关系的主键值中找到或取空值。(4)统计约束,规定某个属性值与一个关系多个元组的统计值之间必须满足某种约束条件。例如,规定系主任的奖金不得高于该系的平均奖金的40%。,不得低于该系的平均奖金的20%。这里该系平均奖金的值就是一个统计计算值。其中,实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,被称为关系的两个不变性。统计约束实现起来开销很大。,2023/9/11,北京林业大学 软件教研室,32,5.2.3.2 从约束对象的状态分为静态约束和动态约束1静态约束静态约束是指对数据库每一个确定状态所应满足的约束条件,是反映数据库状态合理性的

22、约束,这是最重要的一类完整性约束。上面介绍的值的约束和结构的约束均属于静态约束。2动态约束动态约束是指数据库从一种状态转变为另一种状态时,新旧值之间所应满足的约束条件,动态约束反映的是数据库状态变迁的约束。例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。,2023/9/11,北京林业大学 软件教研室,33,5.2.4 数据完整性的实施,声明式数据完整性 声明式数据完整性是将数据所需符合的条件融入到对象的定义中,这样SQL Server会自动确保数据符合事先制定的条件。声明式数据完整性的特点是:通过针对表和字段定义声明的约束,可使声明式数据完整性成为数据定义的一部分。使用约

23、束、默认值与规则实施声明式数据完整性。,2023/9/11,北京林业大学 软件教研室,34,程序化数据完整性如果所需符合的条件以及该条件的实施均通过所编写的程序代码完成,则这种形式的数据完整性称为程序化数据完整性。程序化数据完整性的特点是:程序化数据完整性可以通过相关的程序语言及工具在客户端或服务器端实施。SQL Server可以使用存储过程或触发器实施程序化数据完整性。综上所述,实施数据完整性的方法有5种:约束(Constraint)、默认值(Default)、规则(Rule)、存储过程(Stored Procedure)、触发器(Trigger)。,2023/9/11,北京林业大学 软件教

24、研室,35,5.2.5 规则,规则(Rule)就是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制。规则是单独存储的独立的数据库对象。规则与其作用的表或用户自定义数据类型是相互独立的,即表或用户自定义对象的删除、修改不会对与之相连的规则产生影响。规则和约束可以同时使用,表的列可以有一个规则和多个CHECK约束。规则与CHECK约束很相似。在ALTER TABLE和CREATE TABLE命令中使用的CHECK约束是更标准的限制列值的方法,但CHECK约束不能直接作用于自定义数据类型。,2023/9/11,北京林业大学 软件教研室,36,创建规则 CREATE RULE rule_n

25、ame AS condition_expression 例5-12 创建学生年龄规则。CREATE RULE age_ruleAS age=18 and age=50 查看规则 用存储过程sp_helptext查看规则 sp_helptext objname=name其中,objname=name字句指明对象的名称,用sp_helptext存储过程查看的对象可以是当前数据库中的规则、默认、触发器、视图、或未加密的存储过程。例5-13 用存储过程sp_helptext查看名称为“age_rule”的规则内容。EXEC sp_helptext age_rule,condition_expressi

26、on中的表达式必须以字符开头,2023/9/11,北京林业大学 软件教研室,37,规则的绑定与松绑 创建规则后,规则仅仅是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或用户自定义对象联系起来,才能达到创建规则的目的。所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户自定义数据类型。解除规则与对象的绑定称为“松绑”。,2023/9/11,北京林业大学 软件教研室,38,用存储过程sp_bindrule绑定规则 sp_bindrule rulename=rule,objname=object_name,futureonly 注:futureonly选项仅在绑定规则到用户自定义数据类

27、型上时才可以使用。例5-14 绑定规则age_rule 到S表的字段Age。EXEC sp_bindrule age_rule,S.Age规则对已经输入表中的数据不起作用。规则所指定的数据类型必须与所绑定的对象的数据类型一致,且规则不能绑定在一个数据类型为TEXT、IMAGE或TIMESTAMP的列。可以直接用一个新的规则来绑定列或用户自定义数据类型,而不需要先将其原来绑定的规则解除,系统会自动将旧规则覆盖。用存储过程sp_unbindrule解除规则的绑定 sp_unbindrule objname=object_name,futureonly 例5-15 解除已绑定到S表的字段Age的规则

28、age_rule。EXEC sp_unbindrule S.Age,2023/9/11,北京林业大学 软件教研室,39,在删除一个规则前必须先将与其绑定的对象解除绑定。,删除规则 使用DROP RULE命令删除规则 DROP RULE rule_name,.n 例5-16 删除age_rule规则。DROP RULE age_rule,2023/9/11,北京林业大学 软件教研室,40,5.2.6 默认,默认(Default)是向用户输入记录时没有指定具体数据的列中自动插入的数据。此处的默认对象与用ALTER TABLE 或CREATE TABLE命令操作表时使用DEFAULT选项指定的默认功

29、能相似,但默认对象可以用于多个列或用户自定义数据类型,他的管理与应用规则有许多相似之处。表的一列或一个用户自定义数据类型只能与一个默认绑定。创建默认 CREATE DEFAULT default_name AS constant_expression 例5-17 创建出生日期默认birthday_defa。CREATE DEFAULT birthday_defaAS 1978-1-1,2023/9/11,北京林业大学 软件教研室,41,查看和修改默认 使用sp_helptext存储过程可以查看默认的信息。例5-18 查看默认birthday_defa。EXEC sp_helptext birt

30、hday_defa 默认的绑定与松绑 用存储过程sp_bindefault 绑定默认 sp_bindefault defname=default,objname=object_name,futureonly 用存储过程sp_unbindefault 解除默认的绑定 sp_unbindefault objname=object_name,futureonly,2023/9/11,北京林业大学 软件教研室,42,例5-19 绑定默认birthday_defa到数据表S的Birthday列上。EXEC sp_bindefault birthday_defa,S.Birthday 例5-20 解除默认

31、birthday_defa与表S的Birthday列的绑定。EXEC sp_unbindefault S.Birthday 删除默认 使用DROP RULE命令删除默认 DROP DEFAULT default_name,.n例5-21 删除学生生日默认birthday_defa。DROP DEFAULT birthday_defa,在删除一个默认前必须先将与其绑定的对象解除绑定,2023/9/11,北京林业大学 软件教研室,43,5.3 并发控制与封锁,5.3.1 数据库并发性的含义 为了充分利用数据库资源,很多时候数据库用户都是对数据库系统并行存取数据,这样就会发生多个用户并发存取同一数据

32、块的情况,如果对并发操作不加控制可能会产生不正确的数据,破坏数据的完整性。并发控制就是解决这类问题,以保持数据库中数据的一致性,即在任何一个时刻数据库都将以相同的形式给用户提供数据。,2023/9/11,北京林业大学 软件教研室,44,事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。定义事务的语句有三条:BEGIN TRANSACTIONCOMMITROLLBACK,5.3.2 事务(Transaction),事务的开始,事务的提交,事务的回滚,2023/9/11,北京林业大学 软件教研室

33、,45,事务的特征 原子性(Atomicity)一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(Nothing or All)的原则,即不允许完成部分的事务。一致性(Consistency)事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数据满足完整性约束。P204 银行的例子隔离性(Isolation)如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。持久性(Durability)持久性指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS

34、也应该能够恢复。,ACID特性,2023/9/11,北京林业大学 软件教研室,46,事务上述四个性质的英文术语的第一个字母为ACID。因此,这四个性质以称为事务的ACID准则。下面是一个事务的例子,从帐号A转移资金额R到帐号B:BEGIN TRANSACTION READ A AA-R IF A0/*A 款不足*/THEN BEGIN DISPLAY“A款不足”ROLLBACK ENDELSE/*拨款*/BEGIN BB+R DISPLAY“拨款完成”COMMIT END,2023/9/11,北京林业大学 软件教研室,47,这是对一个简单事务的完整的描述:该事务有两个出口:当A 帐号的款项不足

35、时,事务以ROLLBACK(撤销)命令结束,即撤销该事务的影响;另一个出口是以COMMIT(提交)命令结束,完成从帐号A到帐号B的拨款。在COMMIT之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。只有在COMMIT之后,事务对数据库所产生的变化才对其他事务开放,这就可以避免其他事务访问不一致或不存在的数据。,2023/9/11,北京林业大学 软件教研室,48,并发控制机制的提出,当多个用户并发地存取数据库时可能出现多个事务同时存取同一数据的情况,并发控制机制将对这些并发操作加以控制以保证每个事务的ACID特性,确保数据库的一致性并发控制机制是衡量某DBMS系统性能的指标

36、之一,2023/9/11,北京林业大学 软件教研室,49,并发控制概述,这种数据库的不一致是由并发操作引起的,机票数量A,A=16,A=15,A=15,售票点,售票点,A=16,A=16,出售1,出售1,事务T1,事务T2,2023/9/11,北京林业大学 软件教研室,50,并发操作引起的丢失修改,并发操作引起的数据不一致性包括三类丢失修改不可重复读读脏数据丢失修改事务T1对数据的修改被事务T2的修改覆盖,2023/9/11,北京林业大学 软件教研室,51,并发操作引起的不可重复读,不可重复读事务T1读取某一数据后,事务T2对其做了修改,当T1按同样条件再读时得到不同的值事务T1读取某些数据后

37、,事务T2删除(或插入)了一些记录,当T1按同样条件再读时发现少(或多)了一些记录,T1读A=1,B=2求A+B=3读A=1,B=4求A+B=5,T2读B=2B=B*2写回B=4,2023/9/11,北京林业大学 软件教研室,52,并发操作引起的读脏数据,读脏数据事务T1 修改了某数据并写回磁盘,事务T2 读取了同一数据后,T1由于某种原因被撤销,被修改的值复原,此时T2读到的数据与数据库中的数据不一致,T1读C=1C=C*2写回C=2ROLLBACKC恢复为1,T2读C=2,2023/9/11,北京林业大学 软件教研室,53,小结,产生上述三类不一致性的主要原因并发操作破坏了事务的隔离性,事

38、务间相互干扰并发控制的主要技术封锁技术(Locking)时间戳技术(Timestamp)其他,2023/9/11,北京林业大学 软件教研室,54,5.3.4 封锁,概念事务T在对某个数据对象(如数据库、表、记录等)操作之前,首先向系统发出加锁请求以便获得对数据对象相应的控制在事务T释放它所获得的锁之前,其他事务不能更新此数据对象(可以读此数据对象),2023/9/11,北京林业大学 软件教研室,55,锁的类型,排它锁(eXclusive lock):写锁若事务T对数据对象A加上X锁,则允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁共享锁(Share lock):

39、读锁若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,2023/9/11,北京林业大学 软件教研室,56,锁的相容矩阵,Y:相容的请求N:不相容的请求,2023/9/11,北京林业大学 软件教研室,57,封锁协议,有了两种基本封锁,还需要什么约定?,封锁协议的概念何时申请加锁、持锁时间、何时释放等规则不同的封锁协议所达到的系统一致性不同,2023/9/11,北京林业大学 软件教研室,58,三个级别的封锁协议,一级封锁协议内容:事务T在修改数据R之前必须先对其加X 锁,直至事务结束事务结束包括正常结束(COMMIT)和非正常

40、结束(ROLLBACK)评价:是否可解决丢失修改?可重复读?读脏数据?,可防止,不能保证,不能防止,2023/9/11,北京林业大学 软件教研室,59,1级封锁协议,没有丢失修改,2023/9/11,北京林业大学 软件教研室,60,1级封锁协议,读“脏”数据,2023/9/11,北京林业大学 软件教研室,61,1级封锁协议,不可重复读,2023/9/11,北京林业大学 软件教研室,62,三个级别的封锁协议,二级封锁协议内容:1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁读数据前加S锁,读完即释放写数据前加X 锁直至事务结束评价:是否可解决丢失修改?可重复读?读脏数据?,可防

41、止,不能保证,可防止,2023/9/11,北京林业大学 软件教研室,63,2级封锁协议,不可重复读,2023/9/11,北京林业大学 软件教研室,64,三个级别的封锁协议,三级封锁协议1级封锁协议+事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放读数据前加S锁直至事务结束写数据前加X 锁直至事务结束评价:是否可解决丢失修改?可重复读?读脏数据?,可防止,能保证,可保证,2023/9/11,北京林业大学 软件教研室,65,3级封锁协议,可重复读,2023/9/11,北京林业大学 软件教研室,66,小结用封锁协议解决问题,用什么封锁协议解决以下问题?丢失修改?读脏数据?不能重复读?,一级

42、封锁,二级封锁,三级封锁,2023/9/11,北京林业大学 软件教研室,67,不同级别的封锁协议,2023/9/11,北京林业大学 软件教研室,68,封锁粒度(Lock Granularity)封锁粒度指封锁的单位。根据对数据的不同处理,封锁的对象可以是这样一些逻辑单元:字段、记录、表、数据库等,封锁的数据对象的大小叫封锁粒度。封锁粒度越小,系统中能够被封锁的对象就越多,并发度越高,但封锁机构复杂,系统开销也就越大。封锁粒度越大,系统中能够被封锁的对象就越少,并发度越低,封锁机构越简单,相应系统开销也就越小。,2023/9/11,北京林业大学 软件教研室,69,活锁和死锁问题,2023/9/1

43、1,北京林业大学 软件教研室,70,活锁举例说明:事务T1封锁某数据后,事务T2请求封锁未获得并等待,而T1释放锁后,事务T3请求封锁并获得,T3释放锁后,事务T4请求封锁并获得T2可能永远等待解决办法:采用先来先服务的策略,2023/9/11,北京林业大学 软件教研室,71,T1 T2,Xlock R1.Xlock R2等待等待等待.,.Xlock R2.Xlock R1等待等待.,2023/9/11,北京林业大学 软件教研室,72,死锁问题,死锁举例说明:事务T1和T2各自封锁了数据R1和R2后,又各自请求封锁R2和R1,因都无法获得而等待对方释放的现象解决的两类方法预防死锁允许发生死锁,

44、采用一定手段定期诊断并解除死锁,2023/9/11,北京林业大学 软件教研室,73,死锁的预防,一次封锁法办法:每个事务一次将所有要使用的数据全部加锁存在问题?顺序封锁法办法:预先规定数据对象的封锁顺序,所有事务均按此顺序存在问题?,在操作系统上广为采用的预防死锁的策略并不很适合数据库的特点因此DBMS普遍采用诊断并解除死锁的办法,2023/9/11,北京林业大学 软件教研室,74,(1)一次封锁法,一次封锁法存在的问题:降低并发度 扩大封锁范围将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度,2023/9/11,北京林业大学 软件教研室,75,一次封锁法(续),难于事

45、先精确确定封锁对象数据库中数据是不断变化的,原来不要求封锁的数据,在执行过程中可能会变成封锁对象,所以很难事先精确地确定每个事务所要封锁的数据对象解决方法:将事务在执行过程中可能要封锁的数据对象全部加锁,这就进一步降低了并发度。,2023/9/11,北京林业大学 软件教研室,76,(2)顺序封锁法,顺序封锁法存在的问题 维护成本高数据库系统中可封锁的数据对象极其众多,并且随数据的插入、删除等操作而不断地变化,要维护这样极多而且变化的资源的封锁顺序非常困难,成本很高,2023/9/11,北京林业大学 软件教研室,77,顺序封锁法(续),难于实现事务的封锁请求可以随着事务的执行而动态地决定,很难事

46、先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁。例:规定数据对象的封锁顺序为A,B,C,D,E。事务T3起初要求封锁数据对象B,C,E,但当它封锁了B,C后,才发现还需要封锁A,这样就破坏了封锁顺序.,2023/9/11,北京林业大学 软件教研室,78,数据R,T1,T2,事务依赖图,死锁的诊断与解除 如果在事务依赖图中沿着箭头方向存在一个循环,那么死锁的条件就形成了,系统就会出现死锁。选择一个处理死锁代价最小的事务,将其撤销以解除死锁。,2023/9/11,北京林业大学 软件教研室,79,5.4 数据库的恢复,系统必须具有检测故障并把数据从错误状态中恢复到某一正确状态的功

47、能,这就是数据库的恢复。数据库恢复的基本原理就是利用存储在系统其他地方的冗余数据来修复。恢复系统应该提供两种类型的功能:生成冗余数据对可能发生的故障作某些准备冗余重建利用这些冗余数据恢复数据库,登记日志文件,数据转储,2023/9/11,北京林业大学 软件教研室,80,登记日志文件 日志文件是用来记录事务对数据库的更新操作的文件。典型的日志文件主要包含以下内容:(1)更新数据库的事务标识(标明是哪个事务);(2)操作的类型(插入、删除或修改);(3)操作对象;(4)更新前数据的旧值(对于插入操作,没有旧值);(5)更新后数据的新值(对于删除操作,没有新值);(6)事务处理中的各个关键时刻(事务

48、的开始、结束及其真正回写的时间)。先写原则:(1)至少要等到相应运行记录的撤销部分已经写入日志文件中以后,才允许该事务向物理数据库中写入记录。(2)直到事务的所有运行记录的撤销和重做两部分都已写入日志文件中以后,才允许事务完成提交处理。,2023/9/11,北京林业大学 软件教研室,81,数据转储(Data Dump)数据转储是指定期地将整个数据库复制到多个存储设备(如磁带、磁盘)上保存起来的过程,它是数据库恢复中采用的基本手段。按照转储方式转储可以分为海量转储和增量转储。按照转储状态数据转储又可分为静态转储和动态转储。,2023/9/11,北京林业大学 软件教研室,82,5.4.3 数据库的

49、故障和恢复的策略,故障可分为以下三类:事务故障、系统故障和介质故障。事务故障(Transaction Failure)及其恢复 事务故障表示由非预期的、不正常的程序结束所造成的故障。这类恢复操作称为事务撤销(UNDO),具体做法如下:(1)反向扫描日志文件,查找该事务的更新操作。(2)对该事务的更新操作执行反操作,即对已经插入的新记录进行删除操作,对已删除的记录进行插入操作,对修改的数据恢复旧值,用旧值代替新值。,2023/9/11,北京林业大学 软件教研室,83,系统故障(System Failure)及其恢复 系统故障是指系统在运行过程中,由于某种原因,造成系统停止运转,致使所有正在运行的

50、事务都以非正常方式终止,要求系统重新启动。恢复的具体做法如下:(1)正向扫描日志文件,查找尚未提交的事务,将其事务标识记入撤销队列。同时查找已经提交的事务,将其事务标识记入重做队列。(2)对撤销队列中的各个事务进行撤销处理。方法同事务故障中所介绍的撤销方法相同。(3)对重做队列中的各个事务进行重做处理。进行重做处理的方法是:正向扫描日志文件,按照日志文件中所登记的操作内容重新执行操作,使数据库恢复到最近某个可用状态。,2023/9/11,北京林业大学 软件教研室,84,介质故障(Media Failure)及其恢复 介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号