第6章 数据库保护_第1页
第6章 数据库保护_第2页
第6章 数据库保护_第3页
第6章 数据库保护_第4页
第6章 数据库保护_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

数据库系统原理

与应用技术

主讲:陈漫红chmh1@263.net北京联合大学师范学院电气信息系第6章

数据库保护6.1事务的概念

6.2数据库恢复概述

6.3并发控制与封锁

6.4数据库的安全性

6.5数据库的完整性

6.6数据库的备份与恢复

6.7本章小结6.1事务的概念

6.1.1事务

6.1.2事务的特征

6.1.1事务事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。

例如:对于一个转帐活动:A帐户转帐给B帐户n元钱,这个活动包含两个动作:第一个动作:A帐户-n第二个动作:B帐户+n6.1.2事务的特征原子性(Atomicity)

:指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。

一致性(Consistency)

:指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性(Isolation)

:指数据库中一个事务的执行不能被其它事务干扰。持久性(Durability)

:也称为永久性,是指事务一旦提交,则其对数据库中数据的改变就是永久的。

6.1.2事务的特征保证事务的ACID特性是事务处理的重要任务。事务的ACID特性可能遭到破坏的因素有:多个事务并行运行时,不同事务的操作有交叉情况;这种情况DBMS应保证事务的原子性。事务在运行过程中被强迫停止,这种情况DBMS应保证被终止的事物对其他的事物没有影响。6.2数据库恢复概述

数据库的恢复:数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为完整状态或一致状态)的功能。数据库系统中可能发生的故障:(1)事务内部的故障

(2)系统故障

(3)介质故障

(4)计算机病毒

6.2数据库恢复概述数据转储是数据库恢复中采用的基本技术。即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后就可以利用后备副本把数据库恢复。转储是十分耗费时间和资源的,不能频繁进行。DBA应该根据数据库使用情况确定一个适当的转储周期,制定合适的转储策略。日志文件是用来记录对数据库每一次更新活动的文件。在转储中必须建立日志文件,后援副本和日志文件综合起来才能有效地恢复数据库。

6.3并发控制与封锁

6.3.1并发控制概述6.3.2封锁6.3.3封锁协议6.3.4死锁6.3.5两段锁协议

6.3.1并发控制概述

数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据,在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作是在一定的数据上进行的。当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互干扰的情况。

并发事务的相互干扰示例A、B两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下:

A订票点(事务A)读出航班目前的机票余额数,假设为10张;B订票点(事务B)读出航班目前的机票余额数,也为10张;A订票点订出6张机票,修改机票余额为10-6=4,并将4写回到数据库中;B订票点订出5张机票,修改机票余额为10-5=5,并将5写回到数据库中;可见这两个事务不能反映出飞机票数不够的情况,而且B事务对数据库的修改,使数据库中的数据不可信,这种情况称为数据的不一致。DBMS必须想办法避免出现这种情况,这就是DBMS在并发控制中要解决的问题。并发操作所带来的数据不一致情况大致分为:丢失修改,不可重复读,读“脏”数据和产生“幽灵”数据。以下分别介绍。丢失数据修改是指两个事务T1和T2读入同一数据并进行修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被T2覆盖掉。例如:读“脏”数据是指一个事务读取了某个失败事务运行过程中的数据。不可重复读是指事务T1读取数据后,事务T2执行了更新操作,修改了T1读取的数据,T1操作完数据后,又重新读取了同样的数据,但此次读完后,当T1再对这些数据进行相同操作时,所得的结果与前一次不一样。产生“幽灵”数据属于不可重复读的范畴。指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T1再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。产生这四种数据不一致现象的主要原因是并发操作破坏了事务的隔离性。并发控制是要用正确的方法来调度并发操作,使一个事务的执行不受其他事务的干扰,避免造成数据的不一致情况。6.3.2封锁

并发控制的主要技术是采用封锁机制。封锁就是事务T可以向系统发出请求,对某个数据对象(最常用的是记录)加锁(Locking)。于是事务T对这个数据对象就有一定的控制权。基本的封锁类型:(1)排它(X)锁若事务T对数据R加上X锁,则只允许T读取和修改R。其他一切事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。(2)共享锁(S锁或读锁):指对于读操作(检索)来说,可以多个事务同时获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。若事务T给数据对象A加了共享锁,则事务T可以读A,但不能修改A,其它事务只能再给A加S锁,而不能加X锁,直到T释放了A上的S锁为止.

封锁类型(3)更新(U)锁当一个事务T对数据对象A加更新锁,首先对数据对象做更新锁锁定,这样数据将不能被修改,但可以读取,等到执行数据更新操作时,自动将更新锁转换为独占锁,但当对象上有其他锁存在时,无法对其作更新锁锁定。(4)意向锁对于数据库中的数据对象,可用如图所示的层次树表示。意向锁表示一个事务为了访问数据库对象层次结构中的某些底层资源(如表中的元组)而加共享锁或排他锁的意向。包括:意向共享(IS)锁

意向排他(IX)锁

意向排他共享(SIX)锁封锁类型

(IS)锁:如果对一个数据对象加IS锁,表示拟对它的后裔节点加S锁,读取底层的数据。例如,若要对某个元组加S锁,则首先应对元组所在的关系或数据库加IS锁。

意向排他(IX)锁:如果对一个数据对象加IX锁,表示拟对它的后裔节点加X锁,更新底层的数据。例如,若要对某个关系加X锁,以便插入一个元组,则首先应对数据库加IX锁。

意向排他共享(SIX)锁:如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。例如,对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)。锁类型及其作用锁类型及其作用锁模式描述共享(S)用于只读操作,如SELECT语句更新(U)用于可更新的资源中,防止当多个会话在读取、锁定及随后可能进行的资源更新时发生常见形式的死锁排他(X)用于数据修改操作,如INSERT,UPDATE或DELETE,确保不会同时对同一资源进行多重更新意向用于建立锁的层次结构,意向锁的类型为意向共享(IS)、意向排他(IX)及意向排他共享(SIX)加锁类型的相容矩阵锁模式意向共享(IS)共享(S)更新(U)意向排他(IX)意向排他共享(SIX)排他(X)意向共享(IS)相容相容相容相容相容不相容共享(S)相容相容相容不相容不相容不相容更新(U)相容相容不相容不相容不相容不相容意向排他(IX)相容不相容不相容相容不相容不相容意向排他共享(SIX)相容不相容不相容不相容不相容不相容排他(X)不相容不相容不相容不相容不相容不相容封锁粒度

被锁定的对象的数据量称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。以关系数据库为例,封锁对象可以是行、列、索引项、页、扩展盘区、表和数据库等。

锁定粒度大,系统开销小,但并发度会降低锁定粒度小,系统开销大,但可提高并发度

6.3.3封锁协议在运用X锁和S锁对数据对象进行加锁时,还需要约定一些规则,如何时申请X锁或S锁、持锁时间、何时释放锁等。称这些规则为封锁协议或加锁协议(LockingProtocel)。对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。不同级别的封锁协议达到的系统一致性级别不同。一级封锁协议对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。但不能保证可重复读和不读“脏”数据。一级封锁协议示例二级封锁协议一级封锁协议加上对事务T对要读取的数据加S锁,读完后即释放S锁。除了可以防止丢失修改外,还可以防止读“脏”数据。但不能保证可重复读数据。二级封锁协议示例三级封锁协议一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。三级封锁协议示例不同级别的封锁协议总结

6.3.4死锁1.死锁的种类(1)活锁是指当若干事务要对同一数据项加锁时,造成一些事务的永远等待,得不到控制权的现象。假设T1、T2、T3、T4都要读取R的值,则它们依次对R加锁,如图所示,这时T2可能永远处于等待状态。

(2)死锁是指两个以上事务集合中的每个事务都在等待加锁当前已被另一事务加锁的数据项,从而造成相互等待的现象。如图所示。死锁的诊断

(1)超时法如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。这种方法实现简单,但存在两个问题:一是可能误判死锁,如果事务是由于其他原因而使等待时间长,系统会认为是发生了死锁;二是时限的设置问题,若时限设置得太长,可能导致死锁发生后不能及时发现。(2)等待图法等待图法是动态地根据并发事务之间的资源等待关系构造一个有向图,并发控制子系统周期性地检测该有向图是否出现环路,若有,则说明出现了死锁。数据库中解决死锁的常用方法

一次封锁法一次封锁法是每个事务一次将所有要使用的数据全部加锁。顺序封锁法顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。采用诊断的方式

构造一些算法,选择代价小的撤销让路6.3.5两段锁协议具体内容为:①在对任何数据进行读,写操作之前,首先要封锁该数据;②在释放一个封锁之后,事务不再申请和获得任何其他封锁.两段锁协议是实现可串行化调度的充分条件。可以将每个事务分成两个时期:申请封锁期和释放封锁期,申请期申请要进行的封锁,释放期释放所占有的封锁。在申请期不允许释放任何锁,在释放期不允许申请任何锁,这就是两段式封锁。6.4数据库的安全性6.4.1数据库安全性控制概述6.4.2用户标识与鉴别6.4.3用户身份认证6.4.4访问控制6.4.5视图机制6.4.6审计6.4.7数据加密6.4.1数据库安全性控制概述用户DBMSOSDB用户标识和鉴定存取控制操作系统安全保护数据密码存储安全保护在计算机系统中,安全措施一般是一级一级层层设置的,如图所示就是一种很常用的安全模型。

6.4.2用户标识与鉴别用户标识和鉴定是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的身份。

目前常用的确用户鉴定方法有:(1)口令(password)是最常用的方法。当进入系统时,系统常常要求用户输入口令,并对输入的口令进行鉴别,核实用户的身份。(2)利用用户的物理特征鉴别利用用户的物理特征,如指纹、声波、相貌等鉴别用户的身份。这些鉴别的方法操作简单,而且技术日趋成熟。6.4.3用户身份认证系统认证模式是指当用户进行访问数据库系统时系统给予的确认方式,这是数据库管理系统提供的最外层安全保护措施,主要体现在当用户登录时,系统对该用户的账号和口令进行认证。例如,SQLServer2005提供了Windows认证模式和SQLServer认证模式。在Windows认证模式下,用户的身份验证由操作系统完成。SQLServer认证模式下,由DBMS进行用户认证机制。

6.4.4访问控制1.存取控制:数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限。2.自主存取控制方法:是一种基于存取者身份或所属工作组对数据的访问权限进行控制的手段,大多数DBMS都支持DAC,其控制机制主要包括两部分:①提供定义用户权限的功能,并将实际的权限定义登记到数据字典中;②进行权限检查,当用户发出数据库存取操作请求时,DBMS根据数据字典中登记的权限和安全性规则进行访问的合法性检查,若用户的操作请求不合法,则拒绝数据访问。

3.强制存取控制方法相对于DAC,强制访问控制(MAC)是一种不允许主体干涉的访问控制,它由系统或数据库管理员决定整个系统的安全策略,MAC的实现机制主要由两部分内容构成:①针对主体的权限和客体的安全性要求,分别指派相应的敏感度标记,主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。②当主体对客体进行访问时,依据“不准上读,不准下写”的规则进行访问控制。

6.4.5视图机制视图技术是保证数据库安全的一个重要手段,它可以把要保密的数据对无权存取的用户隐藏起来,从而对数据提供一定程度的安全保护。通过视图可实现如下功能:①可以限制用户只看到表中的某些行

②可以限制用户只看到表中的某些列

③将多个表中的列组合起来。使得这些列看起来就像一个简单的数据库表。

6.4.6审计审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志中,一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

6.4.7数据加密加密是根据一定的算法将原始数据(明文,Plaintext)变换为不可直接识别的格式(密文,Ciphertext),从而使得不知道解密算法的人无法获得数据的内容。

加密方法主要有两种:

1)替换方法。使用密钥将明文中的每一个字符转换为密文中的字符。

2)置换方法。仅将明文的字符按不同的顺序重新排列。常用的加密算法有:对称算法,指加密和解密使用同一个密钥,主要包括替换密码、变位密码、DES算法等方法;非对称算法,指加密和解密使用两个不同但是数学上相关的密钥,最典型的是RSA算法。

6.4.7数据加密SQLServer可以加密下列方面:(1)密码

SQLServer自动将分配给登录和应用角色的密码加密。(2)存储过程、视图、触发器、用户自定义函数、默认值和规则例如,为了加密一个存储过程,使用下面形式的CREATEPROCEDURE语句:CREATEPROCEDUREprocedurename[;number][@parameter

datatype[VARYING][=defaultvalue][OUTPUT]][,…][WITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]其中,人们关心的仅仅是可选的WITH参数。ENCRYPTION关键字保护SQLServer不被公开在进程中,在激活的时候系统存储过程sp_helptext就会被忽视。

(3)在服务器和用户之间传输的数据6.5数据库的完整性数据的完整性是为了防止数据库中存在不符合语义的数据。DBMS检查数据是否满足完整性条件的机制就称为完整性检查。DBMS的完整性控制机制应具有两方面的功能:(1)定义功能:为数据库用户提供定义完整性约束条件的机制。(2)检查功能:检查用户发出的操作请求是否违背了完整性约束条件,如果发现用户的操作请求使数据违背了完整性约束条件,则执行相应的处理,以保证数据库中数据的完整性。如下的二元组描述了DBMS实现一个数据库完整性的机制:数据库完整性机制=(完整性约束集,完整性约束检查)6.5.1数据完整性约束从不同角度对数据库的完整性进行如下分类:1.完整性约束条件作用的对象可以是关系、元组、列3种,根据完整性约束条件作用的对象,可分为:①列约束②元组约束③关系约束

2.按照完整性约束对象的状态来分,可将完整性分为静态完整性约束和动态完整性约束。3.根据完整性的应用特征,可将完整性分为:实体完整性、用户定义完整性与参照完整性。6.5.2SQLServer2005的数据完整性控制

实现数据的完整性控制一般是在服务器上完成的。主要有以下两种方法:一种是在定义表时声明数据完整性,称为声明完整性,另一种是在服务器端编写触发器来实现,称为过程完整性。不管使用哪一种方法,只要用户定义好数据完整性,以后在执行对数据的增、删、改操作时,数据库管理系统自动检查用户定义的完整性约束条件。

在SQLServer2005中提供多种强制数据完整性的机制。

1.PRIMARYKEY约束标识列或列集,这些列或列集的值唯一标识表中的行。

•作为表定义的一部分在创建表时创建。

•添加到还没有PRIMARYKEY约束的表中。•如果已有PRIMARYKEY约束,则可对其进行修改或删除。2.FOREIGNKEY约束

FOREIGNKEY约束(外键约束)标识表之间的关系,用于强制参照完整性,为表中一列或者多列数据提供参照完整性。•作为表定义的一部分在创建表时创建。•对已有的FOREIGNKEY约束进行修改或删除。注意:外码所引用的列必须是有PRIMARYKEY约束或UNIQUE约束的列。一个表可以有多个FOREIGNKEY约束。

3.UNIQUE约束

在列集内强制执行值的唯一性。

唯一约束与主键的区别为:主键不但不允许为空值,而且每个表中只能有一个,但UNIQUE约束的列在表中可以有多个。UNIQUE约束优先于唯一索引。4.CHECK约束通过限制用户输入的值来加强域完整性。用于限制列的取值在指定的范围内,使数据库中存放的值都是有意义的。

系统在执行INSERT语句和UPDATE语句时自动检查CHECK约束。5.NOTNULL非空约束

用于指定列的非空性。6.DEFAULT默认值约束用于提供列的默认值。

7.规则

规则作为一个独立的数据库对象存在,表中的每列或者每个用户定义数据类型只能和一个规则绑定。

(1)创建规则语法格式如下:CREATERULE规则名AS条件表达式【例6-9】在test数据库中创建一个名为rule1的规则,限定输入的值必须在0~10之间。UsetestGoCREATERULErule1as@c1between0and10(2)绑定规则要使用规则,必须首先将其和列或者用户定义数据类型绑定。绑定的方法为使用SQLServer的系统存储过程sp_bindrule,也可以使用SQLServer的管理控制器。语法格式为:sp_bindrule[@rulename=]'规则名',[@objname=]'列名或者用户定义数据类型'【例6-10】将【例6-9】建立的rule1规则1绑定到test数据库的table1表中的c1列上;UsetestGoExecsp_bindrule‘rule1’,’table1.c1’(3)解除和删除规则对于不再使用的规则,可使用droprule删除。要删除规则首先要解除规则的绑定。解除规则的绑定可以使用sp_unbindrule存储过程。sp_unbindrule存储过程的语法格式如下:sp_unbindrule[@objname=]'列名或者用户定义数据类型

温馨提示

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

评论

0/150

提交评论