《数据库中事务与数据恢复.ppt》由会员分享,可在线阅读,更多相关《数据库中事务与数据恢复.ppt(21页珍藏版)》请在三一办公上搜索。
1、第十三章,事务与数据恢复,了解SQL语句的特点理解事务的概念熟悉事务的特性及应用范围掌握事务控制的基本语句及功能掌握Oracle中事务的实现及应用了解数据库恢复原理了解数据库的故障种类及恢复策略了解Oracle数据库的备份和恢复,1,目标,事务的概念,事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。结构简洁 功能强大 简单易学,2,事务具有以下性质:原子性(atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行;一
2、致性(consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致;隔离性(isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的;持久性(durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。,事务的性质,事务的状态,为了确保数据库中数据的正确性,事务必须处于以下状态之一:在表中插入、修改和删除记录活动状态(active):事务在执行时的状态;部分提交状态(partially committed):事务中最后一条语句执行后的状态;失败状态(failed):事务不能正常的执
3、行时的状态;中止状态(aborted):事务回滚并且数据库已恢复到事务开始执行前的状态;提交状态:(committed):事务成功完成后的状态。是所有关系数据库的公共语言,3,搭建事务演示环境,4,为便于演示和说明事务控制,首先构建一个简易银行数据库系统,为这个数据库系统设计了用户信息表(userinfo)和银行卡信息表(cardinfo),搭建事务演示环境,5,创建两张数据表的代码如下:create table USERINFO(CUSTOMERID NUMBER(10)not null,CUSTOMERNAME VARCHAR2(16)not null,PID VARCHAR2(18)no
4、t null,TELEPHONE VARCHAR2(11)not null,ADDRESS VARCHAR2(200);alter table USERINFO add primary key(CUSTOMERID);,create table CARDINFO(CARDID VARCHAR2(16)not null,CURTYPE CHAR(3)default RMB not null,SAVINGTYPE CHAR(3)not null,OPENDATE DATE default sysdate,OPENMONEY FLOAT not null,BALANCE FLOAT not null
5、,PASS VARCHAR2(6)default 000000 not null,OSREPORTLOSS CHAR(1)default N not null,CUTOMERID NUMBER(10)not null);alter table CARDINFO add primary key(CARDID);alter table CARDINFO add foreign key(CUTOMERID)references USERINFO(CUSTOMERID);,事务的开始与结束,6,Oracle中不需要使用专门的语句来显式的表示事务的开始。事务会在修改数据的第一条语句处隐式的开始。在Ora
6、cle中也可以使用SET TRANSACTION或DBMS_TRANSACTION语句来显式的开始一个事务。显示开始事务的语法格式如下:SET TRANSACTION READ ONLY|USE ROLLBACK SEGMENT segment在Oracle中执行SQL语句时,一定要显式的使用COMMIT或者ROLLBACK语句来结束事务。如果正常的退出Oracle的SQL*Plus时,没有使用COMMIT或者ROLLBACK语句结束事务,则SQL*Plus会认为用户希望提交前面所做的工作,并自动为用户完成提交。但不要过分的依赖这种隐式提交方式,建议显式的使用COMMIT或ROLLBACK语句
7、来结束事务。,事务的提交,在Oracle中,事务有显式提交和隐式提交两种方式,但在实际使用时建议使用COMMIT语句来显式提交事务。COMMIT语句的语法格式如下:COMMIT WORK COMMENT text|FORCE text,integer;其中,COMMIT或者COMMIT WORK语句都可以用来提交事务。COMMIT语句还可以扩展用于分布式事务中。在这些扩展中,允许增加一些有意义的注释作为COMMIT的标签务。,事务的回滚与保存点,在Oracle中,回滚事务使用的是ROLLBACK语句。ROLLBACK语句的语法格式如下:ROLLBACK WORK TO SAVEPOINT sa
8、vepoint|FORCE text 直接使用ROLLBACK或ROLLBACk WORK语句都可以回滚事务,撤销上次正常提交后的所有操作。其中,SAVEPOINT表示允许在事务中创建一个“标记点”,以便只撤销整个事务过程中的部分操作,在一个事务中可以有多个SAVEPOINT。,事务隔离级别,对于并发运行的多个事务,当这些事务操作数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题,这些并发问题主要可以归纳为以下几类:更新丢失(lost update)脏读(dirty read)不可重复读(non-repeatableread)幻读(phantom read),3,事务隔离级
9、别,为了避免这些并发问题的出现,以保证数据的完整性和一致性,必须实现事务的隔离性。事务的隔离级别用来定义事务与事务之间的隔离程度。ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别:序列化级别(serializable)可重复读(repeatable read)读已提交(read committed)读未提交(read uncommitted),3,事务隔离级别,隔离级别及其对应的可能出现或不可能出现的现象如表所示:,3,数据恢复概述,尽管数据库系统采取了各种保护措施来防止数据库的一致性、安全性和完整性遭到破坏,但是计算机系统中硬件的故障、软件的错误、操作者的失误以及来自外部的恶意
10、破坏仍是不可避免的,这些故障轻则造成正在运行的事务非正常中断,从而影响数据库中数据的正确性,重则破坏数据库,使数据库中的数据全部或部分丢失,因此数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态的功能,这就是数据库恢复技术。,2,数据转储,数据转储是数据库恢复中最经常采用的技术。所谓转储即将整个数据复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。静态转储 动态转储,2,日志文件,日志文件是用来记录事务对数据库的更新操作的文件。日志文件在数据库恢复中起着非常重要的作用。可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。不同数据
11、库系统采用的日志文件格式并不完全一样。概括起来日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。,2,数据库故障种类,数据库系统中可能发生各种各样的故障,这些故障大致可以分以下几类:事务内部的故障 系统故障介质故障计算机病毒,2,故障恢复机制,当系统运行过程中发生故障时,利用数据库后备副本和日志文件可以将数据库恢复到故障前的某个一致性状态,根据故障类型的不同,恢复的策略和方法也不一样。事务故障的恢复 系统故障的恢复介质故障的恢复,2,Oracle数据库的备份与恢复,Oracle数据库有三种标准的备份方法:导出导入、热备份和冷备份。其中,导出备件是一种逻辑备份,冷备份和热备份都是物理备份。导出/导入(Export/Import)冷备份热备份,2,事务是用户定义的数据库操作序列事务的基本操作包括事务开始、事务读写、事务结束和事务提交事务特性包括原子性、一致性、隔离性和持久性,简称ACID事务开始前可以通过语句设置当前事务的执行属性,如:是否可读、是否可写、隔离级别等数据恢复的基本单位是事务可能发生的故障大致分为:事务故障、系统故障、介质故障数据恢复的基本策略是:转存数据库、日志文件等,31,小结,谢 谢!,