版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-5-61第第7 7章章 数据库的安全与保护数据库的安全与保护 主要内容主要内容v数据库的安全控制数据库的安全控制 v数据库的恢复技术数据库的恢复技术 v数据库的并发控制数据库的并发控制 vSQL Server 2005数据库安全与保护技术数据库安全与保护技术 2022-5-62数据库的安全与保护数据库的安全与保护数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、数据库的安全性是指保护数据库,以防止非法使用所造成数据的泄露、更改或破坏。更改或破坏。 数据库的安全措施是一级一级层层设置的数据库的安全措施是一级一级层层设置的 。其安全模型为:。其安全模型为:用户用户DBMSOS
2、DB用户标识和鉴别用户标识和鉴别 数据库安全保护数据库安全保护 操作系统安全保护操作系统安全保护 数据密码存储数据密码存储2022-5-637.1 数据库的安全控制数据库的安全控制 主要内容主要内容z用户标识和鉴别用户标识和鉴别z存取控制存取控制 2022-5-64用户标识和鉴别用户标识和鉴别 (1)用户标识和鉴别(用户标识和鉴别(Identification & Authentication)是系统提供是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通
3、过鉴己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。定后才提供机器使用权。 1. 用户标识用户标识 用一个用户名(用一个用户名(User Name)或者用户标识号()或者用户标识号(User IDentifica-tion,UID)来标明用户身份。系统内部记录着所有合法用户的标识,)来标明用户身份。系统内部记录着所有合法用户的标识,系统鉴别此用户是否是合法用户,若是,则可以进入下一步的核实;若系统鉴别此用户是否是合法用户,若是,则可以进入下一步的核实;若不是,则不能使用该系统。不是,则不能使用该系统。2022-5-652. 口令口令 为了进一步核实用户,系统
4、常常要求用户输入口令(为了进一步核实用户,系统常常要求用户输入口令(Password)。)。 用户名与口令容易被人窃取,因此还可以用更复杂的方法。用户名与口令容易被人窃取,因此还可以用更复杂的方法。例如每个用户都预先约定好一个计算过程或者函数,鉴别用户身份时,例如每个用户都预先约定好一个计算过程或者函数,鉴别用户身份时,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据用户计算结果是否正确进一步鉴定用户身份。一般用户计算,系统根据用户计算结果是否正确进一步鉴定用户身份。一般用户约定比较简单的计算过程或函数,
5、以便计算起来方便。例如,让用户记约定比较简单的计算过程或函数,以便计算起来方便。例如,让用户记住函数住函数5x+3y+6,当鉴别用户身份时,系统随机告诉用户,当鉴别用户身份时,系统随机告诉用户x=2,y=5,如果用户回答如果用户回答31,那就证实了用户身份。,那就证实了用户身份。还可以使用磁卡或还可以使用磁卡或IC卡,但系统必须有阅读磁卡或卡,但系统必须有阅读磁卡或IC卡的装置。还卡的装置。还可以使用签名、指纹、声波纹等用户特征来鉴别用户身份,可以使用签名、指纹、声波纹等用户特征来鉴别用户身份, 用户标识和鉴别用户标识和鉴别 (2)2022-5-66存取控制存取控制 (1)数据库安全性所关心的
6、主要是数据库安全性所关心的主要是DBMS的存取控制机制。的存取控制机制。1. 存取控制机制存取控制机制 用户权限定义和合法权限检查机制一起组成了用户权限定义和合法权限检查机制一起组成了DBMS的安全子系统:的安全子系统: 定义用户权限定义用户权限,用户使用数据库的方式称为权限。用户权限主要,用户使用数据库的方式称为权限。用户权限主要有下列几种:查询(有下列几种:查询(Select)、插入()、插入(Insert)、修改()、修改(Update)、删)、删除(除(Delete)等。)等。某个用户应该具有何种权限是个管理问题和政策问题而不是技术问题。某个用户应该具有何种权限是个管理问题和政策问题而
7、不是技术问题。DBMS的功能是保证这些权限的执行。的功能是保证这些权限的执行。DBMS提供适当的语言来定义用户权限,这些定义经过编译后存放在提供适当的语言来定义用户权限,这些定义经过编译后存放在数据字典中,被称做数据字典中,被称做安全规则或授权规则安全规则或授权规则。 合法权限检查合法权限检查。每当用户发出存取数据库的操作请求后(请求一。每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),般应包括操作类型、操作对象和操作用户等信息),DBMS查找数据字查找数据字典,根据安全规则进行合法权限检查。典,根据安全规则进行合法权限检查。 2022-5-67存取控制存
8、取控制 (2)2. 自主存取控制方法自主存取控制方法当前大型的当前大型的DBMS一般都支持自主存取控制(一般都支持自主存取控制(Discretionary Access Control,简记为,简记为DAC),如),如Oracle系统。在自主存取控制中,系统。在自主存取控制中,用户具有不同的存取权限,不同的用户对同一对象也有不同的权限,而用户具有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。且用户还可以将其拥有的存取权限转授给其他用户。2022-5-68存取控制存取控制 (3) 授予权限语句授予权限语句GRANTGRANT语句的一般格式为语
9、句的一般格式为GRANT , ON , TO , WITH GRANT OPTION;其语义为:其语义为:将对指定操作对象的指定操作权限授予指定用户。发出该将对指定操作对象的指定操作权限授予指定用户。发出该GRANT语句的可以是语句的可以是DBA,也可以是该数据库的创建者,也可以是已经,也可以是该数据库的创建者,也可以是已经拥有该权限的用户。接受权限的用户可以是一个或多个具体用户,也可拥有该权限的用户。接受权限的用户可以是一个或多个具体用户,也可以是以是PUBLIC,即全体用户。,即全体用户。如果指定了如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还子句,则获得某种权限
10、的用户还可以把这种权限授予其他的用户。可以把这种权限授予其他的用户。 不允许循环授权不允许循环授权 :U1U2U3U42022-5-69存取控制存取控制 (4)例例7.1 把查询把查询S表的权限授给用户表的权限授给用户U1。 GRANT SELECT ON TABLE S TO U1; 例例7.2 把对把对S表和表和C表的全部操作权限授予用户表的全部操作权限授予用户U2和和U3。 GRANT ALL PRIVILEGES ON TABLE S,C TO U2,U3;例例7.3 把对把对SC表的查询权限授予所有用户。表的查询权限授予所有用户。 GRANT SELECT ON TABLE SC T
11、O PUBLIC; 例例7.4 把查询把查询S表和修改学生学号的权限授给用户表和修改学生学号的权限授给用户U4。 GRANT UPDATE(SNO),SELECT ON TABLE S TO U4;2022-5-610存取控制存取控制 (5)例例7.5 把对把对SC表的表的INSERT权限授予权限授予U5用户,并允许将此权限再授予其用户,并允许将此权限再授予其他用户。他用户。 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION; 执行此执行此SQL语句后,语句后,U5不仅拥有了对表不仅拥有了对表SC的的INSERT权限,还可以传播权限,还可以传播此
12、权限,即由此权限,即由U5用户转发上述用户转发上述GRANT命令给其他用户。例如命令给其他用户。例如U5可以将此权可以将此权限授予限授予U6:例例7.6 GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION; 同样,同样,U6还可以将此权限授予还可以将此权限授予U7:例例7.7 GRANT INSERT ON TABLE SC TO U7; /* 因为因为U6未给未给U7传播的权限,因此传播的权限,因此U7不能再传播此权限。不能再传播此权限。*/ 2022-5-611存取控制存取控制 (6)授权用户名授权用户名 被授权用户名被授权用户名 数据库对象名
13、数据库对象名 允许的操作类型允许的操作类型 能否转授权能否转授权 DBA Ul 关系关系S SELECT 不能不能 DBA U2 关系关系S ALL 不能不能 DBA U2 关系关系C ALL 不能不能 DBA U3 关系关系S ALL 不能不能 DBA U3 关系关系C ALL 不能不能 DBA PUBLIC 关系关系SC SELECT 不能不能 DBA U4 关系关系S SELECT 不能不能 DBA U4 属性列属性列S.SNO UPDATE 不能不能 DBA U5 关系关系SC INSERT 能能 U5 U6 关系关系SC INSERT 能能 U6 U7 关系关系SC INSERT 不
14、能不能 执行了例执行了例7.1到例到例7.7的语句后得到如下图的教务管理数据库中的语句后得到如下图的教务管理数据库中的用户权限定义。的用户权限定义。2022-5-612存取控制存取控制 (7) 收回权限语句收回权限语句REVOKE授予的权限可以由授予的权限可以由DBA或其他授权者用或其他授权者用REVOKE语句收回,一般格式语句收回,一般格式为:为: REVOKE , ON , FROM , CASCADE | RESTRICT;例例7.8 把用户把用户U4修改学生学号的权限收回。修改学生学号的权限收回。 REVOKE UPDATE(SNO) ON TABLE S FROM U4;例例7.9
15、收回所有用户对表收回所有用户对表SC的查询权限。的查询权限。 REVOKE SELECT ON TABLE SC FROM PUBLIC;2022-5-613存取控制存取控制 (8)例例7.9 收回所有用户对表收回所有用户对表SC的查询权限。的查询权限。 REVOKE SELECT ON TABLE SC FROM PUBLIC;例例7.l0 把用户把用户U5对对SC表的表的INSERT权限收回。权限收回。 REVOKE INSERT ON TABLE SC FROM U5 CASCADE;n用户对自己建立的基本表和视图拥有全部的操作权限,并且可以用用户对自己建立的基本表和视图拥有全部的操作权
16、限,并且可以用GRANT语句把其中某些权限授予其他用户。被授权的用户如果有语句把其中某些权限授予其他用户。被授权的用户如果有“继续继续授权授权”的许可,还可以把获得的权限再授予其他用户。的许可,还可以把获得的权限再授予其他用户。n所有授予出去的权限在必要时又都可以用所有授予出去的权限在必要时又都可以用REVOKE语句收回。语句收回。2022-5-614存取控制存取控制 (9) 创建数据库模式的权限创建数据库模式的权限对数据库模式的授权则由对数据库模式的授权则由DBA在创建用户时实现。在创建用户时实现。 CREATE USER语句一般格式如下:语句一般格式如下: CREATE USER WITH
17、DBA | RESOURCE | CONNECT;只有系统的超级用户才有权创建一个新的数据库用户。只有系统的超级用户才有权创建一个新的数据库用户。新创建的数据库用户有三种权限:新创建的数据库用户有三种权限:CONNECT、RESOURCE和和DBA。CREATE USER命令中如果没有指定创建的新用户的权限,默认该用命令中如果没有指定创建的新用户的权限,默认该用户拥有户拥有CONNECT权限。拥有权限。拥有CONNECT权限的用户不能创建新用户,不权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。能创建模式,也不能创建基本表,只能登录数据库。拥有拥有RESOURCE权限
18、的用户能创建基本表和视图,成为所创建对象权限的用户能创建基本表和视图,成为所创建对象的属主。但是不能创建数据库,不能创建新的用户。的属主。但是不能创建数据库,不能创建新的用户。拥有拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建权限的用户是系统中的超级用户,可以创建新的用户、创建数据库、创建基本表和视图等;数据库、创建基本表和视图等;DBA拥有对所有数据库对象的存取权限,拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。还可以把这些权限授予一般用户。2022-5-615存取控制存取控制 (10) 数据库角色数据库角色 数据库角色是被命名的一组与数据库操作相关的权限,角
19、色是权限数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。的集合。 在在SQL中首先用中首先用CREATE ROLE语句创建角色,然后用语句创建角色,然后用GRANT语句给角色授权。语句给角色授权。 角色的创建角色的创建创建角色的创建角色的SQL语句格式是语句格式是 CREATE ROLE 刚刚创建的角色是空的,没有任何内容。可以用刚刚创建的角色是空的,没有任何内容。可以用GRANT为角色授权。为角色授权。 给角色授权给角色授权 GRANT , ON 对象名对象名 TO , DBA和用户可以利用和用户可以利用GRANT语句将权限授予某一个或几个角色。语句将权限授予某一个或几个角
20、色。 将一个角色授予其他的角色或用户将一个角色授予其他的角色或用户 GRANT , TO , WITH ADMIN OPTION该语句把角色授予某用户,或授予另一个角色。该语句把角色授予某用户,或授予另一个角色。2022-5-616存取控制存取控制 (11) 角色权限的收回角色权限的收回 REVOKE , ON FROM , 用户可以回收角色的权限,从而修改角色拥有的权限。用户可以回收角色的权限,从而修改角色拥有的权限。 REVOKE动作的执行者或者是角色的创建者,或者是拥有在这个动作的执行者或者是角色的创建者,或者是拥有在这个(些)角色上的(些)角色上的ADMIN OPTION。2022-5
21、-617存取控制存取控制 (12)例例7.11 通过角色来实现将一组权限授予一个用户。步骤如下:通过角色来实现将一组权限授予一个用户。步骤如下: 首先创建一个角色首先创建一个角色R1: CREATE ROLE R1; 然后使用然后使用GRANT语句,使角色语句,使角色R1拥有拥有S表的表的SELECT、UPDATE、INSERT权限:权限: GRANT SELECT,UPDATE,INSERT ON TABLE S TO R1;再将这个角色授予王平,张明,赵玲。使他们具有角色再将这个角色授予王平,张明,赵玲。使他们具有角色Rl所包含的全所包含的全部权限:部权限: GRANT R1 TO 王平王
22、平,张明张明,赵玲赵玲;我们也可以一次性的通过我们也可以一次性的通过R1来回收王平的这来回收王平的这3个权限:个权限: REVOKE R1 FROM王平王平; 2022-5-618存取控制存取控制 (13)3. 强制存取控制方法强制存取控制方法当前有些当前有些DBMS同时还支持强制存取控制(同时还支持强制存取控制(Mandatory Access Control,简记,简记MAC)。在强制存取控制中,每一个数据库对象被标以)。在强制存取控制中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,
23、只有具有合法许可证的用户才可以存取。对象,只有具有合法许可证的用户才可以存取。n所谓所谓MAC是指系统为保证更高程度的安全性所采取的强制存取检查手是指系统为保证更高程度的安全性所采取的强制存取检查手段。它不是用户能直接感知或进行控制的。段。它不是用户能直接感知或进行控制的。MAC适用于那些对数据有严适用于那些对数据有严格而固定密级分类的部门,例如军事部门或政府部门。格而固定密级分类的部门,例如军事部门或政府部门。n在在MAC中,中,DBMS所管理的全部实体被分为主体和客体两大类。所管理的全部实体被分为主体和客体两大类。 主体主体是系统中的活动实体,既包括是系统中的活动实体,既包括DBMS所管理
24、的实际用户,也所管理的实际用户,也包括代表用户的各进程。包括代表用户的各进程。客体客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,索引、视图等。对于主体和客体,DBMS为它们每个实例(值)指为它们每个实例(值)指派一个敏感度标记(派一个敏感度标记(Label)。)。 2022-5-619存取控制存取控制 (14)敏感度标记被分成若干级别:敏感度标记被分成若干级别:绝密(绝密(Top Secret););机密(机密(Secret););可信(可信(Confidential););公开(公开(Public
25、)等。)等。主体的敏感度标记称为主体的敏感度标记称为许可证级别许可证级别,客体的敏感度标记称为,客体的敏感度标记称为密级密级(Classification Level)。MAC机制就是通过对比主体的机制就是通过对比主体的Label和客体和客体的的Label,最终确定主体是否能够存取客体。,最终确定主体是否能够存取客体。 当某一用户(或某一主体)以标记当某一用户(或某一主体)以标记label注册进入系统时,系统要求注册进入系统时,系统要求他对任何客体的存取必须遵循如下规则:他对任何客体的存取必须遵循如下规则: 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读仅当主体的许可证级别大于或等于
26、客体的密级时,该主体才能读取相应的客体;取相应的客体; 仅当主体的许可证级别等于客体的密级时,该主体才能写相应的仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。客体。2022-5-620存取控制存取控制 (15)在某些系统中,第在某些系统中,第条规则与这里的规则有些差别。条规则与这里的规则有些差别。这些系统规定:这些系统规定:仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体,即用户可以为写入的数据对象赋予高于自己的许可证级别的密级。客体,即用户可以为写入的数据对象赋予高于自己的许可证级别的密级。这样一
27、旦数据被写入,该用户自己也不能再读该数据对象了。这两种规这样一旦数据被写入,该用户自己也不能再读该数据对象了。这两种规则的共同点在于它们均禁止了拥有高许可证级别的主体更新低密级的数则的共同点在于它们均禁止了拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。据对象,从而防止了敏感数据的泄漏。n强制存取控制(强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分隔的整体,只有符合密级标记要求的用户制,标记与数据是一个不可分隔的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。才
28、可以操纵数据,从而提供了更高级别的安全性。n较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现实现MAC时要首先实现时要首先实现DAC,即,即DAC与与MAC共同构成共同构成DBMS的安全机制。的安全机制。系统首先进行系统首先进行DAC检查,对通过检查,对通过DAC检查的允许存取的数据库对象再由检查的允许存取的数据库对象再由系统自动进行系统自动进行MAC检查,只有通过检查,只有通过MAC检查的数据库对象方可进行存取。检查的数据库对象方可进行存取。2022-5-6217.2 数据库的恢复技术数据库的恢复技术主要内容主要内容
29、n事务事务n数据库的恢复数据库的恢复n数据库镜像数据库镜像2022-5-622事务事务(1)1. 事务的定义事务的定义从用户观点看,从用户观点看,对数据库的某些操作应是一个整体,也就是一个独立对数据库的某些操作应是一个整体,也就是一个独立的工作单元,不能分割的工作单元,不能分割。譬如,客户认为电子资金转账(从账号。譬如,客户认为电子资金转账(从账号A转一笔转一笔款子到账号款子到账号B)是一个独立的操作,而在)是一个独立的操作,而在DBS中这是由几个操作组成的。中这是由几个操作组成的。显然,这些操作要么全都发生,要么由于出错(可能账号显然,这些操作要么全都发生,要么由于出错(可能账号A已透支)而
30、全已透支)而全不发生。保证这一点非常重要,我们决不允许发生下面的事情:在账号不发生。保证这一点非常重要,我们决不允许发生下面的事情:在账号A透支情况下继续转账;或者从账号透支情况下继续转账;或者从账号A转出了一笔钱,而不知去向未能转入转出了一笔钱,而不知去向未能转入账号账号B中。中。定义定义7.1 事务(事务(Transaction)是用户定义的一个数据库操作序列,是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单元。这些操作要么全做要么全不做,是一个不可分割的工作单元。一个事务由应用程序中的一组操作序列组成,在关系型数据库中,它一个事务由应用程序中的一组操作序
31、列组成,在关系型数据库中,它可以是一条可以是一条SQL语句、一组语句、一组SQL语句或一个程序段。在程序中,事务以语句或一个程序段。在程序中,事务以BEGIN TRANSACTION语句开始,以语句开始,以COMMIT语句或语句或ROLLBACK语句语句结束。结束。2022-5-623事务事务(2)nCOMMIT语句是语句是“事务提交事务提交”语句,此时将该事务对数据库的所有语句,此时将该事务对数据库的所有更新交付实施(即写入磁盘),数据库进入一个新的一致性状态,同时更新交付实施(即写入磁盘),数据库进入一个新的一致性状态,同时该事务成功地结束。该事务成功地结束。nROLLBACK语句是语句是
32、“事务回退事务回退”语句,此时已发生错误,数据库可语句,此时已发生错误,数据库可能处在不一致的状态,系统将该事务对数据库已做的所有更新全部撤消,能处在不一致的状态,系统将该事务对数据库已做的所有更新全部撤消,把数据库恢复到该事务初始时的一致性状态,同时该事务不成功地结束。把数据库恢复到该事务初始时的一致性状态,同时该事务不成功地结束。 2022-5-624事务事务(3)2. 事务的性质事务的性质(ACID) 原子性(原子性(Atomicity)一个事务对数据库的所有操作,是一个不可分割的工作单元。这些操一个事务对数据库的所有操作,是一个不可分割的工作单元。这些操作要么全部执行,要么什么也不做(
33、就效果而言)。作要么全部执行,要么什么也不做(就效果而言)。 一致性(一致性(Consistency)一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。务的执行而遭受破坏。 隔离性(隔离性(Isolation)在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样,此时称事务达到了隔离性的要求。也就是在多个事务并发执行果一样,此时称事务达到了隔离性的要求。也就是在多个事务并发执行时,保证执行结果是正确的,如同单用户环境一样。时,保证执
34、行结果是正确的,如同单用户环境一样。 持久性(持久性(Durability)一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。即使以后系统发生故障,也应保留这个事务执行的痕迹。在数据库中。即使以后系统发生故障,也应保留这个事务执行的痕迹。2022-5-625事务事务(4)例例7.13 设银行数据库中有一转账事务设银行数据库中有一转账事务T,从账号,从账号A转一笔款子(转一笔款子($50)到账)到账号号B,其操作如下:,其操作如下: T: read(A); A:=A-50; write(A); read(B); B
35、:=B+50; write(B).(原子性)事务的六个操作是一个整体,不可分割,要么全做,要么全不(原子性)事务的六个操作是一个整体,不可分割,要么全做,要么全不做。做。 (一致性)在事务(一致性)在事务T执行结束后,要求数据库中执行结束后,要求数据库中A的值减的值减50,B的值增加的值增加50,也就是也就是A与与B的和不变,此时称数据库处于一致状态。的和不变,此时称数据库处于一致状态。(隔离性)多个事务并发执行时,相互之间应该互不干扰。譬如事务(隔离性)多个事务并发执行时,相互之间应该互不干扰。譬如事务T在在A的值减的值减50后,系统暂时处于不一致状态。后,系统暂时处于不一致状态。 (持久性
36、)一旦事务成功地完成执行,并且告知用户转账已经发生,系统(持久性)一旦事务成功地完成执行,并且告知用户转账已经发生,系统就必须保证以后任何故障都不会再引起与这次转账相关数据的丢失。就必须保证以后任何故障都不会再引起与这次转账相关数据的丢失。2022-5-626数据库的恢复数据库的恢复 (1) 数据库恢复数据库恢复是指通过技术手段,将保存在数据库中近期丢失的数据是指通过技术手段,将保存在数据库中近期丢失的数据进行抢救和恢复的技术。进行抢救和恢复的技术。1. 恢复的定义和原则恢复的定义和原则 恢复的定义恢复的定义DBMS的恢复管理子系统采取一系列措施保证在任何情况下保持事的恢复管理子系统采取一系列
37、措施保证在任何情况下保持事务的原子性和持久性,确保数据不丢失、不破坏。务的原子性和持久性,确保数据不丢失、不破坏。定义定义7.2 系统能把数据库从被破坏、不正确的状态、恢复到最近一系统能把数据库从被破坏、不正确的状态、恢复到最近一个正确的状态,个正确的状态,DBMS的这种能力称为数据库的可恢复性(的这种能力称为数据库的可恢复性(Recovery)。)。2022-5-627数据库的恢复数据库的恢复 (2) 恢复的基本原则恢复的基本原则 平时做好两件事:平时做好两件事:转储和建立日志。转储和建立日志。n周期性地(比如一天一次)对整个数据库进行拷贝,转储到另一周期性地(比如一天一次)对整个数据库进行
38、拷贝,转储到另一个磁盘或磁带一类存储介质中。个磁盘或磁带一类存储介质中。n建立日志数据库。记录事务的开始、结束标志,记录事务对数据建立日志数据库。记录事务的开始、结束标志,记录事务对数据库的每一次插入、删除和修改前后的值,写到库的每一次插入、删除和修改前后的值,写到“日志日志”库中,以便库中,以便有案可查。有案可查。 一旦发生数据库故障,分两种情况进行处理:一旦发生数据库故障,分两种情况进行处理:n如果数据库已被破坏,譬如磁头脱落、磁盘损坏等,这时数据库如果数据库已被破坏,譬如磁头脱落、磁盘损坏等,这时数据库已不能用了,就要装入最近一次拷贝的数据库备份到新的磁盘,然已不能用了,就要装入最近一次
39、拷贝的数据库备份到新的磁盘,然后利用日志库执行后利用日志库执行“重做重做”(REDO)处理,将这两个数据库状态)处理,将这两个数据库状态之间的所有更新重新做一遍。之间的所有更新重新做一遍。n如果数据库未被破坏,但某些数据不可靠,受到怀疑。例如程序如果数据库未被破坏,但某些数据不可靠,受到怀疑。例如程序在批处理修改数据库时异常中断。这时不必去拷贝存档的数据库。在批处理修改数据库时异常中断。这时不必去拷贝存档的数据库。只要通过日志库执行只要通过日志库执行“撤消撤消”(UNDO)处理,撤消所有不可靠的)处理,撤消所有不可靠的修改,把数据库恢复到正确的状态。修改,把数据库恢复到正确的状态。2022-5
40、-628数据库的恢复数据库的恢复 (3)2. 故障类型和恢复方法故障类型和恢复方法 事务故障事务故障n可以预期的事务故障,即在程序中可以预先估计到的错误,譬如可以预期的事务故障,即在程序中可以预先估计到的错误,譬如存款余额透支,商品库存量达到最低量等,此时继续取款或发货就存款余额透支,商品库存量达到最低量等,此时继续取款或发货就会出现问题。这种情况可以在事务的代码中加入判断和会出现问题。这种情况可以在事务的代码中加入判断和ROLLBACK语句。当事务执行到语句。当事务执行到ROLLBACK语句时,由系统对事务进行回退操语句时,由系统对事务进行回退操作,即执行作,即执行UNDO操作。操作。n非预
41、期的事务故障,即在程序中发生的未估计到的错误,譬如运非预期的事务故障,即在程序中发生的未估计到的错误,譬如运算溢出、数据错误、并发事务发生死锁而被选中撤消该事务等。此算溢出、数据错误、并发事务发生死锁而被选中撤消该事务等。此时由系统直接对该事务执行时由系统直接对该事务执行UNDO处理。处理。 2022-5-629数据库的恢复数据库的恢复 (4) 系统故障系统故障引起系统停止运转随之要求重新启动的事件称为引起系统停止运转随之要求重新启动的事件称为“系统故障系统故障”。例如。例如硬件故障、软件(硬件故障、软件(DBMS、OS或应用程序)错误或掉电等几种情况,都或应用程序)错误或掉电等几种情况,都称
42、为系统故障。称为系统故障。系统故障要影响正在运行的所有事务,并且主存内容丢失,但不破坏系统故障要影响正在运行的所有事务,并且主存内容丢失,但不破坏数据库。由于故障发生时正在运行的事务都非正常终止,从而造成数据数据库。由于故障发生时正在运行的事务都非正常终止,从而造成数据库中某些数据不正确。库中某些数据不正确。DBMS的恢复子系统必须在系统重新启动时,对的恢复子系统必须在系统重新启动时,对这些非正常终止的事务进行处理,把数据库恢复到正确的状态。这些非正常终止的事务进行处理,把数据库恢复到正确的状态。重新启动时,具体处理分两种情况考虑:重新启动时,具体处理分两种情况考虑:n对未完成事务作对未完成事
43、务作UNDO处理。处理。n对已提交事务但更新还留在缓冲区的事务进行对已提交事务但更新还留在缓冲区的事务进行REDO处理。处理。2022-5-630数据库的恢复数据库的恢复 (5) 介质故障介质故障在发生介质故障和遭受病毒破坏时,磁盘上的物理数据库遭到毁灭性在发生介质故障和遭受病毒破坏时,磁盘上的物理数据库遭到毁灭性破坏。此时恢复的过程如下:破坏。此时恢复的过程如下:n重装转储的后备副本到新的磁盘,使数据库恢复到转储时的一致重装转储的后备副本到新的磁盘,使数据库恢复到转储时的一致状态。状态。n在日志中找出转储以后所有已提交的事务。在日志中找出转储以后所有已提交的事务。n对这些已提交的事务进行对这
44、些已提交的事务进行REDO处理,将数据库恢复到故障前某处理,将数据库恢复到故障前某一时刻的一致状态。一时刻的一致状态。 2022-5-631数据库的恢复数据库的恢复 (6)3. 检查点技术检查点技术 检查点方法检查点方法DBMS定时设置检查点,在检查点时刻才真正做到把对定时设置检查点,在检查点时刻才真正做到把对DB的修改写的修改写到磁盘,并在日志文件写入一条检查点记录(以便恢复时使用)。当到磁盘,并在日志文件写入一条检查点记录(以便恢复时使用)。当DB需要恢复时,只有那些在检查点后面的还在执行的事务需要恢复。此方需要恢复时,只有那些在检查点后面的还在执行的事务需要恢复。此方法如图所示。法如图所
45、示。检查点检查点 故障点故障点 检查点检查点 tc tf 时间时间t事务事务T1T2T3T4T52022-5-632数据库的恢复数据库的恢复 (7)设设DBS运行时,在运行时,在tc时刻产生了一个检查点,而在下一个检查点来时刻产生了一个检查点,而在下一个检查点来临之前的临之前的tf时刻系统发生故障。我们把这一阶段运行的事务分成五类时刻系统发生故障。我们把这一阶段运行的事务分成五类(T1T5):): 事务事务T1不必恢复。因为它们的更新已在检查点不必恢复。因为它们的更新已在检查点tc时写到数据库中时写到数据库中去了。去了。 事务事务T2和事务和事务T4必须重做(必须重做(REDO)。因为它们结束
46、在下一个检)。因为它们结束在下一个检查点之前,它们对查点之前,它们对DB的修改仍在内存缓冲区,还未写到磁盘中。的修改仍在内存缓冲区,还未写到磁盘中。 事务事务T3和事务和事务T5必须撤消(必须撤消(UNDO)。因为它们还未做完,必)。因为它们还未做完,必须撤消事务已对须撤消事务已对DB作的修改。作的修改。2022-5-633数据库的恢复数据库的恢复 (8) 检查点方法的恢复算法检查点方法的恢复算法 根据日志文件建立事务重做队列和事务撤消队列。根据日志文件建立事务重做队列和事务撤消队列。此时,从头扫描日志文件(正向扫描),找出在故障发生前已经提交此时,从头扫描日志文件(正向扫描),找出在故障发生
47、前已经提交的事务(这些事务执行了的事务(这些事务执行了COMMIT),将其事务标识记入重做队列。),将其事务标识记入重做队列。同时,还要找出故障发生时尚未完成的事务(这些事务还未执行同时,还要找出故障发生时尚未完成的事务(这些事务还未执行COMMIT),将其事务标识记入撤消队列。),将其事务标识记入撤消队列。 对重做队列中的事务进行对重做队列中的事务进行REDO处理,对撤消队列中的事务进行处理,对撤消队列中的事务进行UNDO处理。处理。进行进行REDO处理的方法是:处理的方法是:正向扫描日志文件,根据重做队列的记录正向扫描日志文件,根据重做队列的记录对每一个重做事务重新实施对数据库的更新操作。
48、对每一个重做事务重新实施对数据库的更新操作。进行进行UNDO处理的方法是:处理的方法是:反向扫描日志文件,根据撤消队列的记录反向扫描日志文件,根据撤消队列的记录对每一个撤消事务的更新操作执行逆操作(对插入操作执行删除操作,对每一个撤消事务的更新操作执行逆操作(对插入操作执行删除操作,对删除操作执行插入操作,对修改操作则用修改前的值代替修改后的对删除操作执行插入操作,对修改操作则用修改前的值代替修改后的值)。值)。 2022-5-634数据库的恢复数据库的恢复 (9)4. 运行记录优先原则运行记录优先原则具体有两点:具体有两点:n至少要等相应运行记录已经写入运行日志后,才能允许事务往数至少要等相
49、应运行记录已经写入运行日志后,才能允许事务往数据库中写记录;据库中写记录;n直至事务的所有运行记录都已经写入到运行日志后,才能允许事直至事务的所有运行记录都已经写入到运行日志后,才能允许事务完成务完成COMMIT处理。处理。2022-5-635数据库的恢复数据库的恢复 (10)5. SQL对事务的支持对事务的支持nSQL支持通常的支持通常的COMMIT和和ROLLBACK语句,但这些语句将强制每语句,但这些语句将强制每个打开的游标关闭,这就引起了所有数据库定位的丢失。个打开的游标关闭,这就引起了所有数据库定位的丢失。n有些系统的有些系统的SQL语言能在执行语言能在执行COMMIT语句时防止关闭
50、游标,但对语句时防止关闭游标,但对执行执行ROLLBACK语句仍要关闭游标。譬如语句仍要关闭游标。譬如DB2支持在游标说明时使用支持在游标说明时使用WITHHOLD选项,那么执行选项,那么执行COMMIT语句时并不关闭游标,而是使其语句时并不关闭游标,而是使其保持打开、定位的状态,这样下一个保持打开、定位的状态,这样下一个FETCH语句将按顺序地使游标指向语句将按顺序地使游标指向下一个元组。因此,原先在下一个游标打开时所需要的重定位就不再需下一个元组。因此,原先在下一个游标打开时所需要的重定位就不再需要了。要了。nSQL不包括显式的不包括显式的BEGIN TRANSACTION语句。程序开始就
51、是第一语句。程序开始就是第一个事务的开始。在遇到个事务的开始。在遇到COMMIT或或ROLLBACK语句时,意味着一个事务语句时,意味着一个事务结束,同时开始下一个事务。结束,同时开始下一个事务。2022-5-636数据库镜像数据库镜像 数据库镜像(数据库镜像(Mirror)是根据)是根据DBA的要求,自动把整个数据库或其中的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。每当主数据库更新时,的关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更自动把更新后的数据复制过去,即新后的数据复制过去,即DBMS自动保证镜像数据与主数据库的一致性自动保证镜像数据与主数据库的一致性
52、(a)。这样,一旦出现介质故障,可由镜像磁盘继续提供使用,同时这样,一旦出现介质故障,可由镜像磁盘继续提供使用,同时DBMS自动自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本(b)。(a)read应用应用1镜像镜像应用应用2应用应用3应用应用4readread复制复制update(b)read应用应用1镜像镜像应用应用2应用应用3应用应用4readread恢复恢复update2022-5-6377.3 数据库的并发控制数据库的并发控制 主要内容主要内容n并发操作引起的问题并发操作引起的问题n封锁封锁n活锁、饿
53、死和死锁活锁、饿死和死锁n并发调度的可串行化并发调度的可串行化 2022-5-638数据库的并发控制数据库的并发控制 事务可以事务可以一个一个地串行执行一个一个地串行执行,即每个,即每个时刻只有一个事务运行,其他事务必须等到时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行,如图这个事务结束以后方能运行,如图(a)。事务在执行过程中需要不同的资源,有事务在执行过程中需要不同的资源,有时需要时需要CPU,有时需要存取数据库,有时需,有时需要存取数据库,有时需要要I/O,有时需要通信。如果事务串行执行,有时需要通信。如果事务串行执行,则许多系统资源将处于空闲状态。为了充分则许多系统资源
54、将处于空闲状态。为了充分利用系统资源发挥数据库共享资源的特点,利用系统资源发挥数据库共享资源的特点,应该允许多个事务并行地执行。在单处理机应该允许多个事务并行地执行。在单处理机系统中,事务的并行执行实际上是这些并行系统中,事务的并行执行实际上是这些并行事务的事务的并行操作轮流交叉运行并行操作轮流交叉运行,如图(,如图(b)所示。这种并行执行方式称为交叉并发方式所示。这种并行执行方式称为交叉并发方式(Interleaved Concurrency)。虽然单)。虽然单处理机系统中的并行事务并没有真正地并行处理机系统中的并行事务并没有真正地并行运行,但是减少了处理机的空闲时间,提高运行,但是减少了处
55、理机的空闲时间,提高了系统的效率。了系统的效率。T3 T1T2T3T1 T1T2 T3 T1T1T2 T2 T2 T3 (事务串行事务串行 (b) 事务交叉并行事务交叉并行( 执行方式执行方式 执行方式执行方式 2022-5-639并发操作引起的问题并发操作引起的问题(1) 数据库管理系统中并发控制机制的责任是为了保证事务的隔离性和一数据库管理系统中并发控制机制的责任是为了保证事务的隔离性和一致性,致性,DBMS需要对并发操作进行正确调度。需要对并发操作进行正确调度。例如例如 考虑飞机订票系统中的一个活动序列:考虑飞机订票系统中的一个活动序列: 甲售票点(甲事务)读出某航班的机票余额甲售票点(
56、甲事务)读出某航班的机票余额A,设,设A=16; 乙售票点(乙事务)读出同一航班的机票余额乙售票点(乙事务)读出同一航班的机票余额A,也为,也为16; 甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额A:=A-1,所以,所以A为为15,把,把A写写回数据库;回数据库; 乙售票点也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额A:=A-1,所以,所以A为为15,把,把A写回数据库。写回数据库。结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少1。这种情况称为数据库的不一致性。这种不一致性是由并发操作引起的。这种情况称为数据库的不一致性。这
57、种不一致性是由并发操作引起的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若按上面的调度序列执行,甲事务的修改就被丢失。这是由于第按上面的调度序列执行,甲事务的修改就被丢失。这是由于第步中乙步中乙事务修改事务修改A并写回后覆盖了甲事务的修改。并写回后覆盖了甲事务的修改。2022-5-640并发操作引起的问题并发操作引起的问题(2)时间更新事务T1数据库中A的值更新事务T2t0 100 t1FIND A t2 FIND At3A:=A-30 t4 A:=A*2t5UPD A t6 70UPD At7 200 在时间t7
58、丢失了事务T1的更新(FIND表示从DB中读值,UPD表示把值写回到DB) 并发操作并发操作1:先:先T1后后T2 ,则,则A结果是结果是140。并发操作并发操作2:先:先T2后后T1 ,则,则A结果是结果是170。问题是:问题是:1. 丢失更新问题丢失更新问题 例例7.14 在图中,数据库中在图中,数据库中A的初值是的初值是l00,但是按图中的并发执行,结果,但是按图中的并发执行,结果A的值是的值是200,这个值肯定是错误的。,这个值肯定是错误的。 2022-5-641并发操作引起的问题并发操作引起的问题(3)时间更新事务T1数据库中A的值读事务T2t0 100 t1FIND A t2A:=
59、A-30 t3UPD A t4 70FIND At5*ROLLBACK* t6 100 事务T2在时间t4读了未提交的A值(70) T1未执行未执行COMMIT操作,就执行操作,就执行了了ROLLBACK操作。操作。2. 依赖于未提交更新问题依赖于未提交更新问题例例7.15(用户读了“脏数据”,但没有破坏数据库的完整性)在数据库技术中,把未提交的随后被撤消的数据称为“脏数据”。本例中事务T2使用了被撤消了的A值70,但结果中A的值仍为100。2022-5-642时间更新事务T1数据库中A的值更新事务T2t0 100 t1FIND A t2A:=A-30 t3UPD A t4 70FIND At
60、5 A:=A*2t6 UPD At7 140 t8*ROLLBACK* t9 100 事务T2在时间t4读了未提交的A值,并在时间t8丢失了自己的更新 并发操作引起的问题并发操作引起的问题(4)例例7.16(用户读了“脏数据”,引起自身的更新操作被丢失,破坏了数据库的完整性)在例7.15中,只是用户读了不正确的数据,而没有破坏数据库的完整性。但是下图的情况是:事务T2不仅在时间t4读了未提交的A值(70),而且实际上在时间t8还丢失了自己的更新操作。此时破坏了数据库的完整性 2022-5-643并发操作引起的问题并发操作引起的问题(5)1.不一致分析问题不一致分析问题 例例7.17 下面图表示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考历史一轮复习方案专题十四古今中国的科技和文艺第31讲古代中国的科技与文化成就教学案+练习人民版
- 2024高考地理一轮复习第二章第2讲气压带和风带教案含解析新人教版
- 小学“五项管理”工作实施方案
- 墙面石材铺装标准及方案
- 二零二五年度人才公寓租赁及配套设施协议3篇
- 外研版(一起)小学英语一年级上册module-3-unit-2-point
- 电视事业个人年终总结汇报
- 2024年浙江邮电职业技术学院高职单招语文历年参考题库含答案解析
- 三峡工程对长江三角洲冲淤影响教案资料
- 火灾事故现场处置方案培训试题
- 2024年采购员年终总结
- 2024年新疆区公务员录用考试《行测》试题及答案解析
- 肺动脉高压的护理查房课件
- 2025届北京巿通州区英语高三上期末综合测试试题含解析
- 煤炭行业智能化煤炭筛分与洗选方案
- 2024年机修钳工(初级)考试题库附答案
- Unit 5 同步练习人教版2024七年级英语上册
- 分润模式合同模板
- 2024年长春医学高等专科学校单招职业适应性测试题库必考题
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
- 2023年山东济南市初中学业水平考试地理试卷真题(答案详解)
评论
0/150
提交评论