《数据库原理及应用(何玉洁)第二版第7章.ppt》由会员分享,可在线阅读,更多相关《数据库原理及应用(何玉洁)第二版第7章.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 数据库保护数据库保护包括数据的一致性和包括数据的一致性和并发控制、安全性、备份和恢复等内并发控制、安全性、备份和恢复等内容。容。事务事务是保证数据一致性的基本是保证数据一致性的基本手段,事务处理技术包括数据库恢复手段,事务处理技术包括数据库恢复技术和并发控制技术。技术和并发控制技术。1第第7 7章章 数据库保护数据库保护 7.1 7.1 事务事务7.2 7.2 并发控制并发控制 7.3 7.3 数据库备份与恢复数据库备份与恢复 27.1 7.1 事务事务一、事务基本概念一、事务基本概念 例如:例如:A A帐户转帐给帐户转帐给B B帐户帐户n n元钱,这个活元钱,这个活动包含两个动作:动包含两
2、个动作:第一个动作:第一个动作:A A帐户帐户 n n 第二个动作:第二个动作:B B帐户帐户 n n 事务事务是用户定义的数据操作系列,这些操是用户定义的数据操作系列,这些操作作为一个完整的工作单元,作作为一个完整的工作单元,一个事务内的所一个事务内的所有语句被作为一个整体,有语句被作为一个整体,要么全部执行,要么要么全部执行,要么全部不执行全部不执行。3 要让系统知道哪个动作属于一个事务,要让系统知道哪个动作属于一个事务,可通过标记事务的开始与结束来实现。在不可通过标记事务的开始与结束来实现。在不同的事务处理模型中,事务的开始标记不完同的事务处理模型中,事务的开始标记不完全一样,但事务的结
3、束标记是一样的。事务全一样,但事务的结束标记是一样的。事务的结束标记有两种:一种是的结束标记有两种:一种是正常结束正常结束,用,用COMMITCOMMIT(提交)(提交)表示,也就是事务中的操作表示,也就是事务中的操作会保存到数据库中成为永久的操作;另一种会保存到数据库中成为永久的操作;另一种是是异常结束异常结束,用,用ROLLBACKROLLBACK(回滚)(回滚)表示也就表示也就是事务中的操作被全部撤销,数据库回到事是事务中的操作被全部撤销,数据库回到事务开始之前的状态。务开始之前的状态。4二、事务的特性二、事务的特性原子性原子性(Consistency)(Consistency)指事务是
4、数据库的逻辑工作单位,事务中的操指事务是数据库的逻辑工作单位,事务中的操 作要么都做,要么都不做。作要么都做,要么都不做。一致性一致性(Atomicity)(Atomicity)指事务执行的结果必须是使数据库从一个一致性指事务执行的结果必须是使数据库从一个一致性 状态变到另一个一致性状态。状态变到另一个一致性状态。隔离性隔离性(Isolation)(Isolation)指数据库中一个事务的执行不能被其它事务干扰指数据库中一个事务的执行不能被其它事务干扰持久性持久性(Durability)(Durability)也称永久性(也称永久性(PermanencePermanence),指事务一旦提交,
5、),指事务一旦提交,则其对数据库中数据的改变就是永久的。则其对数据库中数据的改变就是永久的。5三、三、SQL事务处理模型事务处理模型隐式事务隐式事务 每一条数据操作语句都自动地成为每一条数据操作语句都自动地成为 一个事务。一个事务。显式事务显式事务 有显式的开始和结束标记的事务有显式的开始和结束标记的事务61 1、ISOISO事务处理模型事务处理模型 明尾暗头明尾暗头,即事务的开始是隐含的,而事务,即事务的开始是隐含的,而事务的结束有明确标记。的结束有明确标记。例如:例如:UPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE
6、 帐户名帐户名 A AUPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE 帐户名帐户名 B BCOMMITCOMMIT72 2、Transact-SQLTransact-SQL事务处理模型事务处理模型 明头明尾明头明尾。事务的开始标记是:。事务的开始标记是:BEGIN TRANSACTION BEGIN TRANSACTION,事务的结束标记为:事务的结束标记为:COMMIT COMMIT TRANSACTIONTRANSACTIONTRANTRAN 和和 ROLLBACK ROLLBACK TRANSACTIONTRAN
7、SACTIONTRANTRAN例如:例如:BEGIN TRANSACTION BEGIN TRANSACTION UPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE 帐户名帐户名 A AUPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE 帐户名帐户名 B B COMMIT COMMIT87.27.2并发控制并发控制 一个事务完成后,再开始另一个事务,这种一个事务完成后,再开始另一个事务,这种执行方式为执行方式为串行执行串行执行;如果;如果DBMSDBM
8、S可同时接受多个可同时接受多个事务,这些事务在时间上可重叠执行,这种执行事务,这些事务在时间上可重叠执行,这种执行方式为方式为并发执行并发执行。在单在单CPUCPU系统中,同一时间只能有一个事务系统中,同一时间只能有一个事务占据占据CPUCPU,各个事务交叉使用,各个事务交叉使用CPUCPU,这种并发方式,这种并发方式称为称为交叉并发交叉并发;在多;在多CPUCPU系统中,多个事务可同系统中,多个事务可同时占有时占有CPUCPU,这种并发方式称为,这种并发方式称为同时并发同时并发。9一、并发控制概述一、并发控制概述 数据库中的数据是一个共享的资源,因此数据库中的数据是一个共享的资源,因此会有很
9、多用户同时使用数据库中的数据,也就会有很多用户同时使用数据库中的数据,也就是在多用户系统中,可能同时运行着多个事是在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间和一定的数据。那务,而事务的运行需要时间和一定的数据。那么当系统中同时有多个事务在运行时,特别是么当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互的干扰情况。之间就有可能产生相互的干扰情况。10并发操作所带来的数据不一致情况有:并发操作所带来的数据不一致情况有:丢失修改、不可重复读丢失修改、不可重复读 读读“脏脏”数据、产生数据、产生
10、“幽灵幽灵”数据数据1 1、丢失数据修改、丢失数据修改 指两个事务指两个事务T1T1和和T2T2读入同一数据并进读入同一数据并进行修改,行修改,T2T2提交的结果破坏了提交的结果破坏了T1T1提交的结提交的结果,导致果,导致T1T1的修改被的修改被T2T2覆盖了。覆盖了。11122 2、读、读“脏数据脏数据”指一个事务读取了某个失败事务运行过程中的数据。指一个事务读取了某个失败事务运行过程中的数据。133 3、不可重复读、不可重复读 144 4、产生、产生“幽灵幽灵”数据数据 实际属于不可重复读的范畴。指当事务实际属于不可重复读的范畴。指当事务T1T1按一定条件从数据库中读取了某些数据记按一定
11、条件从数据库中读取了某些数据记录后,事务录后,事务T2T2删除了其中的部分记录,或者删除了其中的部分记录,或者在其中添加了部分记录,则当在其中添加了部分记录,则当T1T1再次按相同再次按相同条件读取数据时,发现其中少了(对删除)条件读取数据时,发现其中少了(对删除)或多了(对插入)一些记录。这样的数据对或多了(对插入)一些记录。这样的数据对T1T1来说就是来说就是“幽灵幽灵”数据数据或称或称“幻影幻影”数据数据。15二、并发控制措施二、并发控制措施 并发控制的主要方式是封锁机制,即并发控制的主要方式是封锁机制,即加锁加锁(LockingLocking)。加锁就是限制事务内和事务外对数据的操作。
12、加锁就是限制事务内和事务外对数据的操作。所谓所谓加锁加锁就是就是事务事务T T在操作某个数据之前,在操作某个数据之前,先向系统发出请求,封锁其所要使用的数据。先向系统发出请求,封锁其所要使用的数据。加锁后事务加锁后事务T T对要操作的数据具有了一定的控制对要操作的数据具有了一定的控制权,在事务权,在事务T T释放它的锁之前,其他事务不能操释放它的锁之前,其他事务不能操作这些数据作这些数据。16基本的锁类型有两种:基本的锁类型有两种:排它锁排它锁(也称为(也称为X X锁)锁)和和共享锁共享锁(也称(也称S S锁)。锁)。共享锁共享锁:若事务:若事务T T对数据对象对数据对象A A加了加了S S锁
13、,锁,则事务则事务T T可以读可以读A A,但不能修改但不能修改A A,其它事其它事务只能再务只能再对对A A加加S S锁,而不能加锁,而不能加X X锁,直到锁,直到T T释放释放了了A A上的上的S S锁。锁。排它锁排它锁:若事务:若事务T T对数据对象对数据对象A A加了加了X X锁,锁,则允许则允许T T读取和修改读取和修改A A,但不允许其它事但不允许其它事务再对务再对A A加任何类型的锁和进行任何操作。加任何类型的锁和进行任何操作。17排它锁和共享锁的相容矩阵排它锁和共享锁的相容矩阵 T2 T1XS无锁无锁XNONOYESSNOYESYES无锁无锁YESYESYES18三、封锁协议三
14、、封锁协议 对封锁方式规定不同的规则,就形成了各对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。种不同级别的封锁协议。1 1、一级封锁协议、一级封锁协议 一级封锁协议是:一级封锁协议是:对事务对事务T T要修改的数据加要修改的数据加X X锁,直到事务结束(包括正常结束和非正常结锁,直到事务结束(包括正常结束和非正常结束)时才释放束)时才释放。一级封锁协议可以一级封锁协议可以防止丢失修改防止丢失修改,但,但不能不能保证可重复读保证可重复读和和不读不读“脏脏”数据数据。19t1t2t3 t4事务事务T1时间时间事务事务T2(1)对)对A加加X锁锁 获得获得(2)读)读A16(3)要对要对
15、A加加X锁锁等待等待(4)修改)修改AA1 A15t6t7t8 t5(5)释放)释放A对对X的的 锁锁(6)(7)(8)(9)等待等待获得获得A对对X的锁的锁读读A15修改修改AA4写回写回A11释放释放A对对X的的锁锁202 2、二级封锁协议、二级封锁协议 二级封锁协议是:二级封锁协议是:一级封锁协议加上事务一级封锁协议加上事务T T对要读取的数据加对要读取的数据加S S锁,读完后即释放锁,读完后即释放S S锁锁。二级封锁协议除了可以二级封锁协议除了可以防止丢失修改防止丢失修改外,外,还可以还可以防止读防止读“脏脏”数据数据。但在二级封锁协。但在二级封锁协议议协议中,由于事务协议中,由于事务
16、T T读完数据即释放读完数据即释放S S锁,因锁,因此,此,不能保证可重复读数据不能保证可重复读数据。21t1t2t3t4事务事务T1时间时间事务事务T2(1)对)对C加加X锁锁 获得获得(2)读)读C50(3)求)求CC2 写回写回C100要对要对C加加S锁等待锁等待(4)图66t6t7t8t5(5)回滚)回滚(6)释放)释放C锁锁(7)(8)(9)等待等待等待等待获得获得C的的S锁锁读读C50释放释放C的的S锁锁223 3、三级封锁协议、三级封锁协议 三级封锁协议是:三级封锁协议是:一级封锁协议加上事务一级封锁协议加上事务T T对要读取的数据加对要读取的数据加S S锁,并直到事务结束才锁,
17、并直到事务结束才释放释放。三级封锁协议除了可以三级封锁协议除了可以防止丢失修改防止丢失修改和和不不读读“脏脏”数据数据之外,还进一步之外,还进一步防止了不可重防止了不可重复复读读。23t1t2t3t4事务事务T1时间时间事务事务T2(1)对)对A、B分别分别 加加S锁锁 获得获得(2)读)读A50 B100 求求AB150(3)等待等待(4)读)读A50 B100求求AB150图67t6t7t8t5(5)将和值写入)将和值写入(6)释放)释放A锁锁 释放释放B锁锁(7)(8)(9)等待等待等待等待获得获得B的的X锁锁读读B100写回写回B200要对要对B加加X锁等待锁等待t9释放对释放对B的的
18、X锁锁24三个封锁协议的主要区别在于什么操作需要三个封锁协议的主要区别在于什么操作需要申请封锁,以及何时释放锁。申请封锁,以及何时释放锁。封锁封锁协议协议X X锁锁(对写(对写数据)数据)S S锁(对只锁(对只读数据)读数据)不丢失不丢失修改修改(写)(写)不读脏数不读脏数据(读)据(读)可重复读可重复读(读)(读)一级一级事务全事务全程加锁程加锁 不加不加 二级二级事务全事务全程加锁程加锁 事务开始加,事务开始加,读完即放读完即放 三级三级事务全事务全程加锁程加锁 事务全程加事务全程加锁锁 25四、死锁四、死锁t1t2t3t4事务事务T1时间时间事务事务T2(1)对对R1加锁加锁(2)(3)
19、请求对)请求对R2加锁加锁 等待等待请求对请求对R1加锁加锁等待等待(4)等待等待等待等待等待等待对对R2加锁加锁26解决死锁问题方法:解决死锁问题方法:一类是采取一定措施来预防死锁发生一类是采取一定措施来预防死锁发生一类是允许发生死锁,采用一定手段一类是允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解定期诊断系统中有无死锁,若有则解除之。除之。27预防死锁方法:预防死锁方法:一次封锁法一次封锁法:每个事务一次将所有要使用的:每个事务一次将所有要使用的数据全部加锁。数据全部加锁。封锁范围大,降低了系统的并发性封锁范围大,降低了系统的并发性顺序封锁法顺序封锁法:预先对数据对象规定一个封
20、锁:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。顺序,所有事务都按这个顺序封锁。难以确定封锁事务及其封锁顺序难以确定封锁事务及其封锁顺序死锁诊断与解除:死锁诊断与解除:方法与操作系统类似,一般使用超时法或事方法与操作系统类似,一般使用超时法或事 务等待图法务等待图法28五、并发调度的可串行性五、并发调度的可串行性 直观地说,如果多个事务在某个调度下的直观地说,如果多个事务在某个调度下的执行结果与这些事务在某个串行调度下的执行执行结果与这些事务在某个串行调度下的执行结果相同,那么这个调度就一定是正确的,因结果相同,那么这个调度就一定是正确的,因为所有事务的串行调度策略一定是正确的调
21、度为所有事务的串行调度策略一定是正确的调度策略。策略。多个事务的并发执行是正确的,当且仅当多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为则我们称这种调度为可串行化的调度可串行化的调度。29例如,假设有两个事务,分别包含如下操作:例如,假设有两个事务,分别包含如下操作:事务事务T1T1:读:读B B;A AB B1 1;写回;写回A A;事务事务T2T2:读:读A A;B BA A1 1;写回;写回B B;假设假设A A、B B的初值均为的初值均为4 4,按按T1 T1 T2 T2:结果为:结果为A A5 5,
22、B B6 6;按按T2 T2 T1 T1:结果为:结果为A A6 6,B B5 5。当并发调度时,如果执行的结果是这两者之当并发调度时,如果执行的结果是这两者之一,就都是正确的一,就都是正确的。30T1T2T1T2T1T2T1T2B加加S锁锁 B加加S锁锁 B加加S锁锁 B加加S锁锁 YB4 XA4 YB4 YB4 B释放释放S锁锁 A释放释放S锁锁 A加加S锁锁 B释放释放S锁锁 A加加X锁锁 B加加X锁锁 XA4 A加加X锁锁 AY+1 BX+1 B释放释放S锁锁 A加加S锁锁 写回写回A(5)写回写回B(4)A释放释放S锁锁 AY+1 等待等待 A释放释放X锁锁 B释放释放X锁锁 A加加
23、X锁锁 写回写回A(5)等待等待 A加加S锁锁 B加加S锁锁 AY+1 等待等待 XA5 YB5 写回写回A(5)XA5A释放释放S锁锁 B释放释放S锁锁 B加加X锁锁 A释放释放S锁锁 B加加X锁锁 A加加X锁锁 BX+1 B加加X锁锁 BX+1 AY+1 BX+1 写回写回B(6)写回写回A(6)A释放释放X锁锁 写回写回B(6)B释放释放X锁锁 A释放释放X锁锁 B释放释放X锁锁 B释放释放X锁锁(a)串行调度串行调度(b)串行调度串行调度(c)不可串行化调度不可串行化调度 (d)可串行化调度可串行化调度 31六、两段锁协议六、两段锁协议 两段锁(简称两段锁(简称2PL2PL)协议)协议
24、是指所有事务是指所有事务必须分为两个阶段对数据进行加锁和解锁,必须分为两个阶段对数据进行加锁和解锁,内容为:内容为:l在对任何数据进行读、写操作之前,首先在对任何数据进行读、写操作之前,首先要获得对该数据的封锁要获得对该数据的封锁l在释放一个封锁之后,事务不再申请和获在释放一个封锁之后,事务不再申请和获得任何其他封锁得任何其他封锁 两段锁协议是实现可串行化调度的充分两段锁协议是实现可串行化调度的充分条件。条件。32两段锁的含义两段锁的含义:将每个事务分成两个时期:将每个事务分成两个时期:申申请封锁期请封锁期(开始对数据操作之前)和(开始对数据操作之前)和释放封锁释放封锁期期(结束对数据操作之后
25、),申请期申请要进(结束对数据操作之后),申请期申请要进行的封锁,释放期释放所占有的封锁。在申请行的封锁,释放期释放所占有的封锁。在申请期不允许释放任何锁,在释放期不允许申请任期不允许释放任何锁,在释放期不允许申请任何锁。何锁。若某事务遵守两段锁协议,则其封锁序列为:若某事务遵守两段锁协议,则其封锁序列为:事务过程事务过程开始开始加锁段加锁段分界分界解锁段解锁段LOCKLOCK段段UNLOCKUNLOCK段段明显的分为加锁明显的分为加锁界所两个段界所两个段t t33 SQL Server系统的并发控制系统的并发控制1 1、SQL ServerSQL Server使用加锁来控制并发问题使用加锁来
26、控制并发问题 锁的类型有:锁的类型有:数据库锁(数据库锁(Database LockDatabase Lock)表锁(表锁(Table LockTable Lock)区域锁(区域锁(Extent LockExtent Lock)对整个区域(对整个区域(8 8页)加锁页)加锁 面锁(面锁(Page LockPage Lock)对某个页面的所有记录加锁对某个页面的所有记录加锁 关键字锁(关键字锁(Key LockKey Lock)行锁(行锁(Row LockRow Lock)34 SQL Server系统的并发控制系统的并发控制2 2、SQL ServerSQL Server可以以不同的加锁模式进
27、行加锁可以以不同的加锁模式进行加锁 加锁模式有:加锁模式有:共享锁(共享锁(Shared LockShared Lock)独占锁(独占锁(Exclusive LockExclusive Lock)更新锁(更新锁(Update LockUpdate Lock)意向锁(意向锁(Intend LockIntend Lock)模式锁(模式锁(Schema LockSchema Lock)357.3 7.3 数据库备份与恢复数据库备份与恢复一、数据库故障的种类一、数据库故障的种类1 1、事务内部的故障、事务内部的故障 有些是可以预期到的,这样的故障可通过事务程序有些是可以预期到的,这样的故障可通过事务程
28、序发现。发现。2 2、系统故障、系统故障 指造成系统停止运转、系统要重启的故障。例如,指造成系统停止运转、系统要重启的故障。例如,硬件错误(硬件错误(CPUCPU故障)、操作系统故障、突然停电等。故障)、操作系统故障、突然停电等。这样的故障会影响正在运行的所有事务,但不破坏数据这样的故障会影响正在运行的所有事务,但不破坏数据库。库。3 3、其它故障、其它故障 介质故障或由计算机病毒引起的故障或破坏,我们介质故障或由计算机病毒引起的故障或破坏,我们归为其它故障。归为其它故障。36二、数据库备份二、数据库备份 数据备份是指定期或不定期地对数据库数据数据备份是指定期或不定期地对数据库数据进行复制进行
29、复制,可以将数据复制到本地机器上,也可,可以将数据复制到本地机器上,也可以复制到其它机器上,备份的介质可以是磁带也以复制到其它机器上,备份的介质可以是磁带也可以是磁盘。可以是磁盘。在制定备份策略时,应考虑如下几个方面:在制定备份策略时,应考虑如下几个方面:1 1、备份的内容、备份的内容 应备份数据库中的表(结构)、数据库用户应备份数据库中的表(结构)、数据库用户(包括用户和用户操作权)、用户定义的数据库(包括用户和用户操作权)、用户定义的数据库对象和数据库中的全部数据。而且还应该备份数对象和数据库中的全部数据。而且还应该备份数据库日志等内容。据库日志等内容。372 2、备份频率、备份频率 确定
30、备份频率要考虑两个因素:确定备份频率要考虑两个因素:一是存储介质出现故障或其它故障时,允许一是存储介质出现故障或其它故障时,允许丢失的数据量的大小。丢失的数据量的大小。二是数据库的事务类型(读多还写多)以及二是数据库的事务类型(读多还写多)以及事务发生的频率(经常发生还是不经常发生)事务发生的频率(经常发生还是不经常发生)。38三、数据库恢复三、数据库恢复1 1、恢复策略、恢复策略 (1)(1)事务故障的恢复事务故障的恢复 事务故障的恢复是由系统自动完成的,事务故障的恢复是由系统自动完成的,对用户是透明的。对用户是透明的。恢复的过程为恢复的过程为:反向扫描日志文件并执反向扫描日志文件并执行相应
31、操作的逆操作行相应操作的逆操作。39(2 2)系统故障的恢复)系统故障的恢复 系统故障的恢复是系统在重启时自动系统故障的恢复是系统在重启时自动完成的,不需用户干预。完成的,不需用户干预。恢复过程为恢复过程为:正向扫描日志文件,找正向扫描日志文件,找出故障发生前已提交的事务,将其重做;出故障发生前已提交的事务,将其重做;同时找出故障发生时未完成的事务,并撤同时找出故障发生时未完成的事务,并撤消这些事务消这些事务。40(3 3)介质故障的恢复)介质故障的恢复 恢复的方法恢复的方法是是首先重装数据库,使数据首先重装数据库,使数据库管理系统能正常运行,然后利用介质损坏库管理系统能正常运行,然后利用介质
32、损坏前对数据库已做的备份或利用镜像设备恢复前对数据库已做的备份或利用镜像设备恢复数据库数据库。412 2、恢复方法、恢复方法利用备份技术利用备份技术利用事务日志利用事务日志利用镜像技术利用镜像技术 所谓所谓镜像镜像就是在不同的设备上同时存有两就是在不同的设备上同时存有两份数据库,把其中的一个设备称为主设备,把份数据库,把其中的一个设备称为主设备,把另一个称为镜像设备。主设备与镜像设备互为另一个称为镜像设备。主设备与镜像设备互为镜像关系。每当主数据库更新时,镜像关系。每当主数据库更新时,DMBSDMBS自动把自动把更新后的数据复制到另一个镜像设备上,保证更新后的数据复制到另一个镜像设备上,保证主
33、设备上的数据库与镜像设备上的数据库一主设备上的数据库与镜像设备上的数据库一致。致。42应用应用1应用应用1应用应用1应用应用1 镜像镜像 update复制复制readreadread应用应用1应用应用1应用应用1应用应用1update复制复制readreadread 镜像镜像(a)备份备份(b)恢复恢复43SQL ServerSQL Server的恢复技术的恢复技术 1 1、定期对整个数据库进行转储、定期对整个数据库进行转储 转储是数据库恢复中采用的基本技术。转储是数据库恢复中采用的基本技术。图图 转储和恢复转储和恢复442 2、建立、建立“日志日志”文件文件 一般的恢复策略是:一般的恢复策略
34、是:定期地将数据库内容定期地将数据库内容转储到脱机装置上来形成副本,同时对每次转转储到脱机装置上来形成副本,同时对每次转储后新发生的改变一一记录。储后新发生的改变一一记录。日志文件就是用日志文件就是用来记录对数据库每一次更新活动的文件。这来记录对数据库每一次更新活动的文件。这样,即使联机的数据库存储设备中的信息被破样,即使联机的数据库存储设备中的信息被破坏,坏,DBADBA也可以很快地利用这些副本和日志文也可以很快地利用这些副本和日志文件使原状态得以恢复。件使原状态得以恢复。453 3、数据库恢复、数据库恢复 转储和日志文件是恢复数据库的有效手段。转储和日志文件是恢复数据库的有效手段。若数据库
35、已被破坏,则若数据库已被破坏,则先装入最近一次备份先装入最近一次备份的数据库,然后利用日志文件执行的数据库,然后利用日志文件执行REDOREDO(重做)(重做)操作操作。具体过程如下图所示。具体过程如下图所示。图图 利用转储和日志文件恢复数据库利用转储和日志文件恢复数据库46 若数据库未被破坏,但某些数据不正若数据库未被破坏,但某些数据不正确,则不必进行转储。首先,只要确,则不必进行转储。首先,只要通过通过“日志日志”文件执行文件执行UNDOUNDO(撤消)操作,对(撤消)操作,对每个每个UNDOUNDO事务的更新操作执行反操作。然事务的更新操作执行反操作。然后,对这些事务再进行后,对这些事务
36、再进行REDOREDO(重做)操作(重做)操作即可。即可。47本章小结本章小结事事务务、并并发发控控制制和和数数据据库库的的备备份份和和恢恢复复概概念念。事事务务是是保保证证数数据据并并发发性性的的重重要要方方面面。并并发发控控制制是是指指当当同同时时有有多多个个事事务务在在执执行行时时,为为了了保保证证一一个个事事务务的的执执行行不不受受其其他他事事务务的的干干扰扰所所采采取取的的措措施施。并并发发控控制制的的主主要要方方法法是是加加锁锁,根根据据对对数数据据操操作作的的不不同同,锁锁分分为为共共享享锁锁和和排排他他锁锁两两种种。为为了了保保证证并并发发执执行行的的事事务务是是正正确确的的,一一般般要要求求事事务遵守务遵守两段锁协议两段锁协议。数据库的备份和恢复是保证当数据库出现故障数据库的备份和恢复是保证当数据库出现故障时能够将数据库尽可能的恢复到正确状态的技时能够将数据库尽可能的恢复到正确状态的技术。术。48作业作业(教材教材p-88)习题习题1、5、7、849