版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 事务管理,8.1 事 务 8.2 并发控制 8.3 恢 复,深入理解事务的基本概念和基本性质; 深入理解各种干扰现象和并发控制的必要性,熟练掌握事务隔离性、封锁等并发控制手段; 深入理解日志与灾难恢复的概念,熟练掌握数据库的备份和恢复技术 .,学习目标:,主要内容:,8.1 事 务,8.1事务的概念 8.2事务的性质 8.3SQL对事务的支持,第8章 事务管理,8.1.1事务的概念,事务是构成单一逻辑工作单元的操作集合。 为什么需要事务的概念呢? 恢复的需要 并发操作的需要,第8章 事务管理,8.1 事 务,8.1.2事务的性质,原子性(Atomicity) 一致性(Consisten
2、cy) 隔离性(Isolation) 持久性(Durability),事务的这些性质通常称为ACID特性,第8章 事务管理,8.1 事 务,1) 原子性,事务的原子性强调了一个事务是一个逻辑工作单元,是一个整体,是不可分割的。一个事务所包含的操作要么全部做,要么全部不做。,第8章 事务管理,8.1 事 务,8.1.2事务的性质,2)一致性,一个事务执行一项数据库操作,事务将使数据库从一种一致性的状态变换成另一种一致性状态。 在事务执行前,总是假设数据库是一致的,那么当事务成功执行后,数据库肯定仍然是一致的。,第8章 事务管理,8.1 事 务,8.1.2事务的性质,3)隔离性,如果每个事务单独执
3、行能保持原子性和一致性,这些事务并发执行也能保持原子性和一致性,则是事务的隔离性。,第8章 事务管理,8.1 事 务,8.1.2事务的性质,4)持久性,事务的持久性是指一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。,第8章 事务管理,8.1 事 务,8.1.2事务的性质,8.1.3 SQL对事务的支持,开始事务 结束事务 事务保存点 隐含事务与自动提交,第8章 事务管理,8.1 事 务,1)开始事务,使用BEGIN TRANSACTION命令显式说明一个事务开始,它说明了对数据库进行操作的一个单元的起始点。在事务完成之前出现任何操作错误和故障,都可以撤销事务,使事务回退到这个起始
4、点。,第8章 事务管理,8.1 事 务,8.1.3 SQL对事务的支持,2)结束事务,成功结束事务的命令是COMMIT TRANSACTION,它的作用是提交或确认事务已经完成,所以该命令也称作事务提交。 撤消事务的命令是ROLLBACK TRANSACTION,即撤消在该事务中对数据库所做的更新操作,使数据库回退到事务的起始点。,第8章 事务管理,8.1 事 务,8.1.3 SQL对事务的支持,3)事务保存点,第8章 事务管理,8.1 事 务,8.1.3 SQL对事务的支持,点的命令是SAVE存SQL Server支持事务保存点技术,设置保TRANSACTION(在SQL标准中是SAVEPO
5、INT命令),具体格式是: SAVE TRANSACTION savepoint_name 撤消部分事务或回退到事务保存点的命令也是ROLLBACK TRANSACTION,具体格式是: ROLLBACK TRANSACTION savepoint_name,SQL标准还支持“事务保存点”技术,所谓事务保存点就是在事务的过程中插入若干标记,这样当发现事务中有操作错误时,可以不撤消整个事务,只撤消部分事务,即将事务回退到某个事务保存点。,在SQL标准中还支持取消事务保存点的命令RELEASE SAVEPOINT,在SQL Server目前的版本中不支持取消事务保存点。,隐含事务与自动提交,第8章
6、 事务管理,8.1 事 务,8.1.3 SQL对事务的支持,SQL标准规定事务的开始是隐含的,在发出COMMIT(提交事务)或ROLLBACK(撤消事务)命令之前,该事务将一直保持有效。一个事务被提交或撤消之后,又将自动启动下一个新事务。,SQL Server也可以设置成隐含事务方式,设置隐含事务方式的命令是: SET IMPLICIT_TRANSACTIONS ON 取消隐含事务方式的命令是: SET IMPLICIT_TRANSACTIONS OFF,隐含事务与自动提交,第8章 事务管理,8.1 事 务,8.1.3 SQL对事务的支持,当是隐含事务方式时,不需要用BEGIN TRANSAC
7、TION命令显式的启动或开始一个事务,但需要用COMMIT或ROLLBACK命令结束事务; 当是非隐含事务方式时,如果没有用BEGIN TRANSACTION命令显式的启动或开始一个事务,则每条操作数据库的语句都将作为独立的事务被自动提交或撤消,这时候不需要、也不能执行COMMIT或ROLLBACK命令。,8.2并发控制,干扰问题 可串行性 解决干扰封锁 封锁不当死锁 封锁与隔离级别,第8章 事务管理,8.2.1干扰问题,丢失更新问题 未提交依赖问题 不一致分析问题 幻象读问题,第8章 事务管理,8.2并发控制,1)丢失更新问题,例: 旅客A来到A售票处,要买一张15日北京到上海的13次直达快
8、速列车的软卧车票,售票员A(下称用户A)在终端A查看剩余票信息; 几乎在同时,旅客B来到B售票处,也要买一张15日北京到上海的13次直达快速列车的软卧车票,售票员B(下称用户B)从终端B查到了同样的剩余票信息; 旅客A买了一张15日13次7车厢5号下铺的软卧票,用户A更新剩余票信息并将它存入数据库; 这时用户B不知道用户A已经将15日13次7车厢5号下铺的软卧票卖出,使旅客B也买了一张15日13次7车厢5号下铺的软卧票,用户B更新剩余票信息并将它存入数据库(重复了用户A已经做过的更新)。,总的效果:15日13次7车厢5号下铺的软卧票卖了两次。其原因是:允许了用户B在过时的信息基础上去更新数据库
9、,而没有迫使他去看最新的信息。,第8章 事务管理,8.2并发控制,8.2.1干扰问题,丢失更新问题,用SQL术语描述丢失更新问题,第8章 事务管理,8.2并发控制,8.2.1干扰问题,2)未提交依赖问题,未提交依赖问题也称为读“脏”(Dirty Read)数据问题,查询一个已经被其他事务更新、但尚未提交的元组,将会引起未提交依赖问题。,第8章 事务管理,8.2并发控制,8.2.1干扰问题,3)不一致分析问题,不一致分析问题也称为不可重复读问题,很多应用可能需要校验功能,这时往往需要连续两次或多次读数据进行校验和分析,结果由于其他事务的干扰,使得前后结果不一致,从而产生校验错误(即不一致的分析)
10、。,第8章 事务管理,8.2并发控制,8.2.1干扰问题,幻象读问题,幻象读问题与不一致分析问题有关,当事务A读数据时,事务B在对同一个关系进行插入或删除操作,这时事务A再读同一条件的元组时,会发现神秘地多出了一些元组或丢失了一些元组,把这种现象称作幻象读。,第8章 事务管理,8.2并发控制,8.2.1干扰问题,8.2.2可串行性,可串行性通常看作是多个事务并发执行的正确性准则。具体判定方法如下: 各单个事务如能将数据库从一个正确状态转变为另一个正确状态,则认为该事务是正确的; 按任何一个串行顺序依次执行多个事务也是正确的(这里的串行顺序假定各个事务间彼此独立、不交叉); 事务的交叉执行过程是
11、正确的,当且仅当其与串行执行过程等价,则事务是可串行化的。,第8章 事务管理,8.2并发控制,8.2.3封锁,封锁的基本技术 封锁机制 SQL Server中与封锁有关的命令 封锁粒度 意向锁,第8章 事务管理,8.2并发控制,1)封锁的基本技术,当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。 以丢失更新问题为例,实施封锁的基本思想是:当一个用户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻更新相同的表或记录,迫使其他用户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。,第8章 事务管理,8.2并
12、发控制,8.2.3封锁,封锁的基本技术,实施封锁以后的时间序列,第8章 事务管理,8.2并发控制,8.2.3封锁,2)封锁机制,共享封锁 独占封锁 更新封锁,有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束(提交或撤消)时才释放(无论如何,所有的封锁都会在事务结束时自动释放)。,第8章 事务管理,8.2并发控制,8.2.3封锁,(1)共享封锁,共享封锁是为读操作设置的一种封锁,所以也称作读封锁,或简称S锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。这种封锁可以保证最大的并发性,任何数量的用户都可以同时对同样的数据施加这种共享锁
13、。已经实施共享锁的表拒绝来自其他事务的独占封锁和更新封锁。,第8章 事务管理,8.2并发控制,8.2.3封锁,2)封锁机制,(2)独占封锁,独占封锁也叫排他封锁,它是为修改操作设置的一种封锁,也称为写封锁,或简称为X锁,这是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但不拒绝一般的查询操作。,第8章 事务管理,8.2并发控制,8.2.3封锁,2)封锁机制,(3)更新封锁,当需要对一个记录或一组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁
14、的记录,拒绝来自其他用户的任何封锁,但不拒绝一般的查询操作。,第8章 事务管理,8.2并发控制,8.2.3封锁,2)封锁机制,3)SQL Server中与封锁有关的命令,SQL Server的封锁操作是在相关语句的“WITH ()”子句中完成的,该短语可以在SELECT、INSERT、UPDATE和DELETE等语句中指定表级锁定的方式和范围。,第8章 事务管理,8.2并发控制,8.2.3封锁,3)SQL Server中与封锁有关的命令,常用的封锁关键词有: TABLOCK:对表施行共享封锁,在读完数据后立刻释放封锁,此类封锁可以避免读“脏”数据,但不具有可重复读的特性。 HOLDLOCK:与
15、TABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁,这样可以保证数据的可重复独特性。 NOLOCK:不进行封锁,此关键词仅应用于SELECT语句,这样可能会读取未提交事务的数据,即有可能发生“脏”读。 TABLOCKX:对表实施独占封锁。 UPDLOCK:对表中的指定元组实施更新封锁;这时其他事务可以对同一表中的其他元组也实施更新封锁,但是不允许对表实施共享封锁和独占封锁。,第8章 事务管理,8.2并发控制,8.2.3封锁,3)SQL Server中与封锁有关的命令, DECLARE d datetime, t char(6), s char(2), n char(
16、10) BEGIN TRANSACTION SELECT n=座位号 FROM R WITH (UPDLOCK) WHERE 日期 = 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 ,第8章 事务管理,8.2并发控制,8.2.3封锁,4)封锁粒度,封锁的对象可以是表、也可以是元组等,我们把封锁对象的大小称为封锁粒度(Granularit
17、y)。 封锁的对象可以是逻辑单元(如表和元组等),也可以是物理单元(如数据页和数据块等)。 数据库管理系统一般都具有多粒度锁定功能,允许一个事务锁定不同类型的资源。,第8章 事务管理,8.2并发控制,8.2.3封锁,4)封锁粒度,锁定在较小的粒度(例如行)可以增加并发操作的性能,但系统开销也较大。这是因为如果封锁的粒度小,则意味着需要的锁多,从而需要系统控制更多的锁。 锁定在较大的粒度(例如表)会降低操作的并发性,这是因为锁定整个表限制了其他事务对表中任意部分进行访问。封锁粒度大,则不需要太多的封锁,由于需要维护的锁较少,所以系统开销较低。,第8章 事务管理,8.2并发控制,8.2.3封锁,5
18、)意向锁,为了降低封锁的成本,提高并发的性能,数据库管理系统还支持一种意向锁(Intention Lock)。 意向锁表示一种封锁意向,当需要在某些底层资源上(如元组)获取封锁时,可以先对高层资源(如表)实施意向锁。例如,在表级实施共享意向锁表示事务打算在表中的元组上实施共享锁,这样做可以防止另一个事务随后在同样的资源上获取排它锁。意向锁可以提高性能,因为系统仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁;而无须检查表中的每个元组上的锁,以确定事务是否可以锁定整个表。,第8章 事务管理,8.2并发控制,8.2.3封锁,5)意向锁,意向共享(IS) 意向排它(IX) 共享意向排它(SI
19、X),第8章 事务管理,8.2并发控制,8.2.3封锁,(1)意向共享(IS),通过在各资源上放置IS锁,表明事务的意向是读取层次结构中的部分(而不是全部)底层资源。 例如,对表实施IS锁,则意味着要对表中的某个(些)元组实施S锁; 或者说,当需要对表中的某个(些)元组实施S锁时,应该首先对表实施IS锁。,第8章 事务管理,8.2并发控制,8.2.3封锁,5)意向锁,(2)意向排它(IX),通过在各资源上放置IX锁,表明事务的意向是修改层次结构中的部分(而不是全部)底层资源。 例如,对表实施IX锁,则意味着要对表中的某个(些)元组实施X锁; 或者说,当需要对表中的某个(些)元组实施X锁时,应该
20、首先对表实施IX锁。,第8章 事务管理,8.2并发控制,8.2.3封锁,5)意向锁,(3)共享意向排它(SIX),通过在各资源上放置SIX锁,表明事务的意向是读取层次结构中的全部底层资源并修改部分(而不是全部)底层资源。 SIX锁等同于加S锁、再加IX锁。 例如,对表实施SIX锁,则意味着要对表实施S锁,并对表中的某个(些)元组实施X锁; 或者说,当需要对表实施S锁,并对表中的某个(些)元组实施X锁时,应该首先对表实施SIX锁。,第8章 事务管理,8.2并发控制,8.2.3封锁,5)意向锁,8.2.4死锁,产生死锁的原因 避免死锁 发现死锁 解决死锁,第8章 事务管理,8.2并发控制,1)产生
21、死锁的原因,右图示意了两个并发事务所发生事件的序列,假设程序A为了完成某个事务需要封锁仓库和职工两个关系,而几乎在同一时刻并发执行的程序B为完成另一个事务也需要封锁职工和仓库关系,这两个程序正好按照如图所示的交错序列执行命令,结果两个程序都为了等待对方释放数据资源而产生死锁。,第8章 事务管理,8.2并发控制,8.2.4死锁,2)避免死锁,相同顺序法 所有的用户程序约定都按相同的顺序来封锁表 一次封锁法 为了完成一个事务,一次性封锁所需要的全部表 两阶段封锁协议 所有事务都必须将对数据的封锁分为封锁和释放两个阶段,第8章 事务管理,8.2并发控制,8.2.4死锁,避免死锁的封锁,第8章 事务管
22、理,8.2并发控制,8.2.4死锁,2)避免死锁,两阶段封锁协议,第一阶段称为扩展阶段,这一阶段获得各种类型的封锁,但是不能释放任何封锁。 第二阶段称为收缩阶段,这一阶段释放各种类型的封锁,一旦开始释放封锁,则不能再申请任何类型的封锁。 注意,两阶段封锁协议和一次封锁法的异同之处。一次封锁法遵守两阶段封锁协议;但是两阶段封锁协议并不要求一次封锁所有需要封锁的数据。两阶段封锁协议仍有可能发生死锁。,第8章 事务管理,8.2并发控制,8.2.4死锁,2)避免死锁,3)(A)发现死锁,超时法 即一个事务在等待的时间超过了规定的时限后就认为发生了死锁。 这种方法非常不可靠,如果设置的等待时限长,则不能
23、及时发现死锁;如果设置的等待时限短,则可能会将没有发生死锁的事务误判为死锁。,第8章 事务管理,8.2并发控制,8.2.4死锁,3)(A)发现死锁,等待图法 即通过有向图判定事务是否是可串行化的,如果是则说明没有发生死锁,否则说明发生了死锁。 具体思路是:用节点来表示正在运行的事务,用有向边来表示事务之间的等待关系,如右图所示,如果有向图中发现回路,则说明发生了死锁。,第8章 事务管理,8.2并发控制,8.2.4死锁,3)(B)解决死锁,发现死锁后解决死锁的一般策略是:自动使“年轻”的事务(即完成工作量少的事务)先退回去,然后让“年老”的事务(即完成工作量多的事务)先执行,等“年老”的事务完成
24、并释放封锁后,“年轻”的事务再重新执行。,第8章 事务管理,8.2并发控制,8.2.4死锁,8.2.5隔离级别(1),隔离性虽然是事务的基本性质之一,但是彻底的隔离意味着并发操作效率的降低。所以人们设想在避免干扰的前提下,适当地降低隔离的级别,从而提高并发的操作效率。隔离级别越低,并发操作的效率越高,但是产生干扰的可能性也越大;隔离级别越高,则并发操作的效率越低,同时产生干扰的可能性也越小。在设计应用时,可以在所能容忍的干扰程度范围内,尽可能的降低隔离级别,从而提高应用的执行效率。,第8章 事务管理,8.2并发控制,8.2.5隔离级别(2),在SQL标准中定义了下列四种隔离级别,SQL Ser
25、ver支持所有这些隔离级别: 未提交读(READ UNCOMMITTED):事务隔离的最低级别,仅可保证不读取物理损坏的数据,这是四个隔离级别中限制最小的级别。 提交读(READ COMMITTED):SQL Server默认级别,可以保证不读取“脏”数据。 可重复读(REPEATABLE READ):可以保证读一致性,避免不一致分析问题。 可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离;如果事务在可串行化隔离级别上运行,则可以保证任何并发重叠事务均是串行的。,第8章 事务管理,8.2并发控制,8.2.5隔离级别(3),四种隔离级别所允许的不同类型的行为,事务必须运
26、行于可重复读或更高的隔离级别才可以防止丢失更新。,第8章 事务管理,8.2并发控制,8.2.5隔离级别(4),设置隔离级别的命令是: SET TRANSACTION ISOLATION LEVEL READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE ,第8章 事务管理,8.2并发控制,8.2.6封锁与隔离级别 (1),可以通过指定隔离级别或对数据资源实施封锁达到事务隔离的目的; 封锁是实现并发操作的传统方法(在SQL标准中没有提及封锁),适当的运用封锁并保证高并发操作性能是一件非常复杂的工作,这需要用户深入了解各
27、种封锁的相容性,并设计封锁的调度策略; SQL标准中规定了事务的隔离级别,即未提交读、提交读、可重复读和可串行化,隔离级别解决了并发事务可能产生的丢失更新问题、未提交依赖问题、不一致分析问题和幻象读问题,其中为了避免丢失更新问题,事务必须运行在可重复读或可串行化隔离级别。 用户可以根据事务的需要设定隔离级别,结果由数据库管理系统控制封锁和进行并发操作调度。,第8章 事务管理,8.2并发控制,8.2.4死锁,8.2.6封锁与隔离级别(2),在实际应用中,也可以将隔离级别和封锁结合起来使用。例如,如果指定隔离级别是可重复读,则SQL会话中所有SELECT语句的锁定行为都运行于该隔离级别上,并一直保
28、持有效,直到会话终止或者将隔离级别设置为另一个级别。如果必要,可以通过指定表级封锁来替代单个SELECT语句的隔离级别,指定表级封锁不会影响会话中的其他语句。一般仅在绝对必要时才使用表级封锁更改默认的锁定行为。,第8章 事务管理,8.2并发控制,8.3恢 复,故障类型 备份类型 日志的概念 恢复模型 备份或转储 恢复或还原,第8章 事务管理,8.3恢 复,第8章 事务管理,8.3.1 数据库恢复概述,8.3.2故障类型,造成事务中断的故障 突然掉电引起的事务中断 硬件故障引起的事务中断 客户应用程序出错引起的事务中断 系统程序故障引起的事务中断 磁盘介质故障,第8章 事务管理,8.3恢 复,8
29、.3.3备份类型,双机热备份 双工备份 磁盘镜像 数据库备份技术,8.3恢 复,第8章 事务管理,8.3.4日志的概念,日志则是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操作。这样就可以在备份完成时立刻刷新并启用一个数据库日志,数据库日志是实时的,它将忠实地记录下所有对数据库的更新操作。 当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(恢复大部分数据),然后再运行数据库日志,即将备份后所做的更新操作再重新做一遍,从而将数据库完全恢复。 为了保证日志的安全,应该将日志和主数据库安排在不同的存储设备上,否则日志和数据库可能会同时遭到破坏,日志也就失去了它本来
30、的作用。,8.3恢 复,第8章 事务管理,8.3.5恢复模型 (1),简单恢复模型 允许将数据库恢复到最新的备份,即使用简单恢复模型可以将数据库恢复到上次备份的即时点,而无法将数据库恢复到故障点或特定的即时点。使用简单恢复模型,日志实际失去了作用。使用简单恢复模型的数据库只能做数据库备份,不能做日志备份。 完全恢复模型 允许将数据库恢复到故障点状态,即完全恢复模型使用数据库备份和事务日志备份提供对介质故障的完全防范。,8.3恢 复,第8章 事务管理,8.3.5恢复模型(2),可以使用ALTER DATABASE语句的RECOVERY子句设置恢复模型。 例如,如下语句将订货数据库的恢复模型设置为
31、完全恢复: ALTER DATABASE 订货 SET RECOVERY FULL,8.3恢 复,第8章 事务管理,8.3.6备份或转储,备份的类型 动态备份和静态备份 制定备份的策略 备份整个数据库 增量备份 事务日志备份 文件和文件组备份 系统数据库的备份,8.3恢 复,第8章 事务管理,1)备份的类型,全备份:即完整的备份整个数据库; 增量备份:增量数据库备份只备份自上次数据库备份后发生更改的数据; 文件和文件组备份:备份数据库文件或文件组,而不是备份数据库; 事务日志备份:只备份事务日志。,8.3恢 复,第8章 事务管理,8.3.6备份或转储,2)动态备份和静态备份,动态备份也称作在线
32、备份,即在做备份时不中断数据库的运行,不中断数据库上的应用程序和事务处理。 静态备份也称作离线或脱机备份,这意味着在做备份时没有任何数据库事务在运行,这种备份方式应是首选的备份方式。,8.3恢 复,第8章 事务管理,8.3.6备份或转储,3)制定备份的策略,备份不是实时的,备份应该什么时候做?用什么方式做?这根据数据库的不同规模、不同用途,可能有很多因素需要考虑和衡量。,8.3恢 复,第8章 事务管理,8.3.6备份或转储,4)备份整个数据库(1),在SQL Server中系统管理员和数据库管理员可以进行备份,也可以指定某个用户担当db_backupoperator角色(数据库预定义角色)来负
33、责数据库的备份工作。 所有的备份工作可以在“企业管理器”中利用交互工具完成,也可以使用命令方式完成。,8.3恢 复,第8章 事务管理,8.3.6备份或转储,4)备份整个数据库(2),备份数据库的命令是BACKUP DATABASE,一般格式如下: BACKUP DATABASE database_name TO DISK | TAPE =physical_backup_device_name 例如,如下命令将订货数据库备份到C:dumpdump1.bak: BACKUP DATABASE 订货 TO DISK=C:dumpdumpfull.bak,8.3恢 复,第8章 事务管理,8.3.6备份
34、或转储,5)增量备份,增量备份的命令也是BACKUP DATABASE,一般格式如下: BACKUP DATABASE database_name TO DISK | TAPE =physical_backup_device_name WITH DIFFERENTIAL 例如,如下命令将对订货数据库做增量备份(备份到C:dumpdump1.bak): BACKUP DATABASE 订货 TO DISK=C:dumpdump1.bak WITH DIFFERENTIAL,8.3恢 复,第8章 事务管理,8.3.6备份或转储,6)事务日志备份(1),备份事务日志的命令是BACKUP LOG,一般
35、格式是: BACKUP LOG database_name TO DISK | TAPE =physical_backup_device_name 例如,如下命令将备份订货数据库的日志(备份到C:dumpdumplog.bak): BACKUP LOG 订货 TO DISK=C:dumpdumplog.bak,8.3恢 复,第8章 事务管理,8.3.6备份或转储,截断日志,截断日志的命令是: BACKUP LOG database_name WITHTRUNCATE_ONLY 例如,在备份了订货数据库或事务日志后,为了截断订货管理数据库的事务日志可以使用如下命令: BACKUP LOG 订货
36、WITH TRUNCATE_ONLY,8.3恢 复,第8章 事务管理,8.3.6备份或转储,7)文件和文件组备份 (1),可以备份和恢复数据库中的个别文件,这样当遇到介质故障时可以只恢复已损坏的文件,而不用恢复数据库的其余部分,从而加快了恢复速度。 对于超大型数据库,有时不可能完成完整数据库的备份,这样则可以使用文件备份。文件备份为数据库备份提供了一种灵活的手段。 与数据库备份相比,文件备份的主要缺点是增加了管理的复杂性。必须注意维护完整的文件备份集和所覆盖的日志备份。,8.3恢 复,第8章 事务管理,8.3.6备份或转储,文件和文件组备份(2),备份文件或文件组的一般命令格式是: BACKU
37、P DATABASE database_name FILE = logic_file_list | FILEGROUP = filegroup_list TO DISK | TAPE =physical_backup_device_name WITH DIFFERENTIAL ,8.3恢 复,第8章 事务管理,8.3.6备份或转储,文件和文件组备份(3),例如,如下命令完成对订货数据库warehouse文件的备份: BACKUP DATABASE 订货 FILE = warehouse TO DISK =C:dumpfile_1.bak 如下命令则完成对订货数据库文件组仓库的备份: BACKU
38、P DATABASE 订货 FILEGROUP = 仓库 TO DISK =C:dumpfile_g.bak,8.3恢 复,第8章 事务管理,8.3.6备份或转储,8)系统数据库的备份,数据库备份不仅仅是要备份用户数据库,系统数据库也需要备份,例如SQL Server中的master、model和msdb等系统数据库。特别是master数据库,它负责整个数据库的管理,所有用户创建的数据库以及用户登录信息都存储在该数据库中。所以,该数据库一旦损坏,整个系统的使用都将受到影响。,8.3恢 复,第8章 事务管理,8.3.6备份或转储,8.3.7恢复或还原,恢复整个数据库 恢复数据库的部分内容 恢复特
39、定的文件或文件组 恢复事务,可以将数据库恢复到做备份的即时点、发生故障的即时点或特定的事务即时点。,8.3恢 复,第8章 事务管理,8.3.7恢复或还原,根据数据库全备份进行恢复 根据增量备份进行恢复 根据事务日志进行恢复 根据文件或文件组备份进行恢复 恢复系统数据库,8.3恢 复,第8章 事务管理,1)根据数据库全备份进行恢复,RESTORE DATABASE database_name FROM DISK | TAPE =physical_backup_device_name WITH , NORECOVERY | RECOVERY , REPLACE ,8.3恢 复,第8章 事务管理,8.3.7恢复或还原,2)根据增量备份进行恢复,在简单恢复模型和完全恢复模型中都可以选择增量备份,如果存在增量备份,则一般需要进行相应的恢复操作。 增量恢复数据库的命令也是RESTORE DATABASE,但是在根据增量备份继续恢复之前应该:已经使用RESTORE DATABASE命令完成了全备份的恢复,同时指定了NORECOVERY子句。,8.3恢 复,第8章 事务管理,8.3.7恢复或还原,3)根据事务日志进行恢复,利用日志可以将数据库恢复到最新的一致状态或任意的事
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级下册数学教案-第一单元第2课时 平面图形的拼组 人教版
- 生鲜行业人才培训方案
- 加油站电力中断应急预案
- 2024年健身器材配件区域销售合同
- xx河长制“一河一策”实施方案
- 2024年产品代理销售与区域分销合同
- 非营利组织艺术活动评价方案
- 农田水利工程模板支撑方案
- 城市公共卫生管理方案
- 公路与隧道基础施工方案
- 岗台总校后勤管理参观考察心得体会
- 物业管理职业生涯规划书
- 第6课+三国两晋南北朝政权更迭与民族交融(教学设计)【中职专用】《中国历史》(高教版2023基础模块)
- 化工行业仓库管理与供应链优化方案
- 慢性伤口护理健康宣教课件
- 中国居民膳食指南(全)
- 建筑施工电动运输车辆进场验收表
- 《团队管理课件:如何建立高绩效团队》
- 数字化药房系统新趋势及优势
- XX元器件选用报告
- 负弯矩张拉自动生成表格
评论
0/150
提交评论