资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十章 数据库恢复技术,1,教学目的:,理解事务的相关概念及其特性,理解三种故障以及其恢复技术,掌握backup和restore命令,重点难点:,事务的概念和特性,教学方法:,多媒体教学,教学课时:,2课时,2,10.1 事务的基本概念,事务,(transaction)是用户为完成一次任务所进行的一系列操作(一段用户程序)或者是为完成某种,任务,在机器上单独执行的一个程序。这些操作要么全做,要么全不做,是一个不可分割的工作单元。,3,例:某公司在银行中有A,B两个帐号,现在公司想从帐号A中取出1万元,存入帐号B。那么在A中取出1万元的操作和在B中增加1万元的操作要么都成功完成,要么都不做。因此,需要把这二个操作定义在一个事务中。,银行转帐:事务T从A帐户过户10000到B帐户。,T:read(A);,A:=A 10000;,write(A);,read(B);,B:=B+10000;,write(B);,read(X):,从数据库传送数据项X到事务的工作区中。,write(X):,从事务的工作区中将数据项X写回数据库。,4,事务是一种机制,它确保多个SQL语句被当作单个工作单元来处理。,事务的开始与结束可以由,用户显式,控制。如果用户没有显式地定义事务,则,由DBMS按缺省规定自动划分事务,。在SQL语言中,定义事务的语句有三条:,BEGIN TRANSACTION,COMMIT,ROLLBACK,事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回磁盘上的物理数据库中,事务正常结束。,一旦提交就不能撤销。,ROLLABCK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。,5,SQL Server中有关事务处理的语句包括:,BEGIN TRANSACTION,:,建立一个显式,事务,。,COMMIT TRANSACTION,:,标识一个显式,事务或隐式事务正常结束而提交。,SAVE TRANSACTION,:,在事务内,定义,一 个,存储点,标记。,ROLLBACK TRANSACTION,:,回滚,事务。,一、,事务的处理语句,6,(1)定义和提交事务,BEGIN TRANSACTION和COMMIT TRANSACTION的语句格式:,BEGIN TRANSACTION,事务名称,SQL 语句,COMMIT TRANSACTION,说明:,哪些SQL语句组成一个事务由用户根据情况而定。,定义一个事务时,BEGIN TRANSACTION语句与COMMIT TRANSACTION语句必须成对出现。,7,例:,begin transaction hj,delete from student where 学号=b003,delete from sc where 学号=b003,commit transaction,8,回滚事务就是消除事务执行的影响。,语句格式:,ROLLBACK TRANSACTION 事务名称|存储点名称,该语句回滚整个事务或是存储点定义以后所发生的事务。,ROLLBACK TRANSACTION,语句应在,COMMIT TRANSACTION,语句之前调用。因为一旦提交就不能撤销。,(2)回滚事务,例:,begin transaction hj,delete from student where 学号=b004,rollback transaction,9,(3)定义存储点标记,在事务内建立一个存储点标记。在存储点标记之前事务所完成的更新操作已提交到数据库中,不能回滚。在存储点名称标记之后事务执行的,部分,操作可以由ROLLBACK TRANSACTION语句回滚,即只能回滚在存储点名称标记之后事务执行的部分操作。,SAVE TRANSACTION语句的格式为:,SAVE TRANSACTION 存储点名称,10,例:下面例子说明怎样建立一个用户定义事务及事务中的存储点、回滚操作和事务提交操作。,BEGIN TRANSACTION demo,SELECT*FROM student,INSERT student(学号,姓名)VALUES(b100,张三),SAVE TRANSACTION save_demo,/*存储点*/,INSERT student(学号,姓名)VALUES(b101,李四),SELECT*FROM student,ROLLBACK TRANSACTION save_demo,/*回滚*/,COMMIT TRANSACTION,SELECT*FROM student,11,二、,事务的特性,原子性(Atomicity),:all-or-none,A贷方-100万,B借贷+100万,即事务中的诸操作要么都做,要么都不做。当事务非正常终止时,其中间结果将被取消。事务的原子性保证数据库的状态总是从一个一致性的状态变化到另一个一致性的状态,而不会出现不一致的中间状态。,一致性(Consistency),:又称可串行性,并发执行的几个事务,其操作结果应与以某种顺序串行执行这几个事务所得出的结果相同,因此称为可串行性。这种可串行性的并发调度是由数据库系统的并发控制机制来完成的,以保证并发事务执行时的数据库状态的一致。,如转账平衡,A+B的总和不变。,12,分离性(Isolation),:一个事务执行,不被其他事务所干扰。一个没执行完的事务不能在其提交之前把自己的中间结果提供给其他的事务使用。因为未提交的结果不是最终的结果,它有可能在以后的执行中被迫取消,如果其他的事务用到了它的中间结果,那么该事务也要夭折。如果这些事务已有的被提交了,则其结果也不得不被取消,从而和持久性相背,所以隔离性对有效实现事务的概念是非常重要的。,持久性(Durability),:永久性,提交事务后,不受其他操作或故障影响。,13,保证事务ACID特性是事务管理的重要任务。,事务ACID特性可能遭到破坏的因素有:,(1)多个事务并行运行时,不同事务的操作交叉执行。,(2)事务在运行时被强行停止。,在第一种情况下,数据库管理系统必须保证多个事务的交叉运行不影响这些事务的原子性。在第二种情况下,数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响。,14,10.2 数据库恢复概述,数据库恢复操作是指在系统出现故障时,由系统管理员或数据库所有者从数据库备份和日志文件的备份中恢复系统或用户数据库。,数据库恢复的目标是使之恢复到故障发生之前,数据库,最后的,完整性,状态。,15,故障是不可避免的,故障的由来:,计算机硬件故障,系统软件和应用软件的错误,操作员的失误,恶意的破坏,故障造成的影响,运行事务非正常中断,影响数据库数据的正确性,破坏数据库,使数据库全部或部分数据丢失,16,10.3 数据库系统的主要故障,数据库系统可能发生的主要故障有三种:,-事务故障,-系统故障,-介质故障,-计算机病毒,17,事务故障的概念,不丢失信息故障。是指事务在运行过程中由于命令无法执行使事务未运行至正常终止点而夭折的情况。,如:输入数据有误、运算溢出、违反了某些完整性限制、某些应用程序出错、并行事务发生死锁。,事务故障的恢复,发生事务故障时,夭折的事务可能已对数据库进行了修改。恢复程序要在不影响其他事务运行的情况下,,强行回滚,(rollback),该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务好像根本没有启动一样。这类恢复操作称为撤销,(undo),。,1、事务故障,18,例:银行转帐事务,把一笔金额从A转到B。,begin transaction,select balance from accout where account_no=A;,balance_A=balance;,balance_A=Balance_A-amount;,if(balance_A0)then 打印金额不足,不能转帐;,rollback,;,else,update account set balance=balance_A where account_no=A;,select balance from account where account_no=B;,balance_B=balance;,balance_B=balance_B+account;,update account set balance=balance_B where account_no=B;,commit transaction,19,2、系统故障,什么是系统故障,(,软故障,Soft Crash),丢失主存信息故障。是指系统在运行过程中,由于某种原因,,如操作系统或,DBMS,代码错误、操作员操作失误、特定类型的硬件错误,(,如,CPU,故障,),、突然停电等,造成系统停止运行,致使所有正在运行的事务都非正常终止,。,内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受破坏等情况,。,系统故障的恢复,系统故障造成数据库不一致状态的原因有两个,一是一些未完成事务对数据库的更新已写入数据库,二是一些已提交事务对数据库的更新还留在缓冲区,没来得及写入数据库。,因此,,恢复操作就是要撤消故障发生时未完成的事务,重做,(redo),已完成的事务,。,20,3、介质故障,什么是介质故障,(,硬故障,Hard Crash),丢失辅存中信息的故障。是指系统在运行过程中,由于某种硬件故障,,如磁盘损坏、磁头碰撞、或操作系统的某种潜在错误,瞬时强磁场干扰等,使存储在外存中的数据部分丢失或全部丢失的情况。,介质故障的恢复,发生介质故障后,存储在磁盘上的数据被破坏,这时需要装入数据库发生介质故障前某个时刻的数据副本,并重新做自此开始的所有成功事务,将这些事务已提交的结果重新记入数据库中,。,21,4、计算机病毒,什么是计算机病毒,是指是一种人为的故障和破坏,是一些搞恶作剧的人研制的一种计算机程序,可以繁殖和传播。,对数据库系统的影响:,-,占用系统内存,影响数据库系统的运行速度和响应时间,-,破坏数据库文件,造成数据丢失。,应对措施:,通过预防病毒的软件防止病毒侵害,通过杀毒软件检查和消灭病毒,通过修护恢复数据库系统的运行和数据,22,说明:,事务故障和系统故障由系统自动完成的,不需要用户干预,而介质故障的恢复需要DBA的介入,但DBA之需要重装最近转储的数据库副本和有关的各日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成。,三类故障对数据库的影响有两种可能性:,-,数据库本身被破坏介质故障,-,数据库没有破坏,但数据可能不正确,这是因为事务的运行被非正常终止造成的事务故障和系统故障,恢复的基本原理冗余。这就是说,数据库中任何一部分被破坏的或不正确的数据可以根据存储在系统别处的冗余数据来重建。,23,数据库恢复的关键问题是:,第一:如何建立冗余数据,所谓数据冗余,就是备用的数据文本,称为后备副本或后援副本。,第二:如何利用这些冗余数据实施数据库恢复,10.4 恢复的实现技术,建立冗余数据最常用的技术是:,数据转储:即,DBA,定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。,登记日志文件:用来记录事务对数据库的更新操作的文件,通常是两种方法一起使用。,24,10.4,.1 数据库转储(备份),转储状态,动态转储,静态转储,转储方式,海量转储,动态海量转储,静态海量转储,增量转储,动态增量转储,静态增量转储,静态转储:系统中无运行事务时进行,转储期间不允许存取、修改(保证得到一致性副本)。它降低了数据库的可用性。,动态转储:与用户事务并发进行,允许存取、修改。需要记录数据库的修改活动(如建立日志文件)。,海量转储:转储全部数据库内容,
展开阅读全文