欢迎来到天天文库
浏览记录
ID:41874236
大小:410.00 KB
页数:38页
时间:2019-09-04
《第12章 事务处理与并发控制》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1第12章事务处理与并发控制第2页主要内容12.1概述12.2事务管理技术12.3事务的ACID属性12.4并发控制第3页12.1概述并发性就是两个或两个以上的用户同时对一个数据执行的操作。并发性问题就是并发操作时遇到的各种问题。OracleDatabase10g系统在解决并发性问题时采取了事务处理和锁定机制。事务处理和锁是两个紧密联系的概念。事务就是一个单元的工作,包括一系列的操作,这些操作要么全做,要么全不做。事务确保多个数据的修改作为一个单元来处理。例如,在银行业务中,有一条记帐原则,即有借必有贷,借贷必相等。因此,为了保证这种原则,
2、就得有确保借和贷的登记要么同时成功,要么同时失败,如果出现只记录了借,或只记录了贷,那么就违反了记帐原则,就会出现记错帐的情况。Oracle通过支持事务机制管理多个事务,保证事务的一致性。事务使用锁,防止其它用户修改另外一个还没有完成的事务中的数据。对于多用户系统来说,锁定机制是必须的。12.2数据库的事务以第一个DML语句的执行作为开始以下面之一作为结束:COMMIT或ROLLBACK语句DDL或DCL语句(自动提交)用户会话正常结束系统异常终了第5页一个事务的生命周期包括:事务开始、事务执行和事务结束。在Oracle中,并不会显式声明事
3、务的开始,而是由Oracle自行处理。事务的结束可以利用commit或者rollback命令。Oracle提供了许多事务处理控制语句,主要的事务处理控制语句包括:commit、rollback、savepoint、rollbacktosavepoint、settransaction以及setconstraints语句等。第6页1.Commit的处理在事务处理的最简单的形式中,用户只需使用SQL的commit命令即可。提交会结束用户的事务处理,并且使用户已经执行的任何改变永久生效。作为开发人员,用户应该使用commit或rollback显式终
4、止用户的事务处理,否则用户正在使用的工具或环境就将为用户选择其中的一种方式。例如,如果用户没有进行提交或回滚就退出了用户的SQL*Plus会话,那么SQL*Plus就会认为用户希望提交用户工作。无论用户是否想要提交工作,系统都会为用户进行提交。Commit事务提交命令Oracle在内存中将为每个客户机建立工作区,客户机对数据库进行操作处理的事务都在工作区内完成,只有在输入commit命令后,工作区内的修改内容才写入到数据库上,称为物理写入.这样可以保证在任意的客户机没有物理提交修改以前,别的客户机读取的后台数据库中的数据是完整的、一致的.第
5、8页Commit时执行的任务为用户的事务处理申请SCN(systemchangenumber,系统改变编号)。这是Oracle的内部时钟,可以称为数据库时间。SCN不是传统意义上的时钟,因为它不是随着时间推移而递进。相反,他是在事务处理提交时递进,由Oracle在内部使用,以对事务处理排序。将所有剩余的已经缓冲的重做日志表项写入磁盘,并且将SCN记录到在线重做日志文件中。这要由数据库后台进程LGWR执行。这一步实际上就是所谓的“提交”,使事务处理永久生效。释放用户会话所占有的所有锁定。第9页2.rollback处理回滚可以允许用户撤销其工作
6、。当应用中出现错误,或运行程序的终端用户决定不保存其所做的改变时,可能需要进行回滚。如果不能够回滚错误或用户命令,就无法支持数据库中的事务处理。在回滚处理最简单的形式中,只需使用rollback。回滚可以终止用户的事务处理,并且撤销用户已经进行的所有改变。完成这项工作需要读取用户存储在回滚段或undo表空间中的信息,将数据库恢复到用户事务处理开始之前的状态。与提交不同,回滚事务处理的时间是所改变数据量的函数。这是可以预料的,因为回滚必须在物理上撤销用户已经完成的工作。ORACLE事务控制-回退段ORACLE为了适应事务控制设置了回退段这一数
7、据库对象.系统利用回退段来确保诸如读一致性、数据库恢复等管理功能。ORACLE在缺省情况下,读数据不加锁,通过回退段(RollbackSegment)保证用户不读脏数据和可重复读.表空间中的数据按段来组织,数据段、索引段、暂存段和回退段,回退段是一块磁盘存储区域,回退段可以由用户创建,但只能由系统进程使用。3.自动提交的事务当执行DDL语句时会自动提交事务,当执行DCL语句(grantrevoke)当退出SQL*Plus时第12页4.savepoint和rollbacktosavepointsavepoint允许用户在事务处理中建立标记点。
8、用户可以在单独的事务处理中拥有多个保存点。当使用rollbacktosavepoint时,就可以让用户有选择地回滚更大的事务处理中的一组语句。用户可以将事务处理回滚到标记点,但是
此文档下载收益归作者所有