第13章 事务与数据恢复_第1页
第13章 事务与数据恢复_第2页
第13章 事务与数据恢复_第3页
第13章 事务与数据恢复_第4页
第13章 事务与数据恢复_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十三章 事务与数据恢复 了解SQL语句的特点 理解事务的概念 熟悉事务的特性及应用范围 掌握事务控制的基本语句及功能 掌握Oracle中事务的实现及应用 了解数据库恢复原理 了解数据库的故障种类及恢复策略 了解Oracle数据库的备份和恢复 1 目标 事务的概念 事务(transaction)是访问并可能操作各种数据项的一个 数据库操作序列,这些操作要么全部执行,要么全部不执 行,是一个不可分割的工作单位。事务由事务开始与事务 结束之间执行的全部数据库操作组成。 p 结构简洁结构简洁 p 功能强大功能强大 p 简单易学简单易学 2 事务具有以下性质: p 原子性(原子性(atomicity)

2、:事务中的全部操作在数据库中是不可分割的,):事务中的全部操作在数据库中是不可分割的, 要么全部完成,要么均不执行;要么全部完成,要么均不执行; p 一致性(一致性(consistency):几个并行执行的事务,其执行结果必须与):几个并行执行的事务,其执行结果必须与 按某一顺序串行执行的结果相一致;按某一顺序串行执行的结果相一致; p 隔离性(隔离性(isolation):事务的执行不受其他事务的干扰,事务执行的):事务的执行不受其他事务的干扰,事务执行的 中间结果对其他事务必须是透明的;中间结果对其他事务必须是透明的; p 持久性(持久性(durability):对于任意已提交事务,系统必

3、须保证该事务):对于任意已提交事务,系统必须保证该事务 对数据库的改变不被丢失,即使数据库出现故障。对数据库的改变不被丢失,即使数据库出现故障。 事务的性质 事务的状态事务的状态 为了确保数据库中数据的正确性,事务必须处于以下状 态之一: p 在表中插入、修改和删除记录 p 活动状态(active):事务在执行时的状态; p 部分提交状态(partially committed):事务中最后一条语句执 行后的状态; p 失败状态(failed):事务不能正常的执行时的状态; p 中止状态(aborted):事务回滚并且数据库已恢复到事务开始执 行前的状态; p 提交状态:(committed)

4、:事务成功完成后的状态。是所有关 系数据库的公共语言 3 搭建事务演示环境搭建事务演示环境 字段名字段名说明说明 customeri d 顾客编号主键 customern ame 开户名必填 pid身份证号必填18位 telephone联系电话必填11位 address居住地址可选 4 为便于演示和说明事务控制,首先构建一个简易银行数据库系统,为这个数据 库系统设计了用户信息表(userinfo)和银行卡信息表(cardinfo) 字段名称字段名称说明说明 cardid卡号必填 16位 curtype货币种类 必填 默认为 RMB savingtype存款类型 必填 0:活期; 1:定期; 2

5、:定活 两便 opendate开户日期 必填 默认系 统日期 openmoney开户金额必填 balance余额必填 password密码 必填 6位 默认 000000 isreportloss是否挂失必填 默认N customerid顾客编号必填 外键 搭建事务演示环境搭建事务演示环境 5 创建两张数据表的代码如下:创建两张数据表的代码如下: create table USERINFO( CUSTOMERID NUMBER(10) not null, CUSTOMERNAME VARCHAR2(16) not null, PID VARCHAR2(18) not null, TELEPHO

6、NE 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,

7、 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中不需要使用专门的语句来显式的表示事务的开始。事务会在修

8、改数据的第一条语句处隐式的开始。在Oracle中也可以使用SET TRANSACTION或DBMS_TRANSACTION语句来显式的开始一个事务。 显示开始事务的语法格式如下: SET TRANSACTION READ ONLY | USE ROLLBACK SEGMENT segment 在Oracle中执行SQL语句时,一定要显式的使用COMMIT或者 ROLLBACK语句来结束事务。如果正常的退出Oracle的SQL*Plus时, 没有使用COMMIT或者ROLLBACK语句结束事务,则SQL*Plus会认为 用户希望提交前面所做的工作,并自动为用户完成提交。但不要过分的 依赖这种隐式

9、提交方式,建议显式的使用COMMIT或ROLLBACK语句 来结束事务 。 事务的提交事务的提交 在Oracle中,事务有显式提交和隐式提交两种方式,但在 实际使用时建议使用COMMIT语句来显式提交事务。 COMMIT语句的语法格式如下: COMMIT WORK COMMENT text| FORCE text , integer; 其中,COMMIT或者COMMIT WORK语句都可以用来提交 事务。COMMIT语句还可以扩展用于分布式事务中。在这 些扩展中,允许增加一些有意义的注释作为COMMIT的标 签务。 事务的回滚与保存点事务的回滚与保存点 在Oracle中,回滚事务使用的是ROL

10、LBACK语句。 ROLLBACK语句的语法格式如下 : ROLLBACK WORK TO SAVEPOINT savepoint|FORCE text 直接使用ROLLBACK或ROLLBACk WORK语句都可以回 滚事务,撤销上次正常提交后的所有操作。其中, SAVEPOINT表示允许在事务中创建一个“标记点”,以便 只撤销整个事务过程中的部分操作,在一个事务中可以有 多个SAVEPOINT。 事务隔离级别事务隔离级别 对于并发运行的多个事务,当这些事务操作数据库中相 同的数据时,如果没有采取必要的隔离机制,就会导致 各种并发问题,这些并发问题主要可以归纳为以下几类: p 更新丢失(lo

11、st update) p 脏读(dirty read) p 不可重复读(non-repeatableread) p 幻读(phantom read) 3 事务隔离级别事务隔离级别 为了避免这些并发问题的出现,以保证数据的完整性和 一致性,必须实现事务的隔离性。事务的隔离级别用来 定义事务与事务之间的隔离程度。ANSI/ISO SQL92标 准定义了一些数据库操作的隔离级别 : p 序列化级别(serializable) p 可重复读(repeatable read) p 读已提交(read committed) p 读未提交(read uncommitted) 3 事务隔离级别事务隔离级别 隔

12、离级别及其对应的可能出现或不可能出现的现象如表 所示: 3 隔离级隔离级 别别 更新丢更新丢 失失 脏读脏读 不可重不可重 复读复读 幻读幻读 读未提 交 NYYY 读已提 交 NNYY 可重复 读 NNNY 序列化NNNN 数据恢复概述 尽管数据库系统采取了各种保护措施来防止数据库的一致性、安全性 和完整性遭到破坏,但是计算机系统中硬件的故障、软件的错误、操 作者的失误以及来自外部的恶意破坏仍是不可避免的,这些故障轻则 造成正在运行的事务非正常中断,从而影响数据库中数据的正确性, 重则破坏数据库,使数据库中的数据全部或部分丢失,因此数据库管 理系统必须具有把数据库从错误状态恢复到某一已知的正

13、确状态的功 能,这就是数据库恢复技术。 2 数据转储 数据转储是数据库恢复中最经常采用的技术。所 谓转储即将整个数据复制到磁带或另一个磁盘上 保存起来的过程。这些备用的数据文本称为后备 副本或后援副本。 p静态转储静态转储 p动态转储动态转储 2 日志文件 日志文件是用来记录事务对数据库的更新操作的 文件。日志文件在数据库恢复中起着非常重要的 作用。可以用来进行事务故障恢复和系统故障恢 复,并协助后备副本进行介质故障恢复。 不同数据库系统采用的日志文件格式并不完全一 样。概括起来日志文件主要有两种格式:以记录 为单位的日志文件和以数据块为单位的日志文件。 2 数据库故障种类 数据库系统中可能发

14、生各种各样的故障,这些故 障大致可以分以下几类: p事务内部的故障事务内部的故障 p系统故障系统故障 p介质故障介质故障 p计算机病毒计算机病毒 2 故障恢复机制 当系统运行过程中发生故障时,利用数据库后备副本和日 志文件可以将数据库恢复到故障前的某个一致性状态,根 据故障类型的不同,恢复的策略和方法也不一样。 p 事务故障的恢复事务故障的恢复 p 系统故障的恢复系统故障的恢复 p 介质故障的恢复介质故障的恢复 2 Oracle数据库的备份与恢复 Oracle数据库有三种标准的备份方法:导出导 入、热备份和冷备份。其中,导出备件是一种逻 辑备份,冷备份和热备份都是物理备份。 p导出导出/导入(导入(Ex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论