首页 数据库系统原理与应用——Oracle版第6章

数据库系统原理与应用——Oracle版第6章

举报
开通vip

数据库系统原理与应用——Oracle版第6章null第6章 数据库的事务处理与数据恢复第6章 数据库的事务处理与数据恢复6.1 事务管理的基本概念 6.2 并发控制 6.3 数据库恢复6.1 事务管理的基本概念6.1 事务管理的基本概念6.1.1 事务(Transaction)的概念 6.1.2 事务的状态 6.1.3 事务的特性 6.1.4 SQL Server中的事务返回首页6.1.1 事务(Transaction)的概念6.1.1 事务(Transaction)的概念事务是用户定义的数据库操作序列,这些操作可作为一个完整的工作...

数据库系统原理与应用——Oracle版第6章
null第6章 数据库的事务处理与数据恢复第6章 数据库的事务处理与数据恢复6.1 事务管理的基本概念 6.2 并发控制 6.3 数据库恢复6.1 事务管理的基本概念6.1 事务管理的基本概念6.1.1 事务(Transaction)的概念 6.1.2 事务的状态 6.1.3 事务的特性 6.1.4 SQL Server中的事务返回首页6.1.1 事务(Transaction)的概念6.1.1 事务(Transaction)的概念事务是用户定义的数据库操作序列,这些操作可作为一个完整的工作单元。一个事务内的所有语句是一个整体,要么全部执行,要么全部不执行。即事务是不可再分的原子性工作。 如在银行业务中,“从帐户A转移资金X到帐户B”就是一个典型的事务。这个事务可以分解为两个动作: (1)从账户A减去金额X。 (2)在账户B中加上金额X。返回本节6.1.2 事务的状态6.1.2 事务的状态事务的基本操作包括: (1)事务开始(BEGIN_TRANSACTION)。事务开始执行。 (2)事务读写(Read/Write)。事务进行数据操作。 (3)事务结束(END_TRANSACTION)。事务完成所有的读/写操作。 (4)事务交付(COMMIT_TRANSACTION)。事务完成所有的读/写操作,并保存操作结果。null返回本节6.1.3 事务的特性6.1.3 事务的特性事务所必须具有的重要特性包括: (1)原子性(Atomicity)。 (2)一致性(Consistency)。 (3)隔离性(Isolation)。 (4)持久性(Durability)。 null上述的四个特性也简称为ACID特性,保证ACID特性是事务处理的重要任务。事务的ACID特性可能遭到破坏的原因有: 1)多个事务并行运行时,不同事务的操作交叉执行。 2)事务在运行过程中被强迫停止。返回本节6.1.4 ORACLE中的事务6.1.4 ORACLE中的事务.在Oracle中没有“开始事务处理”的语句。用户不能显式地开始一个事务处理。事务处理会隐式地开始于第一条修改数据的语句,或者在一些要求事务处理的场合。数据库事务主要由INSERT、UPDATE、DELETE操作组成。当在应用程序中执行第一条SQL时,事务便开始了,当执行COMMIT或ROLLBACK语句时事务就结束了。Oracle中对事务处理的控制语句主要包括COMMIT、ROLLBACK、SAVEPOINT、ROLLBACK TO SAVEPOINT、SET TRANSACTION。(1)提交事务(COMMIT)。 (1)提交事务(COMMIT)。 在事务处理中,用户只需要使用COMMIT语句就可以结束事务。当执行COMMIT语句之后,系统确认事务变化、结束事务、删除保存点、释放锁,其他会话就可以查看到事务变化后的新数据了.返回本节(2)回退事务(ROLLBACK) (2)回退事务(ROLLBACK) 回退可以撤消已进行的操作。当应用中出现错误,或是运行程序的终端用户 决定 郑伟家庭教育讲座全集个人独资股东决定成立安全领导小组关于成立临时党支部关于注销分公司决定 不保存对数据库数据进行的修改时,就需要进行回滚。回滚事务使用ROLLBACK命令。回退终止用户的事务处理,撤消用户已经进行的对数据的所有改变,读取用户存储在回滚段或UNDO 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 空间中的信息,将数据库块恢复到用户处理之前的状态,且释放会话所占用的所有锁定 (3)设置保存点(SAVEPOINT) (3)设置保存点(SAVEPOINT) 用户在处理较大事物时中可以建立保存点(SAVEPOINT),用于在必要时取消部分事务。用户可以在单个事物中拥有多个保存点,当使用ROLLBACK TO SAVEPOINT时,可以让用户有选择地回滚到事物处理中的某特定位置 .(4)取消部分事务(ROLLBACK TO SAVEPOINT) (4)取消部分事务(ROLLBACK TO SAVEPOINT) 为了取消部分事务,可以使用ROLLBACK TO SAVEPOINT命令,也可以调用包dbms_transaction中过程rollback (5)设置事务只读属性 (5)设置事务只读属性 设置事务属性的命令为:SET TRANSACTION READ ONLY 只读事务是指只允许执行查询操作,而不允许执行任何数据更新操作的事务。使用SET TRANSACTION READ ONLY 命令可以确保用户无法执行修改数据的操作,通过设置只读事务,可以有效地将数据库视图冻结到某个时间点。也就是说,无论数据库其他会话如何工作,都不会改变只读事务读到的数据。假定企业需要在每天16点统计最近24小时的销售信息,而不统计当天16点之后的销售信息,那么就可以使用只读事务,在设置了只读事务之后,尽管其他会话可能会提交事务,但只读事务将不会取得新的数据变化,从而确保取得特定时间点的数据信息 6.2 并发控制6.2 并发控制6.2.1 并发操作引起的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 6.2.2 封锁 6.2.3 封锁出现的问题及解决方法 6.2.4 可串行化调度 6.2.5 ORACLE的并发控制 机制 综治信访维稳工作机制反恐怖工作机制企业员工晋升机制公司员工晋升机制员工晋升机制图 返回首页6.2.1 并发操作引起的问题6.2.1 并发操作引起的问题对事务的并发执行如果不加以控制,可能会导致数据库中数据的不一致性。 一个最常见的并发操作的例子是飞机订票系统中的订票操作。例如,在该系统中的一个活动的序列: (1)事务T1(动作1):甲售票员读出某航班的机票余额A,设A=16。 (2)事务T2(动作1):乙售票员读出同一航班的机票余额,A也为16。 (3)事务T1(动作2):甲售票员卖出一张机票,修改机票余额A←A-1,所以A=15,把A写入数据库。 (4)事务T2(动作2):乙售票员卖出两张机票,修改机票余额A←A-2,所以A=14,把A写入数据库。null并发操作如果不加以控制,就可能引发下列数据的不一致性: 1.丢失修改(Lost Update) 2.不可重复读(Unrepeatable Read) 3.读“脏”数据(Dirty Read) null1.丢失修改(Lost Update) 丢失修改是指事务T1与事务T2从数据库中读入同一数据并修改,事务T2提交的修改结果破坏了事务T1提交的修改结果,导致事务T1的修改被丢失。丢失修改的情况如图6-2所示。null图6-2 丢失修改null2.不可重复读(Unrepeatable Read) 即事务T1两次读取同一数据项A的内容不一致。究其原因,是在两次读操作之间,事务T2也修改了数据项A。不可重复读的情况如图6-3所示。null图6-3 不可重复读null3.读“脏”数据(Dirty Read) 即事务T1读取了经过事务T2修改过的数据,但是由于事务T2因为流产而撤消了对该数据的修改,数据库恢复到事务T2执行前的状态,从而导致事务T1读取的内容与数据库中的内容不一致。读“脏”数据的情况如图6-4所示。null图6-4 读“脏”数据返回本节6.2.2 封锁6.2.2 封锁1.封锁的类型 DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁类型决定的。基本的封锁类型有两种:排它锁(Exclusive Lock,简称X锁)和共享锁(Share Lock,简称为S锁)。 (1)排它锁。 (2)共享锁。 nullnull2.保证数据一致性的封锁协议——三级封锁协议 所谓封锁协议就是在对数据库加锁、持锁和释放锁时所约定的一些规则。例如,应何时申请X锁或S锁、持锁时间、何时释放等。不同的封锁规则形成了不同的封锁协议,下面介绍三级封锁协议。 (1)一级封锁协议。 (2)二级封锁协议。 (3)三级封锁协议null(1)一级封锁协议。 一级封锁协议是事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。 一级封锁协议可有效防止丢失修改,并保证事务T是可恢复的。例如,图6-6使用一级封锁协议解决了图6-2中的丢失修改问题。null图6-6 没有丢失修改null(2)二级封锁协议。 二级封锁协议是在一级封锁协议加上事务T对要读取的数据加S锁,读完后即可释放S锁。 二级封锁协议除防止了丢失修改还可进一步防止读“脏”数据。例如,图6-7使用二级封锁协议解决了图6-4中读“脏”数据的问题。null图6-7 不读“脏”数据null(3)三级封锁协议。 三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有的锁。 例如图6-8使用了三级封锁协议解决了图6-3中的不可重复读问题。null图6-8 可重复读null表6-1 不同级别的封锁协议返回本节6.2.3 封锁出现的问题及解决方法6.2.3 封锁出现的问题及解决方法1.活锁 在多个事务请求对同一数据封锁时,总是使某一事务等待的情况称为活锁。例如:如果事务T1封锁了数据R后,T2也请求封锁R,于是T2等待。接着T3也请求封锁R。假如T1释放R上的锁后,系统首先批准了T3的请求,T2只得继续等待。接着T4也请求封锁R,T3释放R上的锁后,系统又批准了T4的请求,……,T2有可能就这样永远等待下去。null2.死锁 多个并发事务处于相互等待的状态,其中的每一个事务都在等待它们中的另一个事务释放封锁,这样才可以继续执行下去,但任何一个事务都没有释放自己已获得的锁,也无法获得其他事务已拥有的锁,所以只好相互等待下去,这就产生了死锁。null图6-9 死锁null目前在数据库中解决死锁问题主要有两类方法,一类方法是采取一定措施来预防死锁的发生,另一类方法是允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,若有则解除之。 (1)死锁的预防。 1)一次封锁法。 2)顺序封锁法。 (2)死锁的检测与解除。 null返回本节6.2.4 可串行化调度6.2.4 可串行化调度所谓的两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁。具体体现在: (1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁; (2)释放一个封锁之后,事务不再申请并获得对任何数据的封锁。null所谓两段锁的含义是:事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。在这个阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这个阶段,事务可以释放任何数据项上的任何类型的锁,但是不能申请任何锁。返回本节6.2.5 ORACLE的并发控制机制6.2.5 ORACLE的并发控制机制Oracle通过支持事务并发控制机制来管理多个事务,保证事务的一致性,并使用事务日志保证修改的完整性和可恢复性 . 在通常情况下,数据锁由系统隐含完成,用户不用考虑封锁问题,但Oracle也允许用户用LOCK TABLE命令显式对封锁对象加锁 1.Oracle锁的类型 1.Oracle锁的类型 Oracle的锁分为两大类:数据锁(DML锁)和字典锁 . Oracle的数据锁有5种:共享锁(S锁)、排它锁(X锁),行级共享锁(RS锁)、行级排它锁(RX锁)和共享行级排它锁(SRX锁),其封锁粒度包括行级和表级 2.Oracle数据锁的一个特点 2.Oracle数据锁的一个特点 在默认情况下,读数据不加锁。也就是说,当一个用户更新数据时,另一个用户可以同时读取相应数据。Oracle通过一个被称之为回滚段的内存结构来保证用户不读“脏”数据和可重复读。这样可以提高数据的并发度 6.3 数据库恢复6.3 数据库恢复6.3.1 数据库系统的故障 6.3.2 数据库备份技术 6.3.3 数据库恢复策略返回首页6.3.1 数据库系统的故障6.3.1 数据库系统的故障1.事务故障 2.系统故障 3.介质故障 返回本节6.3.2 数据库备份技术6.3.2 数据库备份技术1.数据转储 2.日志文件1.数据转储1.数据转储(1)静态转储和动态转储。 1)静态转储是在系统中没有运行其他事务时进行的转储操作。 2)动态转储是指转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。 (2)海量转储和增量转储。 海量转储是指每次转储全部数据库。 增量转储是指转储上次转储后更新过的数据。2.日志文件2.日志文件(1)日志文件的格式和内容。 各个事务的开始(BEGIN TRANSACTION)标记。 事务标识(标明是哪个事务)。 操作的类型(插入、删除或修改)。 操作对象。 更新前数据的旧值(对插入操作而言,此项为空值)。 更新后数据的新值(对删除操作而言,此项为空值)。 各个事务的结束(COMMIT或ROLLBACK)标记。 (2)登记日志文件。 返回本节6.3.3 数据库恢复策略6.3.3 数据库恢复策略1.事务故障的恢复 具体的恢复步骤为: (1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。 (2)对该事务的更新操作执行逆操作。 (3)重复执行(1)和(2),恢复该事务的其他更新操作,直至读到此事务的开始标记,事务故障恢复就完成了。 null2.系统故障的恢复 具体的恢复步骤为: (1)正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BERGIN TRANSACTION 记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。 (2)对撤消队列中的各个事务进行撤消(UNDO)处理。 (3)对重做队列中的各个事务进行重做(REDO)处理。null3.介质故障的恢复 介质故障是指磁盘上的物理数据和日志文件均遭破坏,这是最严重的一种故障。恢复方法是首先重装数据库,使数据库管理系统能正常运行,然后利用介质损坏前对数据库已做的备份恢复数据库。 具体的恢复步骤为: (1)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。 (2)装入相应的日志文件副本(转储结束时刻的日志文件的副本),重做已完成的事务。 返回本节小结小结本章介绍了事务的相关概念、并发控制机制和数据库的备份和恢复技术三大内容。事务在数据库中是非常重要的概念,事务中的操作是一个完整的工作单元,这些操作或者全部成功,或者全部不成功。并发控制是指当同时执行多个事务时,为了保证一个事务的执行不受其他事务的干扰所采取的措施。 null并发控制的主要方法是加锁,根据对数据操作的不同,锁分为共享锁和排它锁两种。为了保证并发执行的事务是正确的,一般要求事务遵守两段锁协议,即在一个事务中明显地分为锁申请期和释放期,它是保证事务是可并发执行的充分条件。
本文档为【数据库系统原理与应用——Oracle版第6章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_953390
暂无简介~
格式:ppt
大小:764KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2010-04-06
浏览量:29