(11)--2.6-Oracle事务大型数据库技术.doc

上传人:奉*** 文档编号:96400631 上传时间:2023-11-22 格式:DOC 页数:7 大小:63.14KB
返回 下载 相关 举报
(11)--2.6-Oracle事务大型数据库技术.doc_第1页
第1页 / 共7页
(11)--2.6-Oracle事务大型数据库技术.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《(11)--2.6-Oracle事务大型数据库技术.doc》由会员分享,可在线阅读,更多相关《(11)--2.6-Oracle事务大型数据库技术.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Oracle事务事务:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行。如:网上转帐就是典型的要用事务来处理,用以保证数据的一致性。1. 事务特性SQL92标准定义了数据库事务的四个特点:原子性(Atomicity):一个事务里面所有包含的SQL语句是一个执行整体,不可分割,要么都做,要么都不做。一致性(Consistency):事务开始时,数据库中的数据是一致的,事务结束时,数据库的数据也应该是一致的。隔离性(Isolation):是指数据库允许多个并发事

2、务同时对其中的数据进行读写和修改的能力,隔离性可以防止事务的并发执行时,由于他们的操作命令交叉执行而导致的数据不一致状态。持久性 (Durability) : 是指当事务结束后,它对数据库中的影响是永久的,即便系统遇到故障的情况下,数据也不会丢失。一组SQL语句操作要成为事务,数据库管理系统必须保证这组操作的原子性(Atomicity)、一致性(consistency)、隔离性(Isolation)和持久性(Durability),这就是ACID特性。2. 数据异常因为Oracle中支持多个事务并发执行,所以会出现下面的数据异常。2.1 脏读当一个事务修改数据时,另一事务读取了该数据,但是第一

3、个事务由于某种原因取消对数据修改,使数据返回了原状态,这是第二个事务读取的数据与数据库中数据不一致,这就叫脏读。如:事务T1修改了一条数据,但是还未提交,事务T2恰好读取到了这条修改后了的数据,此时T1将事务回滚,这个时候T2读取到的数据就是脏数据。2.2 不可重复读是指一个事务读取数据库中的数据后,另一个事务则更新了数据,当第一个事务再次读取其中的数据时,就会发现数据已经发生了改变,这就是不可重复读取。不可重复读取所导致的结果就是一个事务前后两次读取的数据不相同。如:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同。2.3 幻读如果一

4、个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是幻读。如:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻读。事务中遇到的这些异常与事务的隔离性设置有关,事务的隔离性设置越多,异常就出现的越少,但并发效果就越低,事务的隔离性设置越少,异常出现的越多,并发效果越高。3. 事务隔离级别针对读取数据时可能产生的不一致现象,在SQL92标准中定义了4个事务的隔离级别:隔离级别脏

5、读不可重复读幻读Read uncommitted(读未提交)是是是Read committed(读已提交)否是是Repeatable read(可重复读)否否是Serializable(串行读)否否否Oracle默认的隔离级别是read committed。Oracle支持上述四种隔离级别中的两种:read committed 和serializable。除此之外,Oralce中还定义Read only和Read write隔离级别。Read only:事务中不能有任何修改数据库中数据的操作语句,是Serializable的一个子集。Read write:它是默认设置,该选项表示在事务中可以有

6、访问语句、修改语句,但不经常使用。设置隔离级别设置一个事务的隔离级别:SET TRANSACTION ISOLATION LEVEL READ COMMITTED;SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;SET TRANSACTION READ ONLY;SET TRANSACTION READ WRITE;注意:这些语句是互斥的,不能同时设置两个或两个以上的选项。4. 事务控制命令4.1 提交事务在执行使用COMMIT语句可以提交事务,当执行了COMMIT语句后,会确认事务的变化,结束事务,删除保存点,释放锁。当使用COMMIT语句结束事务之

7、后,其他会话将可以查看到事务变化后的新数据。4.2 回滚事务保存点(savepoint):是事务中的一点,用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点。当执行ROLLBACK时,通过指定保存点可以回退到指定的点。设置保存点:sql Savepoint a;删除保存点:sql Release Savepoint a;回滚部分事务:sql Rollback To a;回滚全部事务:sql Rollback;5. 数据库事务实现机制几乎所有的数据库管理系统中,事务管理的机制都是通过使用日志文件来实现的,我们来简单介绍一下日志的工作方式。当用户执行一条修改数据库的DML语句时,

8、DBMS自动在日志文件中写一条记录,显示被这条语句影响的每一条记录的两个副本。一个副本显示变化前的记录,另一个副本显示变化后的记录。当日志写完之后,DBMS才实际对磁盘中的记录进行修改。如果用户随后执行COMMIT语句,事务结束也被记录在事务日志中。如果用户执行ROLLBACK语句,DBMS检查日志,找出自事务开始以来被修改的记录“以前”的样子,然后使用这些信息恢复它们以前的状态,有效地撤销事务期间对数据库所做的修改。如果系统出错,系统操作员通常通过运行DBMS提供的特殊恢复程序来复原数据库。恢复程序检查到事务日志末尾,查找故障之前没有被提交的事务。恢复程序回滚没有完全完成的事务,以便仅有被提

9、交的事务反映到数据库中,而故障中正处理的事务被回滚。事务日志的使用明显增加了更新数据库的开销。在实际中,主流商用DBMS产品使用的日志技术比上述描述的方案更复杂,用以减小这种开销。此外,事务日志通常被存储在高速磁盘驱动器中,不同于存储数据库的磁盘,以减小磁盘访问竞争。某些个人计算机DBMS产品允许关闭事务日志性能,以提高DBMS的性能。6. 示例事务示例银行转账:用户把钱从一个银行账号转账至另一个银行账号,需要将资金从一个银行账号中取出,然后再存入另一个银行账号中。理想来说,这两次操作都应该成功。但是,如果有错误发生,则两次操作都应该失败,否则的话,操作之后其中一个账号中的金额将会是错误的,整个操作过程应该是原子性的,两个操作都是一个原子事务操作的一部分。实现代码如图所示:本节课我们介绍了Oracle事务有关理论,并通过一个例子介绍了Oracle事务的应用,希望大家好好理解事务这个概念,避免出现一些不该有的错误。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁