




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、复习,安全管理 用户类别 用户管理 权限管理 授权 收回权限 拒绝权限,数据库管理系统DBMS除了具有安全控制功能,还应该具有哪些控制功能? DB的概念:数据库是相互关联的数据的集合,它用综合的方法组织数据,具有较小的数据冗余,可供多个用户共享,具有较高的数据独立性,具有安全控制机制,能够保证数据的安全、可靠,允许并发地使用数据库,能有效、及时地处理数据,并能保证数据的一致性和完整性。,第8章 事务管理,事 务 并发控制 恢 复,授课内容:事务;并发控制 教学目的: 理解事务的概念、性质; 掌握并发事务产生干扰的原因、干扰的种类; 掌握干扰的解决办法:封锁技术; 了解死锁的产生原因、避免方法、
2、发现和解决死锁的方法; 了解可串行性规则; 了解封锁粒度的概念及封锁粒度与并发度的关系; 了解意向锁技术。,教学重点: 事务的概念、性质; 并发控制的干扰问题; 解决干扰的封锁技术。 教学难点: 封锁技术; 意向锁; 可串行性规则。,事 务(transaction),为什么需要事务 事务的概念 事务的性质 SQL对事务的支持,为什么需要事务,数据库在使用过程中可能发生故障,故障导致数据丢失甚至毁坏,因此需要恢复数据。,恢复技术,多用户数据库在使用时,可能会出现多个用户同时操作同一数据库的同一数据,可能会出现干扰,以至存取不正确的数据。因此,需要避免干扰。,并发控制技术,为什么需要事务,事务的概
3、念,事务是用户定义的一个数据操作序列,是构成单一逻辑工作单元的操作集合,这些操作要么全部不做,要么全部做,是一个不可分割的工作单位。 例:如果某公司在银行中有A、B两个帐号,现在公司想将帐户A中的款项1万元转到帐户B中。 操作需分两步:A=A-1万元 B=B+1万元,事务的性质,原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability),事务的这些性质通常称为ACID特性,这些特性就是通过并发控制机制和数据恢复机制来保证的。,原子性,事务的原子性强调了一个事务是一个逻辑工作单元,是一个整体,是不可分割的。一个事务所包含的操作要么
4、全部做,要么全部不做。 保证事务的原子性是数据库恢复机制的责任。,例:将帐户A中的款项1万元转到帐户B中。 事务分两步:A=A-1万元 B=B+1万元,一致性,一致性状态是指它所反映的现实世界情况是正确和真实的。 一个事务执行一项数据库操作,事务将使数据库从一种一致性的状态变换成另一种一致性状态。,例:将帐户A中的款项1万元转到帐户B中。 事务分两步:A=A-1万元 B=B+1万元,隔离性,一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 通俗地讲,就是系统应该保证执行结果与这些事务按先后次序串行执行的结果一样。,通
5、过并发控制实现,持久性,事务的持久性是指一旦事务成功完成,他的效果就不会因任何故障而被取消。,由数据恢复完成,例:将帐户A中的款项S转到帐户B中。 事务分两步:A=A-1万元 B=B+1万元,SQL对事务的支持,开始事务 (BEGIN TRANSACTION) 结束事务 (COMMIT /ROLLBACK),例1:有一个事务:向仓库关系中插入一个元组。,例2:有一个事务,更新订单明细关系中的订单号为OR001的订单数量为200,随后发现更新错误,取消更新。 Begin transaction update 订单明细 set 数量=200 where 订单号= OR001 Rollback,Be
6、gin transaction Insert into 仓库(仓库号,城市,面积) values( WH7 , 北京,300) Commit,并发控制,干扰问题 解决干扰封锁 封锁不当死锁 并发控制的正确性准则可串行性 两阶段封锁协议 封锁粒度 意向锁 事务的隔离级别 封锁与隔离级别,干扰问题,丢失更新问题 未提交依赖问题 不一致分析问题 幻象读问题 问题的解决,丢失更新问题,总的效果: 15日13次7车厢5号下铺的软卧票卖了两次。 其原因是: 允许了用户B在过时的信息基础上去更新数据库,而没有迫使他去看最新的信息。,旅客A来到A售票处,要买一张15日北京到上海的13次直达快速列车的软卧车票,
7、售票员A(下称用户A)在终端A查看剩余票信息;,这时用户B不知道用户A已经将15日13次7车厢5号下铺的软卧票卖出,使旅客B也买了一张15日13次7车厢5号下铺的软卧票,用户B更新剩余票信息并将它存入数据库(重复了用户A已经做过的更新)。,旅客A买了一张15日13次7车厢5号下铺的软卧票,用户A更新剩余票信息并将它存入数据库;,几乎在同时,旅客B来到B售票处,也要买一张15日北京到上海的13次直达快速列车的软卧车票,售票员B(下称用户B)从终端B查到了同样的剩余票信息;,用户B(售票窗口B),用户A(售票窗口A),t1,t2,t3,t4,丢失更新问题,用SQL术语描述丢失更新问题,未提交依赖问
8、题,未提交依赖问题也称为读“脏”(Dirty Read)数据问题,查询一个已经被其他事务更新、但尚未提交的元组,将会引起未提交依赖问题。,未提交依赖问题,Rollback,set transaction isolation level read uncommitted select * from 订单明细 where 订单号=OR001,set transaction isolation level read uncommitted begin transaction select * from 订单明细 where 订单号=OR001 update 订单明细 set 数量=200 where
9、 订单号=OR001 and 产品号= PR1,用户B,用户A,t1,t2,t3,不一致分析问题,不一致分析问题也称为不可重复读问题,很多应用可能需要校验功能,这时往往需要连续两次或多次读数据进行校验和分析,结果由于其他事务的干扰,使得前后结果不一致,从而产生校验错误(即不一致的分析)。,不一致分析问题,select sum(数量) from 订单明细 where 订单号=OR001 结果是400,set transaction isolation level read uncommitted update 订单明细 set 数量=200 where 订单号= OR001 and 产品号= P
10、R1,set transaction isolation level read uncommitted begin transaction select sum(数量) from 订单明细 where 订单号=OR001 结果是300,用户B:,用户A:,t1,t2,t3,幻象读问题,幻象读问题与不一致分析问题有关,当事务A读数据时,事务B在对同一个关系进行插入或删除操作,这时事务A再读同一条件的元组时,会发现神秘地多出了一些元组或丢失了一些元组,把这种现象称作幻象读。,幻象读问题,Commit,select count(*) from 订单明细 where 订单号=OR001 结果有3条,s
11、et transaction isolation level read uncommitted Insert into 订单明细 values(OR001,3, PR3,10),set transaction isolation level read uncommitted begin transaction select count(*) from 订单明细 where 订单号=OR001 结果有2条。,用户B:,用户A:,t1,t2,t3,t4,问题的解决,丢失更新问题、未提交依赖问题、不一致分析问题、幻象读问题的产生原因: 并发操作破坏了事务的隔离性。 因此数据库需要采用并发控制技术来保
12、证事务的隔离性,使事务间不会相互干扰,从而产生数据的不一致性。 主要采取封锁技术来实现并发控制。,封锁,封锁的基本技术 封锁机制,封锁的基本技术,实现并发控制要采用封锁技术。 封锁的概念:就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁,加锁后事务T就对该数据对象有了一定的控制,在事务T释放他的锁之前,其他的事务不能更新此数据对象。 针对不同的干扰问题可以有不同的封锁机制。,封锁机制,共享封锁 独占封锁 更新封锁 利用封锁解决干扰问题,共享封锁(Shared locks),共享封锁是为读操作设置的一种封锁,所以也称作读封锁,或简称S锁。 如果想读到一组不变的数据,也
13、就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作,则可以申请S锁。 若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务都只能再对A加S锁,而不能加独占封锁(X锁)和更新封锁(U锁)。这保证了其他事务可以读A,但在T释放A上的S锁之前,不能对A做任何修改。,SQL Server的封锁操作是在相关语句的“WITH ()”子句中完成的,该短语可以在SELECT、INSERT、UPDATE和DELETE等语句中指定表级锁定的方式和范围。 SQL Server中的更新封锁中的关键词: TABLOCK:对表施行共享封锁,在读完数据后立刻释放封锁,此类封锁可以避免读“脏”数据,
14、但不具有可重复读的特性。 HOLDLOCK:与TABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁,这样可以保证数据的可重复读特性。 例如,查询订单OR001的订购总量,查询时加共享锁并保持到事务结束: select sum(数量) from 订单明细 with(tablock holdlock)where 订单号=OR001,独占封锁(eXclusive locks),独占封锁也叫排他封锁或写封锁,它是为修改操作设置的一种封锁,简称X锁,这是最严格的一类封锁。 当需要对表实施插入、删除或修改操作时,应该使用独占封锁。 若事务T对数据对象A加上X锁,则只允许T读取和修
15、改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。但不拒绝一般的查询操作。 SQL Server中相关的关键字: TABLOCKX:对表实施独占封锁。,例:用户A要向仓库表中插入一条记录(WH1, 北京,300),插入时加X锁。 Insert into 仓库 with(tablockx) values(WH1,北京,300),更新封锁(Update locks),当需要对一个记录或一组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。 若事务T对数据对象A加上U锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类
16、型的锁,直到T释放A上的锁。但不拒绝一般的查询操作。 SQL Server中相关的关键字: UPDLOCK:对表中的指定元组实施更新封锁;这时其他事务可以对同一表中的其他元组也实施更新封锁,但是不允许对表实施共享封锁和独占封锁。,例:把订单OR001中订购产品PR1的订购数量改为200,更新操作时加更新锁。 update 订单明细 with(updlock) set 数量=200 where 订单号= OR001 and 产品号= PR1,利用封锁解决干扰问题,丢失更新问题的解决: 丢失更新问题实施封锁的基本思想是: 当一个用户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻
17、更新相同的表或记录,迫使其他用户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。,实施封锁以后的时间序列,丢失更新问题的时间序列,实施封锁的基本思想是:当一个用户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻更新相同的表或记录,迫使其他用户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。,利用更新封锁可以解决丢失更新问题。, DECLARE d datetime, t char(6), s char(2), n char(10) BEGIN TRANSACTION SELECT n=座位号 FROM R WITH (UPDLOCK) WHER
18、E 日期 = d AND 车次 = t AND 座别 = s AND 状态 IS NULL IF UPDATE R SET 状态 = Y WHERE 座位号 = n AND 日期 = d AND 车次 = t AND 座别 = s COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION ,利用封锁解决干扰问题,解决不一致分析问题和幻象读问题。,利用封锁解决干扰问题,With(tablock holdlock),with(updlock),利用封锁解决干扰问题,解决读脏数据问题。,with(updlock),with(tablock holdlock),死锁,产
19、生死锁的原因 避免死锁 发现死锁 解决死锁,产生死锁的原因,右图示意了两个并发事务所发生事件的序列,假设程序A为了完成某个事务需要封锁仓库和职工两个关系,而几乎在同一时刻并发执行的程序B为完成另一个事务也需要封锁职工和仓库关系,这两个程序正好按照如图所示的交错序列执行命令,结果两个程序都为了等待对方释放数据资源而产生死锁。,避免死锁,相同顺序法 所有的用户程序约定都按相同的顺序来封锁表 一次封锁法 为了完成一个事务,一次性封锁所需要的全部表,避免死锁的封锁,发现死锁,超时法 即一个事务在等待的时间超过了规定的时限后就认为发生了死锁。 这种方法非常不可靠,如果设置的等待时限长,则不能及时发现死锁
20、;如果设置的等待时限短,则可能会将没有发生死锁的事务误判为死锁。,发现死锁,等待图法(Wait-for Graph) 等待图是一个有向图G=(W,U),其中W是节点的集合,即在系统中运行的事务Ti的集合,U=(Ti,Tj)即Ti等待Tj。 通过有向图判定事务是否是可串行化的,如果是则说明没有发生死锁,否则说明发生了死锁。 具体思路是:用节点来表示正在运行的事务,用有向边来表示事务之间的等待关系,如右图所示,如果有向图中发现回路,则说明发生了死锁。,解决死锁,发现死锁后解决死锁的一般策略是:自动使“年轻”的事务(即完成工作量少的事务)先退回去,然后让“年老”的事务(即完成工作量多的事务)先执行,
21、等“年老”的事务完成并释放封锁后,“年轻”的事务再重新执行。,并发控制的正确性准则可串行性,事务可以串行执行,也可以并发执行。不同的并行事务调度会产生不同的执行结果,数据库并发控制的目的就是限制不正确的并发调度。,并发控制的正确性准则可串行性,可串行性(Serializability)通常看作是多个事务并发执行的正确性准则。具体判定方法如下: 各单个事务如能将数据库从一个正确状态转变为另一个正确状态,则认为该事务是正确的; 按任何一个串行顺序依次执行多个事务也是正确的(这里的串行顺序假定各个事务间彼此独立、不交叉); 事务的交叉执行过程是正确的,当且仅当其与串行执行过程等价,则事务是可串行化的
22、。,为了保证并发调度的正确性,DBMS的并发控制机制必须提供一定的手段来保证调度是可串行化的。目前,DBMS普遍采用两阶段封锁(Two-Phase Locking)协议的方法实现并发调度的可串行性。 封锁协议的概念:运用封锁方法时,对数据对象加锁需要约定一些规则,如何时申请封锁、持锁时间、何时释放封锁等,我们称这些规则为封锁协议。 常用的一个封锁协议是两阶段封锁协议。,两阶段封锁协议(Two-Phase Locking Protocol),两阶段封锁协议,两阶段封锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。 第一阶段称为扩展阶段,这一阶段获得各种类型的封锁,但是不能释放任何封锁。 第二
23、阶段称为收缩阶段,这一阶段释放各种类型的封锁,一旦开始释放封锁,则不能再申请任何类型的封锁。 注意,两阶段封锁协议和一次封锁法的异同之处。一次封锁法遵守两阶段封锁协议;但是两阶段封锁协议并不要求一次封锁所有需要封锁的数据。两阶段封锁协议仍有可能发生死锁。 定理:若所有事务均遵循两阶段封锁协议,则这些事务的所有交叉调度均为可串行化的。,封锁粒度,概念:封锁的对象可以是表、也可以是元组等,我们把封锁对象的大小称为封锁粒度(Granularity)。 封锁的对象可以是逻辑单元(如表和元组等),也可以是物理单元(如数据页和数据块等)。 数据库管理系统一般都具有多粒度锁定功能,允许一个事务锁定不同类型的
24、资源。,封锁粒度,封锁粒度与系统的并发度和并发控制的开销密切相关。 锁定在较小的粒度(例如行)可以增加并发操作的性能,但系统开销也较大。这是因为如果封锁的粒度小,则意味着需要的锁多,从而需要系统控制更多的锁。 锁定在较大的粒度(例如表)会降低操作的并发性,这是因为锁定整个表限制了其他事务对表中任意部分进行访问。封锁粒度大,则不需要太多的封锁,由于需要维护的锁较少,所以系统开销较低。,意向锁,为了降低封锁的成本,提高并发的性能,数据库管理系统还支持一种意向锁(Intention Lock)。 概念: 意向锁表示一种封锁意向,意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;
25、对任一结点加锁时,必须先对它的上层结点加意向锁。 例如,在表级实施共享意向锁表示事务打算在表中的元组上实施共享锁,这样做可以防止另一个事务随后在同样的资源上获取排它锁。 作用: 意向锁可以提高性能,因为系统仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁;而无须检查表中的每个元组上的锁,以确定事务是否可以锁定整个表。,意向锁,意向共享(IS) 意向排它(IX) 共享意向排它(SIX),意向共享(IS),通过在各资源上放置IS锁,表明事务的意向是读取层次结构中的部分(而不是全部)底层资源。 例如,对表实施IS锁,则意味着要对表中的某个(些)元组实施S锁; 或者说,当需要对表中的某个(些)
26、元组实施S锁时,应该首先对表实施IS锁。,意向排它(IX),通过在各资源上放置IX锁,表明事务的意向是修改层次结构中的部分(而不是全部)底层资源。 例如,对表实施IX锁,则意味着要对表中的某个(些)元组实施X锁; 或者说,当需要对表中的某个(些)元组实施X锁时,应该首先对表实施IX锁。,共享意向排它(SIX),通过在各资源上放置SIX锁,表明事务的意向是读取层次结构中的全部底层资源并修改部分(而不是全部)底层资源。 SIX锁等同于加S锁、再加IX锁。 例如,对表实施SIX锁,则意味着要读取整个表(所以对表加S锁),并会更新表中的某个(些)元组(所以对该表加IX锁); 或者说,当需要对表实施S锁
27、,并对表中的某个(些)元组实施X锁时,应该首先对表实施SIX锁。,隔离级别,隔离性虽然是事务的基本性质之一,但是彻底的隔离意味着并发操作效率的降低。所以人们设想在避免干扰的前提下,适当地降低隔离的级别,从而提高并发的操作效率。隔离级别越低,并发操作的效率越高,但是产生干扰的可能性也越大;隔离级别越高,则并发操作的效率越低,同时产生干扰的可能性也越小。在设计应用时,可以在所能容忍的干扰程度范围内,尽可能的降低隔离级别,从而提高应用的执行效率。,隔离级别,在SQL标准中定义了下列四种隔离级别,SQL Server支持所有这些隔离级别: 未提交读(READ UNCOMMITTED):事务隔离的最低级
28、别,仅可保证不读取物理损坏的数据,这是四个隔离级别中限制最小的级别。 提交读(READ COMMITTED):SQL Server默认级别,可以保证不读取“脏”数据。 可重复读(REPEATABLE READ):可以保证读一致性,避免不一致分析问题。 可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离;如果事务在可串行化隔离级别上运行,则可以保证任何并发重叠事务均是串行的。,隔离级别,四种隔离级别所允许的不同类型的行为,事务必须运行于可重复读或更高的隔离级别才可以防止丢失更新。,隔离级别,设置隔离级别的命令是: SET TRANSACTION ISOLATION LEV
29、EL READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE ,封锁与隔离级别,可以通过指定隔离级别或对数据资源实施封锁达到事务隔离的目的; 封锁是实现并发操作的传统方法(在SQL标准中没有提及封锁),适当的运用封锁并保证高并发操作性能是一件非常复杂的工作,这需要用户深入了解各种封锁的相容性,并设计封锁的调度策略; SQL标准中规定了事务的隔离级别,即未提交读、提交读、可重复读和可串行化,隔离级别解决了并发事务可能产生的丢失更新问题、未提交依赖问题、不一致分析问题和幻象读问题,其中为了避免丢失更新问题,事务必须运行在
30、可重复读或可串行化隔离级别。 用户可以根据事务的需要设定隔离级别,结果由数据库管理系统控制封锁和进行并发操作调度。,封锁与隔离级别,在实际应用中,也可以将隔离级别和封锁结合起来使用。例如,如果指定隔离级别是可重复读,则SQL会话中所有SELECT语句的锁定行为都运行于该隔离级别上,并一直保持有效,直到会话终止或者将隔离级别设置为另一个级别。如果必要,可以通过指定表级封锁来替代单个SELECT语句的隔离级别,指定表级封锁不会影响会话中的其他语句。一般仅在绝对必要时才使用表级封锁更改默认的锁定行为。,实验10 并发控制,内容:事务、封锁、死锁和并发控制。 目的:理解和体会事务、封锁死锁和并发控制等
31、内容,加强对DBMS功能的认识。 要求: 若干学生分组,共同完成本实验。 设计一组操作,产生“脏”读问题,然后通过封锁避免“脏”读问题。 设计一组操作,产生不可重复读问题,然后通过封锁避免不可重复读问题。 设计一组操作,产生丢失更新问题,然后通过封锁避免丢失更新问题。 设计一组产生死锁的操作,再利用相同顺序法和一次封锁法有效的避免死锁。 在实验报告中要出具体的操作步骤和过程,并针对各种情况做出具体分析和讨论,更好的体会事务的性质和并发控制的作用。,恢 复,故障类型 备份类型 日志的概念 恢复模型 备份或转储 恢复或还原,故障类型,事务内部的故障 事务内部的故障大多是非预期的,不能由应用程序处理
32、的,如运算溢出、并发事务发生死锁、违反了某些完整性约束等。 系统故障(软故障Soft Crash) 系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。 系统断电引起的事务中断 硬件故障引起的事务中断 DBMS代码错误引起的事务中断 操作系统故障引起的事务中断 发生系统故障时,恢复子系统除需要撤销所有未完成的事务外,还需要重做所有已提交的事务。 介质故障 (硬故障 Hard Crash) 计算机病毒 总结:数据库中的数据恢复的基本原理是冗余。建立冗余数据最常用的技术是数据转储和登录日志文件。,备份(转储)类型,双机热备份 双工备份 磁盘镜像 冗余磁盘阵列 数据库备份技术,日志的概念,日
33、志则是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操作。这样就可以在备份完成时立刻刷新并启用一个数据库日志,数据库日志是实时的,它将忠实地记录下所有对数据库的更新操作。 当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(恢复大部分数据),然后再运行数据库日志,即将备份后所做的更新操作再重新做一遍,从而将数据库完全恢复。 为了保证日志的安全,应该将日志和主数据库安排在不同的存储设备上,否则日志和数据库可能会同时遭到破坏,日志也就失去了它本来的作用。,恢复模型,简单恢复模型 允许将数据库恢复到最新的备份,即使用简单恢复模型可以将数据库恢复到上次备份的即时点,而无
34、法将数据库恢复到故障点或特定的即时点。使用简单恢复模型,日志实际失去了作用。使用简单恢复模型的数据库只能做数据库备份,不能做日志备份。 完全恢复模型 允许将数据库恢复到故障点状态,即完全恢复模型使用数据库备份和事务日志备份提供对介质故障的完全防范。,恢复模型,可以使用ALTER DATABASE语句的RECOVERY子句设置恢复模型。 例1:如下语句将订货数据库的恢复模型设置为完全恢复: ALTER DATABASE 订货 SET RECOVERY FULL 例2:如下语句将订货数据库的恢复模型设置为简单恢复模型: ALTER DATABASE 订货 SET RECOVERY SIMPLE,备
35、份或转储,备份的类型 动态备份和静态备份 制定备份的策略 备份整个数据库 增量备份 事务日志备份 文件和文件组备份 系统数据库的备份,备份的类型,全备份(或称海量转储):即完整的备份整个数据库; 增量备份:增量数据库备份只备份自上次数据库备份后发生更改的数据; 文件和文件组备份:备份数据库文件或文件组,而不是备份数据库; 事务日志备份:只备份事务日志。,动态备份和静态备份,动态备份也称作在线备份,即在做备份时不中断数据库的运行,不中断数据库上的应用程序和事务处理。 静态备份也称作离线或脱机备份,这意味着在做备份时没有任何数据库事务在运行,这种备份方式应是首选的备份方式。,制定备份的策略,备份不
36、是实时的,备份应该什么时候做?用什么方式做?这根据数据库的不同规模、不同用途,可能有很多因素需要考虑和衡量。需要考虑如下一些因素: 1)备份周期,按月、周、天、小时; 2)使用静态备份还是动态备份; 3)使用什么类型的备份(全备份还是增量备份); 4)使用什么介质进行备份,磁盘还是磁带; 5)是人工备份,还是设计一个程序定期自动备份; 6)备份介质的存放地是否防窃、防磁、防火; 7)是否需要授予其他用户备份的权限。,备份整个数据库,在SQL Server中系统管理员和数据库管理员可以进行备份,也可以指定某个用户担当db_backupoperator角色(数据库预定义角色)来负责数据库的备份工作
37、。 所有的备份工作可以在“企业管理器”中利用交互工具完成,也可以使用命令方式完成。,备份整个数据库,备份数据库的命令是BACKUP DATABASE,一般格式如下: BACKUP DATABASE database_name TO DISK | TAPE =physical_backup_device_name 例如,如下命令将订货数据库备份到C:dumpdump1.bak: BACKUP DATABASE 订货 TO DISK=C:dumpdumpfull.bak,增量备份,增量备份的命令也是BACKUP DATABASE,一般格式如下: BACKUP DATABASE database_n
38、ame TO DISK | TAPE =physical_backup_device_name WITH DIFFERENTIAL 例如,如下命令将对订货数据库做增量备份(备份到C:dumpdump1.bak): BACKUP DATABASE 订货 TO DISK=C:dumpdump1.bak WITH DIFFERENTIAL,事务日志备份,备份事务日志的命令是BACKUP LOG,一般格式是: BACKUP LOG database_name TO DISK | TAPE =physical_backup_device_name 例如,如下命令将备份订货数据库的日志(备份到C:dump
39、dumplog.bak): BACKUP LOG 订货 TO DISK=C:dumpdumplog.bak,截断日志,截断日志的命令是: BACKUP LOG database_name WITHTRUNCATE_ONLY 例如,在备份了订货数据库或事务日志后,为了截断订货管理数据库的事务日志可以使用如下命令: BACKUP LOG 订货 WITH TRUNCATE_ONLY,文件和文件组备份,可以备份和恢复数据库中的个别文件,这样当遇到介质故障时可以只恢复已损坏的文件,而不用恢复数据库的其余部分,从而加快了恢复速度。 对于超大型数据库,有时不可能完成完整数据库的备份,这样则可以使用文件备份。
40、文件备份为数据库备份提供了一种灵活的手段。 与数据库备份相比,文件备份的主要缺点是增加了管理的复杂性。必须注意维护完整的文件备份集和所覆盖的日志备份。,文件和文件组备份,备份文件或文件组的一般命令格式是: BACKUP DATABASE database_name FILE = logic_file_list | FILEGROUP = filegroup_list TO DISK | TAPE =physical_backup_device_name WITH DIFFERENTIAL ,文件和文件组备份,例如,如下命令完成对订货数据库warehouse文件的备份: BACKUP DATAB
41、ASE 订货 FILE = warehouse TO DISK =C:dumpfile_1.bak 如下命令则完成对订货数据库文件组仓库的备份: BACKUP DATABASE 订货 FILEGROUP = 仓库 TO DISK =C:dumpfile_g.bak,系统数据库的备份,数据库备份不仅仅是要备份用户数据库,系统数据库也需要备份,例如SQL Server中的master、model和msdb等系统数据库。特别是master数据库,它负责整个数据库的管理,所有用户创建的数据库以及用户登录信息都存储在该数据库中。所以,该数据库一旦损坏,整个系统的使用都将受到影响。,恢复或还原,恢复整个数
42、据库 恢复数据库的部分内容 恢复特定的文件或文件组 恢复事务,可以将数据库恢复到做备份的即时点、发生故障的即时点或特定的事务即时点。,恢复或还原,根据数据库全备份进行恢复 根据增量备份进行恢复 根据事务日志进行恢复 根据文件或文件组备份进行恢复 恢复系统数据库,根据数据库全备份进行恢复,RESTORE DATABASE database_name FROM DISK | TAPE =physical_backup_device_name WITH , NORECOVERY | RECOVERY , REPLACE ,根据增量备份进行恢复,在简单恢复模型和完全恢复模型中都可以选择增量备份,如果存在增量备份,则一般需要进行相应的恢复操作。 增量恢复数据库的命令也是RESTORE DATABASE,但是在根据增量备份继续恢复之前应该:已经使用RESTORE DATABASE命令完成了全备份的恢复,同时指定了NORECOVERY子句。,根据事务日志进行恢复,利用日志可以将数据库恢复到最新的一致状态或任意的事务点。 首先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年厂级员工安全培训考试试题答案典型题
- 2025承包商入厂安全培训考试试题附参考答案(基础题)
- 25年公司、项目部、各个班组三级安全培训考试试题(高清)
- 25年公司、项目部、各个班组安全培训考试试题带答案(达标题)
- 2025新员工入职安全培训考试试题附完整答案【网校专用】
- 25年公司厂级安全培训考试试题含完整答案【历年真题】
- 多维度复习计算机基础考试试题及答案
- 2025工厂员工安全培训考试试题及答案(全优)
- 汽车美容师工作中的情绪调节技巧试题及答案
- 车辆清洗步骤及注意事项试题及答案
- 健康医疗大数据分析合同
- 《SLT 377-2025水利水电工程锚喷支护技术规范》知识培训
- 2024-2025学年人教版(2024)七年级数学下册第八章实数单元检测(含答案)
- 膀胱癌部分切除护理查房
- 儿童心理健康与家庭教育关系
- 2025届山东省临沂市高三下学期一模考试英语试卷(含解析)
- 2025年河南水利与环境职业学院单招职业倾向性测试题库学生专用
- 2025年人体捐献协议
- 专题06+函数与导数领域中的典型压轴小题全归纳与剖析课件
- 员工黄赌毒法制培训
- 广东省广州市番禺区2023-2024学年八年级上学期期末英语试题(答案)
评论
0/150
提交评论