第7章数据库的安全保护课件.ppt

上传人(卖家):晟晟文业 文档编号:4353436 上传时间:2022-12-01 格式:PPT 页数:45 大小:297KB
下载 相关 举报
第7章数据库的安全保护课件.ppt_第1页
第1页 / 共45页
第7章数据库的安全保护课件.ppt_第2页
第2页 / 共45页
第7章数据库的安全保护课件.ppt_第3页
第3页 / 共45页
第7章数据库的安全保护课件.ppt_第4页
第4页 / 共45页
第7章数据库的安全保护课件.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、第第7 7章数据库的安全保护章数据库的安全保护7.1 数据库的安全性及SQL Server的安全保护技术用 户DBMSOSDB 用户标识和鉴别用户标识和鉴别 存取控制存取控制 操作系统安全保护操作系统安全保护 密码存储密码存储 数据库的安全性是指保护数据库,以防止不合法的使数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。用造成的数据泄密、更改或破坏。7.1.1 数据库安全性控制的一般方法数据库安全性控制的一般方法图图1数据库系统的安全模型数据库系统的安全模型1.用户标识与鉴别(1)用输入用户名(用户标识号)来标明用户身份用输入用户名(用户标识号)来标明用户身份。系统

2、内部记录着所有合法用户的标识。系统对输入的系统内部记录着所有合法用户的标识。系统对输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。用户名与合法用户名对照,鉴别此用户是否为合法用户。(2)通过回答口令标识用户身份。通过回答口令标识用户身份。系统常常要求用户输入口令,只有口令正确才能进入系统常常要求用户输入口令,只有口令正确才能进入系统。为保密起见,口令由用户自己定义并可以随时变更。系统。为保密起见,口令由用户自己定义并可以随时变更。为防止口令被人窃取,用户在终端上输入口令时,不把口为防止口令被人窃取,用户在终端上输入口令时,不把口令的内容显示在屏幕上,而用字符令的内容显示在屏幕上,而用字

3、符“*”替代其内容。替代其内容。(3)通过回答对随机数的运算结果表明用户身份。通过回答对随机数的运算结果表明用户身份。系统提供一个随机数,用户根据预先约定的计算过程系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输给到计算机。系统或计算函数进行计算,并将计算结果输给到计算机。系统根据用户计算结果判定用户是否合法。根据用户计算结果判定用户是否合法。2.存取控制授权定义授权定义 具有授权资格的用户,如数据库管理员具有授权资格的用户,如数据库管理员DBA或建表户或建表户DBO,通过,通过数据控制语言数据控制语言DCL,将授权决定告知数据库管,将授权决定告知数据库管理系统

4、理系统。(1)数据库系统通过以下)数据库系统通过以下3步来实现数据控制:步来实现数据控制:存权处理存权处理 数据库管理系统数据库管理系统DBMS把授权的结果编译后存入数据字把授权的结果编译后存入数据字典中。典中。查权操作查权操作 当用户提出操作请求时,系统要在数据字典中查找该当用户提出操作请求时,系统要在数据字典中查找该用户的用户的数据操作权限数据操作权限,当用户拥有该操作权时才能执行其操,当用户拥有该操作权时才能执行其操作,否则系统将拒绝其操作。作,否则系统将拒绝其操作。(2)关系中的用户权限)关系中的用户权限用户权限主要包括用户权限主要包括数据对象数据对象和和操作类型操作类型两个要素。通过

5、两个要素。通过授权规定用户可以对哪些数据对象进行哪些类型的操作。授权规定用户可以对哪些数据对象进行哪些类型的操作。数据对象数据对象操作类型操作类型模式、外模式、内模式模式、外模式、内模式建立、修改、检索建立、修改、检索表或者记录、字段表或者记录、字段查找、插入、修改、删除查找、插入、修改、删除(3)SQL的数据控制功能的数据控制功能SQL的数据控制功能为的数据控制功能为GRANT语句(授权)和语句(授权)和REVOKE语句(收权)。语句(收权)。系统特权:系统特权:GRANT CREATE DATABASE,BACKUP DATABASE TO 王平王平对象特权:对象特权:GRANT sele

6、ct,update(s#)on s to 王平王平(4)授权机制授权机制授权粒度:用户权限定义中数据对象范围。授权粒度:用户权限定义中数据对象范围。在关系数据库中,授权粒度包括在关系数据库中,授权粒度包括关系、记录或属性关系、记录或属性。授权粒度越细,授权子系统就越灵活,但系统定义与检授权粒度越细,授权子系统就越灵活,但系统定义与检查权限的开销也会相应地增大。查权限的开销也会相应地增大。DBA不需要进行授权就可进行数据库内的任何操作。不需要进行授权就可进行数据库内的任何操作。数据对象的创建者(数据对象的创建者(dbo)自动获得对于该数据对象)自动获得对于该数据对象的所有操作权限。的所有操作权限

7、。获得数据操作权的用户可以通过获得数据操作权的用户可以通过GRANT语句把权限语句把权限转授给其他用户。转授给其他用户。T-SQL 语句语句权限说明权限说明CREATE DATABASE创建数据库,只能由创建数据库,只能由SA授予授予SQL服务器用户服务器用户CREATE PROCETURE创建存储过程创建存储过程CREATE RULE创建规则创建规则CREATE TABLE创建表创建表CREATE VIEW创建视图创建视图BACKUP DATABASE备份数据库备份数据库BACKUP LOG备份日志文件备份日志文件SQL SERVER中中系统特权系统特权适用的语句和权限说明适用的语句和权限说

8、明对象特权:对象特权:类似于数据库类似于数据库操作语言操作语言DMLDML的语句权限,它指的语句权限,它指用户对数据库中的表、视图、存储过程等对象的用户对数据库中的表、视图、存储过程等对象的操作权限操作权限。对象对象对象特权对象特权语义语义表、视图表、视图SelectSelect,insert,update,deleteinsert,update,delete对表或视图的查询、插对表或视图的查询、插入、修改和删除操作入、修改和删除操作表和视图的字段表和视图的字段S e l e c t(S e l e c t(),update(),update()允许对指定的字段查看允许对指定的字段查看或修改或

9、修改存储过程存储过程executeexecute运行存储过程运行存储过程3.视图视图:视图:为不同的用户定义不同的视图,通过视图把数据为不同的用户定义不同的视图,通过视图把数据对象限制在一定范围内,把要保密的数据对无权存取的对象限制在一定范围内,把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全用户隐藏起来,从而自动地对数据提供一定程度的安全保护。保护。4、审计、审计 审计功能就是把用户对数据库的所有操作自动记录下审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志中。来放入审计日志中。一旦发生数据被非法存取,一旦发生数据被非法存取,DBADBA可以利用审计跟踪

10、的可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出信息,重现导致数据库现有状况的一系列事件,找出非非法存取数据的人、时间和内容法存取数据的人、时间和内容等。等。加密是根据一定的加密是根据一定的算法将原始数据(明文,算法将原始数据(明文,Plain text)变换为不可直接识别的格式)变换为不可直接识别的格式(密文,(密文,Cipher text),从而使得不知道解密算法的人无法获得数据),从而使得不知道解密算法的人无法获得数据的内容。的内容。加密方法主要有两种:加密方法主要有两种:替换方法。使用密钥将明文中的每一个字符转换为密替换方法。使用密钥将明文中的每一个字符转换为密文中的

11、字符。文中的字符。1)置换方法。仅将明文的字符按不同的顺序重新排列。置换方法。仅将明文的字符按不同的顺序重新排列。5、数据加密机制、数据加密机制7.1.2 SQL Server的安全体系结构和安全认证模式的安全体系结构和安全认证模式 1.SQL Server的安全体系结构的安全体系结构(1)(1)操作系统的安全防线操作系统的安全防线:网络管理员负责建立用户组,网络管理员负责建立用户组,设置帐号并注册,决定不同的用户对不同系统资源的访问设置帐号并注册,决定不同的用户对不同系统资源的访问级别。级别。(2)SQL(2)SQL ServerServer的运行安全的运行安全防线防线:通过另一种帐号设置来

12、通过另一种帐号设置来创建附加安全层。创建附加安全层。(3)SQL Server(3)SQL Server数据库的安全防线数据库的安全防线:特定数据库都有自己特定数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。他用户无权访问其数据。(4)SQL Server(4)SQL Server数据库对象数据库对象的安全防线的安全防线:对权限进行管理,对权限进行管理,TSQLTSQL的的DCLDCL功能保证合法用户既使进入了数据库也不能有超功能保证合法用户既使进入了数据库也不能有超越权限的数据存取操作。越权限的数据存取操

13、作。2.SQL Server的安全认证模式的安全认证模式(1)(1)WindowsWindows(S S)安全认证模式)安全认证模式 SQLSQL服务器通过使用服务器通过使用WindowsWindows网络用户的安全性网络用户的安全性来控来控制用户对制用户对SQLSQL服务器的登录访问。它允许一个网络用户登服务器的登录访问。它允许一个网络用户登录到一个录到一个SQLSQL服务器服务器上时不必再提供一个单独的登录帐号上时不必再提供一个单独的登录帐号及口令,从而实现及口令,从而实现SQLSQL服务器与服务器与WindowsWindows(S S)登录的安全)登录的安全集成。集成。(2)(2)混合安

14、全认证模式混合安全认证模式 使用使用WindowsWindows(S S)安全认证模式或)安全认证模式或SQL ServerSQL Server安全安全认证模式。认证模式。SQL ServerSQL Server安全认证模式要求安全认证模式要求用户必须输入用户必须输入有效的有效的SQL ServerSQL Server登录帐号及口令。登录帐号及口令。在混合安全模式下,在混合安全模式下,可以使用可以使用WindowsWindows网络服务器网络服务器的用户账号的用户账号或或SQL ServerSQL Server自身验证身份的登录帐号自身验证身份的登录帐号,两,两者均有效。者均有效。2.数据库用

15、户的管理数据库用户的管理(1)dbo用户用户 dbo用户即数据库拥有者或数据库创建者,用户即数据库拥有者或数据库创建者,dbo在其所拥在其所拥有的数据库中拥有所有的操作权限。有的数据库中拥有所有的操作权限。dbo的身份可被重新分的身份可被重新分配给另一个用户,系统管理员配给另一个用户,系统管理员Sa可以作为他所管理系统的任可以作为他所管理系统的任何数据库的何数据库的dbo用户。用户。(2)guest用户用户 如果如果guest用户在数据库存在,则允许任意一个登录用户用户在数据库存在,则允许任意一个登录用户作为作为guest用户访问数据库,其中包括那些不是数据库用户用户访问数据库,其中包括那些不

16、是数据库用户的的SQL服务器用户。服务器用户。除系统数据库除系统数据库master和临时数据库和临时数据库tempdb的的guest用户不用户不能被删除外,其他数据库都可以将能被删除外,其他数据库都可以将自己自己guest用户删除用户删除,以,以防止非数据库用户的登录用户对数据库进行访问。防止非数据库用户的登录用户对数据库进行访问。7.2.1 完整性约束条件及完整性控制完整性约束条件及完整性控制7.2 7.2 数据库完整性及数据库完整性及SQL Server的完整性控制的完整性控制根据约束条件针对的数据库对象不同,可以分为:根据约束条件针对的数据库对象不同,可以分为:表级约束,表级约束,若干元

17、组间、关系中以及关系之间联系的约若干元组间、关系中以及关系之间联系的约束;束;元组级约束元组级约束,元组中各个字段间联系的约束;,元组中各个字段间联系的约束;属性级约束,属性级约束,针对列的类型、取值范围、精度、排序等针对列的类型、取值范围、精度、排序等而制定的约束条件。而制定的约束条件。数据库的完整性:指数据的正确性和相容性。数据库的完整性:指数据的正确性和相容性。完整性检查完整性检查:系统用一定的机制来检查数据库中的数据:系统用一定的机制来检查数据库中的数据是否满足规定的条件(是否满足规定的条件(完整性约束条件)完整性约束条件),这些完整性,这些完整性约束条件将作为约束条件将作为模式模式的

18、一部分存入数据库中。的一部分存入数据库中。1、静态约束、静态约束,数据库每一确定状态时的数据对象所应满足的约,数据库每一确定状态时的数据对象所应满足的约束条件;束条件;(1 1)对数据类型的约束。)对数据类型的约束。包括数据类型、长度、精度等。包括数据类型、长度、精度等。(2 2)对数据格式的约束:)对数据格式的约束:如规定学号的前两位表示入学年份,如规定学号的前两位表示入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。编号等等。(3 3)对取值范围的约束:)对取值范围的约束:如学生的成绩取使范围为如学生的成绩取使范

19、围为0 0一一100100。大。大学生的年龄为大于学生的年龄为大于1414等。等。(4 4)对空值的约束:)对空值的约束:(5 5)静态元组级约束:)静态元组级约束:是元组中各个字段之间联系的约束是元组中各个字段之间联系的约束 。如:开始日期小于结束日期,发货数量小于等于订货数量等,如:开始日期小于结束日期,发货数量小于等于订货数量等,职工的最低工资不能低于规定的最低值等。职工的最低工资不能低于规定的最低值等。(6 6)静态表级约束:)静态表级约束:指若干元组之间、关系之间联系的约束。指若干元组之间、关系之间联系的约束。约束条件所涉及对象的约束条件所涉及对象的状态状态不同,完整性约束可分为:不

20、同,完整性约束可分为:数据库从数据库从一种状态一种状态转变为转变为另一种状态另一种状态时,新、时,新、旧值之间所应满足的约束条件。旧值之间所应满足的约束条件。如:将允许空值的列改为不允许空值时,如果如:将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。该列目前已存在空值,则拒绝这种修改。又:职工的工龄只能增加,职工工资在更改时,又:职工的工龄只能增加,职工工资在更改时,规定新值不得少于旧值。规定新值不得少于旧值。2、动态约束、动态约束:7.2.2 7.2.2 DBMSDBMS的完整性控制功能的完整性控制功能定义功能定义功能,提供定义完整性约束条件的机制。,提供定义完整性约

21、束条件的机制。2)检查功能,检查功能,检查用户发出的操作请求,看其是否违背检查用户发出的操作请求,看其是否违背了完整性约束条件。了完整性约束条件。3)控制功能,控制功能,监视数据操作的整个过程,如果发现有违监视数据操作的整个过程,如果发现有违背了完整性约束条件的情况,则采取一定的动作来保证背了完整性约束条件的情况,则采取一定的动作来保证数据的完整性。数据的完整性。7.2.3 SQL Server数据完整性实现方法数据完整性实现方法1.SQL Server的数据完整性的种类的数据完整性的种类实体完整性。实体完整性。实体完整性为表级完整性,它要求表中所有的元组都应实体完整性为表级完整性,它要求表中

22、所有的元组都应该有一个惟一的标识符(该有一个惟一的标识符(主码主码)。)。(2)参照完整性。参照完整性。参照完整性是表级完整性,它维护参照表中的外码与被参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。参照表中主码的相容关系。如:在如:在SCSC表中,有学号为表中,有学号为9800198001的选课记录,则的选课记录,则S S表表中不允许删除该学生的记录。中不允许删除该学生的记录。(3)域完整性。域完整性。域完整性为列级和元组级完整性。它为列或列组指定域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。一个有效的数据集,并确定该列是否允

23、许为空。2.SQL Server实现数据完整性的两种方式完整性类型完整性类型约束类型约束类型完整性功能描述完整性功能描述域完整性域完整性DEFAULT插入数据时,如果没有明确提供列值,则用插入数据时,如果没有明确提供列值,则用缺省值作为该列的值缺省值作为该列的值CHECK指定某个列或列组可以接受值的范围,或指指定某个列或列组可以接受值的范围,或指定数据应满足的条件定数据应满足的条件实 体 完 整实 体 完 整性性P R I M A R Y KEY指定主码,确保主码值不重复,并不允许主指定主码,确保主码值不重复,并不允许主码为空值码为空值UNIQUE指出数据应具有惟一值,防止出现冗余指出数据应具

24、有惟一值,防止出现冗余参 照 完 整参 照 完 整性性F O R E I G N KEY定义外码、被参照表和其主码定义外码、被参照表和其主码(1)声明数据完整性。声明数据完整性。通过在定义表时声明数据完整性。包括各种约束、缺省和通过在定义表时声明数据完整性。包括各种约束、缺省和规则。规则。(2)过程数据完整性。过程数据完整性。编写触发器和存储过程来实现。编写触发器和存储过程来实现。7.3 7.3 数据库的并发控制数据库的并发控制事务是用户定义的一个数据库操作序列,是一个完整的事务是用户定义的一个数据库操作序列,是一个完整的工作单元。工作单元。一个事务可以是一条或一组一个事务可以是一条或一组SQ

25、LSQL语句、或整个应用程序。语句、或整个应用程序。数据库是可供多个用户共享的信息资源,允许多个用数据库是可供多个用户共享的信息资源,允许多个用户同时使用的数据库系统为户同时使用的数据库系统为多用户数据库系统多用户数据库系统。数据库的数据库的并发控制并发控制就是控制数据库,防止多用户就是控制数据库,防止多用户并发并发存取同一数据时存取同一数据时造成的数据错误,保证数据库的造成的数据错误,保证数据库的一致性一致性。7.3.1 事务及并发控制的基本概念事务及并发控制的基本概念1.事务的概念事务的概念事务是一个用户定义的完整的工作单元,一个事务事务是一个用户定义的完整的工作单元,一个事务内的所有语句

26、被作为内的所有语句被作为整体执行整体执行,要么全部执行,要么全,要么全部执行,要么全部不执行,是部不执行,是不可分割的工作单位不可分割的工作单位。例例1 1:一个交付业务活动:账户:一个交付业务活动:账户A A支付给账户支付给账户B B若干元若干元钱钱(假设为假设为N N元元)。这个支付操作包含两个动作:。这个支付操作包含两个动作:第一个:账户第一个:账户A A一一N N第二个:账户第二个:账户B B十十N N账户账户A A支付给账户支付给账户B B若干元钱若干元钱(假设为假设为N N元元),如果在第,如果在第一个动作完成之后,在第二个动作还没有完成时,系统突一个动作完成之后,在第二个动作还没

27、有完成时,系统突然停电了,那么这个支付活动实际上是不成功的。这时正然停电了,那么这个支付活动实际上是不成功的。这时正确状态应该是能够确状态应该是能够撤消掉第撤消掉第个动作个动作,即回到交付活动开,即回到交付活动开始前的状态。始前的状态。(事务是由系统自动维护的。)(事务是由系统自动维护的。)BEGIN TRANSACTION:表示事务的开始。:表示事务的开始。COMMIT:表示事务的提交,即将事务中所有对数据:表示事务的提交,即将事务中所有对数据的更新写回到磁盘上的物理数据库中。的更新写回到磁盘上的物理数据库中。ROLLBACK:表示事务的回滚,即事务运行的过程:表示事务的回滚,即事务运行的过

28、程中发生了某种故障,事务不能继续执行,系统将事务中中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有对数据库的所有已完成的操作已完成的操作全部撤消,回滚到事务开全部撤消,回滚到事务开始时的状态。始时的状态。在在SQL语言中,定义事务的语句有三条:语言中,定义事务的语句有三条:事务的特性事务的特性当事务进行到中间出现异常时,系统会自动地撤消事务当事务进行到中间出现异常时,系统会自动地撤消事务中已完成的部分,从而保证数据库中的数据总是处于正确中已完成的部分,从而保证数据库中的数据总是处于正确的状态。的状态。事务作为一个完整的操作单元,具有如下特性:事务作为一个完整的操作单元,具有如下特

29、性:1原子性:原子性:事务是数据库的逻辑工作单位,事务中的操事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。作要么都做,要么都不做。2一致性:一致性:事务执行的结果必须是使数据库从一个一致事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。性状态变到另一个一致性状态。3隔离性:隔离性:一个事务的执行不能受其他事务的干扰。在一个事务的执行不能受其他事务的干扰。在多用户的并发情况下,保证数据库中的数据总是正确的。多用户的并发情况下,保证数据库中的数据总是正确的。4永久性永久性:事务一旦结束,则其对数据库中数据的影响:事务一旦结束,则其对数据库中数据的影响就是永久的。就是

30、永久的。例如用事务完成如下操作:在例如用事务完成如下操作:在S表中添加一条学生表中添加一条学生记录,然后将这个学生的修课情况插入到记录,然后将这个学生的修课情况插入到SC表中。表中。BEGIN TRANSACTION insert into s(s#,sn,sex)values(983103,吴天玲吴天玲,女女)insert into sc(s#,c#,score)values(983103,A001,null)COMMIT执行完此事务后查看一下执行完此事务后查看一下s s表和表和sc sc表中的数据,我们发表中的数据,我们发现新插入的数据均在数据库中。现新插入的数据均在数据库中。如果我们将此

31、事务最后的如果我们将此事务最后的COMMITCOMMIT改为改为ROLLBACKROLLBACK,s s表和表和sc sc表中的数据有什么变化?表中的数据有什么变化?2.2.事务并发操作可能产生的数据不一致性事务并发操作可能产生的数据不一致性 时间时间甲事务甲事务数据库中数据库中R R的值的值乙事务乙事务t t0 010001000t t1 1读读R R10001000t t2 2 读读R R10001000t t3 3R RR R200200t t4 4R RR R300300t t5 5UPDATEUPDATER Rt t6 6800800UPDATEUPDATER Rt t7 77007

32、00(1)丢失更新)丢失更新当两个事务当两个事务T1和和T2读入同一数据,并发执行修改操作时,读入同一数据,并发执行修改操作时,T2把把T1或或T1把把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。时间时间甲事务甲事务 T1T1数据库中数据库中R R的值的值乙事务乙事务 T2T2t t0 010001000t t1 1读读R R10001000t t2 2 R RR R200200t t3 3UPDATEUPDATER Rt t4 4800800读读R R800800t t5 5RollbackRollbackt

33、 t6 610001000(2)脏读)脏读事务事务T2读取了读取了T1更新后的数据,其后更新后的数据,其后T1由于某种原因撤消修由于某种原因撤消修改,数据改,数据R恢复原值,导致恢复原值,导致T2得到的数据与数据库的内容不一致。得到的数据与数据库的内容不一致。(3)不可重读)不可重读时间时间甲事务甲事务 T1T1数据库中数据库中R R的值的值乙事务乙事务 T2T2t t0 010001000t t1 1读读R R(10001000)t t2 2 读读R R10001000t t3 3R RR R300300t t4 4updateupdate R Rt t5 5700700t t6 6读读R

34、R同一数据库中往往有多个事务并发执行,如果不进同一数据库中往往有多个事务并发执行,如果不进行行并发控制并发控制,就会产生不一致性。,就会产生不一致性。事务事务T1读取数据读取数据R后,后,T2读取并且更新了读取并且更新了R,当,当T1再次读取再次读取R时,得时,得到的两次读取值不一致,这种现象为不可重读。到的两次读取值不一致,这种现象为不可重读。7.3.2 封锁及封锁协议一个环节是一个环节是申请加锁,申请加锁,即事务在操作前要对它将使用的即事务在操作前要对它将使用的数据提出加锁请求;数据提出加锁请求;第二个环节是第二个环节是获得锁获得锁,即当条件成熟时,系统允许事务,即当条件成熟时,系统允许事

35、务对数据加锁,从而事务获得数据的控制权;对数据加锁,从而事务获得数据的控制权;第三个环节是第三个环节是释放锁释放锁,即完成操作后事务放弃,即完成操作后事务放弃数据的控数据的控制权。制权。封锁是使事务对它封锁是使事务对它要操作的数据有一定的控制能力要操作的数据有一定的控制能力。封锁具有封锁具有3个环节个环节:并发控制:就是要用正确的方式调度并发操作,避免造并发控制:就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。并发控制的主要方法是采用封锁机制务的干扰。并发控制的主要方法是采用封锁机制(Locking

36、Locking)。)。1.锁的类型(1)排它锁排它锁(Exclusive Locks,简称,简称X锁)。锁)。排它锁也称为独占锁或写锁。一旦事务排它锁也称为独占锁或写锁。一旦事务T对数据对象对数据对象A加上排它锁(加上排它锁(X锁),则只允许锁),则只允许T读取和修改读取和修改A,其他任,其他任何事务既不能读取和修改何事务既不能读取和修改A,也不能再对,也不能再对A加任何类型的加任何类型的锁,直到锁,直到T释放释放A上的锁为止。上的锁为止。(2)共享锁共享锁(Share Locks,简称,简称S锁)。锁)。共享锁又称共享锁又称读锁读锁。如果事务。如果事务T对数据对象对数据对象A加上共享加上共享

37、锁(锁(S锁),其他事务只能再对锁),其他事务只能再对A加加S锁,不能加锁,不能加X锁锁,直,直到事务到事务T释放释放A上的上的S锁为止。锁为止。2.封锁协议(1)一级封锁协议。一级封锁协议。事务事务T T在修改数据之前必须先对其加在修改数据之前必须先对其加X X锁,直到事务锁,直到事务结束才释放。结束才释放。(2)二级封锁协议。二级封锁协议。事务事务T T对要修改数据必须先加对要修改数据必须先加X X锁,直到事务结束才锁,直到事务结束才释放释放X X锁;对要读取的数据必须先加锁;对要读取的数据必须先加S S锁,锁,读完后即可读完后即可释放释放S S锁锁。(3)三级封锁协议。三级封锁协议。事务

38、事务T T在读取数据之前必须先对其加在读取数据之前必须先对其加S S锁,在要修改锁,在要修改数据之前必须先对其加数据之前必须先对其加X X锁,直到锁,直到事务结束后事务结束后才释放所才释放所有锁。有锁。在对数据对象加锁时,还需要约定一些规则,在对数据对象加锁时,还需要约定一些规则,如何时申请如何时申请X锁或锁或S锁、持锁时间、何时释放锁、持锁时间、何时释放等。等。事务并发操作可能产生的数据不一致问题事务并发操作可能产生的数据不一致问题 T1T2T1T2T1T21)读读A=20 1)读读A=50 读读B=100求和求和=150 1)读读C=100CC*2写回写回C 2)读读A=203)AA-1写

39、回写回A=19 2)读读B=100BB*2写回写回B=2002)读读C=2004)AA-1写回写回A=19(A少减一少减一次次)3)读读A=50 读读B=200 和和=250(验算不对验算不对)3)ROLLBACKC恢复为恢复为100(错误的错误的C值已读值已读出出)(a)丢失数据 (b)不可重复读 (c)读“脏”数据 T1T2T1T2T1T21)Xlock A获得获得 1)Slock A Slock B 读读A=50读读B=100AB=150 1)Xlock C 读读C=100CC*2写回写回C=200 2)读读A=20 Xlock A等待等待3)AA-1 写回写回A=19 Commit U

40、nlock A等待等待等待等待等待等待 2)Xlock B等待等待等待等待2)Slock C等待等待等待等待3)读读A=50 读读B=100 AB=150 Commit Unlock A Unlock B等待等待 3)ROLLBACK(C恢复为恢复为100)Unlock C 等待等待等待等待 4)获得获得Xlock A读读A=19AA-1写回写回A=18CommitUnlock 4)获得获得Xlock读读B=100BB*2写回写回B=200CommitUnlock B4)获得获得Slock C读读C=100Commit CUnlock C(a)没有丢失修改 (b)可重复读 (c)不读“脏”数据

41、 用封锁机制解决三种数据不一致性用封锁机制解决三种数据不一致性的例子的例子 X锁S锁一致性保证 操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读“脏”数据可重复读一 级 协议 二 级 协议 三 级 协议 7.3.3 封锁出现的问题及解决方法封锁出现的问题及解决方法活锁和死锁活锁和死锁活锁。活锁。如:事务如:事务T1T1封锁了数据封锁了数据R R,T2T2事务又请求封锁事务又请求封锁R R,于是,于是T2T2等待。等待。T3T3也请求封锁也请求封锁R R,当,当T1T1释放了释放了R R上的锁后,系统上的锁后,系统首先批准了首先批准了T3T3的请求,的请求,T2T2仍然等待。然后仍

42、然等待。然后T4T4又请求封锁又请求封锁R R,当当T3T3释放了释放了R R上的锁后,系统又批准了上的锁后,系统又批准了T4T4的请求的请求,T2T2可能永远等待。可能永远等待。在多个事务请求对同一数据封锁时,在多个事务请求对同一数据封锁时,总是使某一用总是使某一用户等待户等待的情况称为活锁。的情况称为活锁。解决方法:采用先来先服务的方法,即对要求封锁数据的事务排队,使解决方法:采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。前面的事务先获得数据的封锁权。(2)死锁死锁如果事务如果事务T1T1和和T2T2都需要数据都需要数据R1R1和和R2R2,T1T1封锁

43、了数据封锁了数据R1R1,T2T2封锁了数据封锁了数据R2R2;然后;然后T1T1又请求封锁又请求封锁R2R2,T2T2请求封锁请求封锁R1R1,事务事务T1T1、T2T2都等待对方释放都等待对方释放R1R1或或R2R2上的锁,但由于上的锁,但由于T1T1、T2T2都没有获得必要的数据,所以它们不会结束,只能继续等都没有获得必要的数据,所以它们不会结束,只能继续等待。待。多事务多事务交错等待的僵持局面交错等待的僵持局面称为死锁。称为死锁。解决死锁有两类方法:一是采用一定措施来预防死锁的发解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定手段定期诊断系统中有无死锁,若有则生;二是

44、采用一定手段定期诊断系统中有无死锁,若有则解除之。(撤消事务)解除之。(撤消事务)预防死锁的方法:预防死锁的方法:1)1)一次封锁法:要求每个事务必须一次将所有要使用的数据一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。全部加锁,否则该事务不能继续执行。2)2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。务都按这个顺序实行封锁。7.4 数据库恢复技术7.4.1 故障的种类1.事务内部的故障事务内部的故障事务事务未运行到正常终止点前被终止未运行到正常终止点前被终止的情况。的情况。事

45、务内部的故障有的是可以通过事务程序本身发现的,事务内部的故障有的是可以通过事务程序本身发现的,但是更多的则是非预期的,它们不能由事务处理程序处理。但是更多的则是非预期的,它们不能由事务处理程序处理。例如运算溢出、并发事务发生死锁而被选中撤消该事务、违例如运算溢出、并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。反了某些完整性限制等。2.系统故障系统故障系统故障是指造成系统停止运转的任何事件,从而使得系统故障是指造成系统停止运转的任何事件,从而使得系统必须重新启动。系统必须重新启动。3.介质故障介质故障介质故障指外存故障,例如磁盘损坏、磁头碰撞,瞬时介质故障指外存故障,例如磁盘损坏、

46、磁头碰撞,瞬时磁场干扰等。磁场干扰等。4.计算机病毒计算机病毒计算机病毒是一种人为的故障或破坏。计算机病毒是一种人为的故障或破坏。5.用户操作错误用户操作错误由于用户有意或无意的操作也可能删除数据库中的有用由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。的数据或加入错误的数据,这同样会造成一些潜在的故障。7.4.2数据库恢复策略数据库恢复策略1、事务故障的恢复、事务故障的恢复 利用日志文件撤消(利用日志文件撤消(undo)此事务数据库进行的修改。)此事务数据库进行的修改。事务故障的恢复一般是由系统自动完成的。事务故障的恢复一般是由系统自动完成

47、的。2、系统故障的恢复、系统故障的恢复 系统故障的恢复也是利用日志文件:撤消(系统故障的恢复也是利用日志文件:撤消(undo)未)未完成的事务和重做(完成的事务和重做(REDO)已完成的事务。系统故障的)已完成的事务。系统故障的恢复是由系统在重新启动时自动完成的。恢复是由系统在重新启动时自动完成的。3、介质故障的恢复、介质故障的恢复 重装数据库的后备副本,并重做已完成的事务。重装数据库的后备副本,并重做已完成的事务。7.4.3 数据恢复的实现技术1.数据转储数据转储是数据库恢复中采用的基本技术,即是数据库恢复中采用的基本技术,即DBA定期地将定期地将整个数据库复制到磁带或另一个磁盘上保存起来的

48、过程。整个数据库复制到磁带或另一个磁盘上保存起来的过程。这种备用的数据文本称为后备副本。这种备用的数据文本称为后备副本。数据转储有以下几类:数据转储有以下几类:(1)静态转储和动态转储静态转储和动态转储数据库转储过程中,是否允许其他事务对数据库进数据库转储过程中,是否允许其他事务对数据库进行存取或修改操作。行存取或修改操作。静态转储优点:能得到数据一致性的副本。缺点:降静态转储优点:能得到数据一致性的副本。缺点:降低了数据库的可用性。低了数据库的可用性。动态转储优点:不影响事务的运行,但副本上的数据动态转储优点:不影响事务的运行,但副本上的数据可能是过时的数据。可能是过时的数据。(2)海量转储

49、和增量转储。海量转储和增量转储。海量转储是每次转储海量转储是每次转储全部数据库全部数据库。(对数据量大和。(对数据量大和更新频率高的数据库,不适合频繁地进行。)更新频率高的数据库,不适合频繁地进行。)增量转储是每次只转储增量转储是每次只转储上一次更新过的数据上一次更新过的数据。(适。(适合对数据量较大,且事务处理频繁地合对数据量较大,且事务处理频繁地DBS。)。)2.登记日志文件登记日志文件(Logging)日志文件是用来记录对数据库的更新操作的文件。日志文件是用来记录对数据库的更新操作的文件。(1)日志文件的作用。日志文件的作用。日志文件的主要用于日志文件的主要用于数据库恢复数据库恢复。当数

50、据库文件毁坏后,可重新装入后援副本把数据库当数据库文件毁坏后,可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,再利用日志文件,把恢复到转储结束时刻的正确状态,再利用日志文件,把已完成的事务进行重做处理。对未完成的事务做撤消处已完成的事务进行重做处理。对未完成的事务做撤消处理。理。(2)登记日志文件)登记日志文件为保证数据库的可恢复性,登记日志文件时必须遵为保证数据库的可恢复性,登记日志文件时必须遵守两条原则:一是登记的次序严格按事务执行的时间次守两条原则:一是登记的次序严格按事务执行的时间次序,二是必须先写日志文件,后写数据库。序,二是必须先写日志文件,后写数据库。7.4.3 SQL

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第7章数据库的安全保护课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|