`
孔雀王子
  • 浏览: 42162 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论

Oracle 10g数据库管理、应用与开发(十)

阅读更多

十七、事务

17.1 了解事务

在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。

       主要特性:确保数据库的完整性。

17.2 事务的ACID特性

对一组SQL语句操作构成事务,数据库操作系统必须确保这些操作的原子性、一致性、隔离性、持久性。

17.2.1原子性(Atomicity)

事务的原子性是指事务中包含的所有操作要么全做,要么不做,也就是说所有的活动在数据库中要么全部反映,要么全部不反映,以保证数据库的一致性。

17.2.2 一致性(Consistency)

事务的一致性是指数据库在事务操作前和事务处理后,其中数据必须满足业务的规则约束。

17.2.3隔离性(Isolation)

隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离性可以防止多个事务的并发执行时,由于它们的操作命令交叉执行而导致数据的不一致性。

17.2.4持久性(durability)

事务的持久性是指在事务处理结束后,它对数据的修改应该是永久的。即便是系统在遇到故障的情况下也不会丢失,这是数据的重要性决定的。

17.3 事务控制语句

Oracle数据库中,没有提供开始事务处理语句,所有的事务都是隐式开始的,也就是说在oracle中,用户不可以显示使用命令来开始一个事务。oracle任务第一条修改数据库的语句,或者一些要求事务处理的场合都是事务的隐式开始。但是当用户想要终止一个事务处理时,必须显示使用commitrollback语句结束。根据事务ACID属性,    oracle提供了如下的事务控制语句:

              Set transaction设置事物属性

              Set constrains 设置事物的约束模式

       所谓约束模式,即在事务中修改数据时,数据库中的约束立即应用于数据,还是将约束推迟到当前事务结束后应用。

Savepoint 在事务中建立一个存储的点.当事务处理发生异常而回滚事务时,可指定事务回滚到某存储点.然后从该存储点重新执行。

              Release savepoint 删除存储点

              Rollback 回滚事务 取消对数据库所作的任何操作

              Commit 提交事务 对数据库的操作做持久的保存。

    17.4 设置事物的属性

set transaction语句可用来设置事物的各种属性,该语句必须放在事务处理的第一个语句。也就是说,必须在任何insertupdate delete语句以及其他的事务处理。

              Set transaction语句可以让用户对事务的以下属性进行设置:

指定事务的隔离层;

规定回滚事务所使用的存储空间;

命名事务。

备注:在使用set transaction语句设置属性时,对于规定回滚事务所使用的存储空间的设置很少使用,对于命名事务也非常简单,只有在分布式事务处理中才会体现出命名事务的用途。

       注意:set transaction只对当前事务有效,事务终止,事务当前的设置将会失效。

17.5 数据异常

事务的隔离性定义了一个事务与其它事务的隔离程度,为了更好的理解隔离层,首先讨论一下并发事务对同一个数据库进行访问可能发生的情况。在并发事务中总体来说会发生如下3种情况:

错读(脏读)

非重复读取(不可重复读)

假读(幻读)

错读(脏读):当一个事务修改数据时,另一事务读取了该数据,但是第一事务由于某种原因取消对数据修改,使数据返回了原状态,这是第二个事务读取的数据与数据库中数据部一致,这就叫错读。

非重复读取:指一个事务读取数据库中的数据后,另一个事务则更新了数据,当第一个事务再次读取其中的数据时,就会发现数据已经发生了改变,这就是非重复读取。非重复读取所导致的结果就是一个事务前后两次读取的数据不相同。

假读:如果一个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是假读。

       事务中遇到的这些异常与事务的隔离性设置有关,事务的隔离性设置越多,异常就出现的越少,但并发效果就越低。反之,异常出现的越多,并发效果越高。

17.6 选择隔离层

针对读取数据时产生的不一致现象,在ANSI SQL标准92中定义了4个事务的隔离级别,如下图所示:

隔离层

错读(脏读)

非重复读取(不可重复读)

假读(幻读)

READ UNCOMMITTED(非提交读)

READ COMMITTED(提交读)

Repeatable READ(可重复读)

Serializable(串行读)

Oracle支持上述四种隔离层中的两种:read committed serializable。除此之外oralce中还定义read only read write隔离层。

              Read committed 这是oracle默认的隔离层。

Serializable设置事物的隔离层位它时,事务与事务之间完全隔开,事务以串行的方式执行,这并不是说一个事务必须结束才能启动另外一个事务,而是说这些事务的执行的结果于一次执行的事务的结果一致。

Read only read write 当使用read only时,事务中不能有任何修改数据库中数据的操作语句,这包括 insertupdatedeletecreate语句。Read onlyserializable的一个子集,区别是read only 只读,而serialzable可以执行DML操作。Read write它是默认设置,该选项表示在事务中可以有访问语句、修改语句,但不经常使用。

17.7 建立set transaction的语句

              Set transaction read only

              Set transaction read write

              Set transaction isolation level read committed

              Set transaction isolation level serializable

注意:这些语句是互斥的.即不能够同时设置两个或者两个以上的选项。

 

分享到:
评论

相关推荐

    Oracle 10g数据库管理、应用与开发标准教程

    由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。

    Oracle10g数据库管理与应用系统开发光盘

    Oracle10g数据库管理系统是...以上是Oracle10g数据库管理系统的主要知识点,对于数据库管理与应用系统开发有着深远的影响。通过学习和掌握这些内容,可以有效地管理和开发高效、稳定、安全的Oracle数据库应用系统。

    ORACLE 10G数据库管理、应用与开发标准教程

    ORACLE 10G数据库管理、应用与开发标准教程

    Oracle 10g 数据库管理 应用与开发 标准教程 课后答案

    Oracle 10g数据库管理系统是企业级数据库解决方案,广泛应用于数据存储和管理。本教程主要涵盖了数据库的管理和开发,通过课后习题帮助学习者巩固理论知识和实践技能。以下是基于提供的部分章节内容展开的详细知识点...

    Oracle 10g数据库管理与应用系统开发.iso

    web开发学习的必备技术之一,软件开发的参考文档,熟能生巧,不久,自学者就能应用的得心应手,成为web开发的一位高手,也为网站制作爱好者的首选学习资料,专业,详细,全面,一份资料胜几分不够专业的资料文档,...

    oracle 10g数据库管理应用教程习题答案

    Oracle 10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库产品,被广泛应用于企业级的数据存储、管理和分析。在“Oracle 10g数据库管理应用教程”这本教材中,作者马晓玉深入浅出地讲解了Oracle 10g的诸多...

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle 11g数据库系统设计、开发、管理与应用

    《Oracle 11g数据库系统设计、开发、管理与应用》是一本全面涵盖Oracle数据库技术的专业教程,适合数据库管理员(DBA)、开发人员以及对Oracle技术感兴趣的学者学习。PDF格式的书籍便于电子阅读和存储,使得读者可以...

    Oracle 10g 数据库管理 应用与开发 标准教程 课后习题答案

    以上总结了《Oracle10g数据库管理应用与开发》一书中的部分知识点,包括Oracle数据库的物理与逻辑存储结构、SQL语言的基础语法、数据操作方法以及数据库对象的管理等内容。这些知识点对于学习和掌握Oracle数据库的...

    Oracle10g数据库管理 应用与开发 标准教程 课后简答题

    ### Oracle10g数据库管理应用与开发标准教程关键知识点解析 #### 表空间与数据文件的关系 在Oracle10g数据库管理系统中,表空间(Tablespace)与数据文件(Datafile)之间的关系至关重要。表空间作为数据库逻辑上...

    oracle10g数据库管理应用与开发课后答案借鉴.pdf

    Oracle 10g 数据库管理应用与开发课后答案借鉴.pdf 资源摘要信息涵盖了 Oracle 10g 数据库管理和开发相关的知识点,以下是该资源的详细说明: 物理存储结构 Oracle 数据库系统的物理存储结构主要由三个文件组成:...

    Oracle10g数据库管理与应用系统开发光盘.rar

    总结,Oracle 10g数据库管理系统为数据库管理员和开发者提供了强大的工具和特性,从高性能的数据存储到灵活的应用系统开发,再到可靠的灾难恢复机制,都是其突出亮点。理解并熟练掌握这些知识点,对于在Oracle环境中...

    Oracle 9i10g 数据库管理详细

    ### Oracle 9i/10g 数据库管理详细知识点 #### 一、Oracle 9i/10g 概述 - **Oracle 9i** 和 **Oracle 10g** 是Oracle公司推出的两个重要的数据库管理系统版本。这些版本在企业级数据库管理领域具有重要意义。 - *...

    Oracle10g数据库管理应用开发标准教程习题.docx

    Oracle 10g 数据库管理应用开发标准教程习题 本文档主要介绍 Oracle 10g 数据库管理应用开发标准教程习题,涵盖了数据库管理、物理存储结构、逻辑存储结构、实例系统、SQL 语言等方面的知识点。 物理存储结构 ...

    Oracle 10g 数据库管理 应用开发 标准教程 思考与练习.pdf

    "Oracle 10g 数据库管理应用开发标准教程思考与练习.pdf" 本资源是 Oracle 10g 数据库管理应用开发标准教程的思考与练习指南,旨在帮助读者深入了解 Oracle 数据库管理和应用开发的基本概念和技术。本资源主要涵盖 ...

    ORACLE 10G FORMS BUILDER WEB数据库开发与应用_11474943

    该内容为电子书ORACLE 10G FORMS BUILDER WEB数据库开发与应用_11474943,此电子书为高清版本

    Oracle+10g+数据库管理艺术

    Oracle 10g数据库管理系统是Oracle公司发布的一款重要的数据库产品,尤其在企业级应用中广泛使用。本资料集“Oracle 10g 数据库管理艺术”深入探讨了Oracle 10g版本中的核心特性和管理技巧,旨在帮助数据库管理员...

    Oracle 10g 数据库管理 应用开发 标准教程 思考与练习.docx

    Oracle 10g 数据库管理应用开发标准教程思考与练习 本资源主要集中在 Oracle 10g 数据库管理、应用开发和标准教程的思考与练习中。该资源涵盖了 Oracle 数据库的物理存储结构、逻辑存储结构、实例系统、服务器模式...

    《Oracle 10g数据库管理》源代码-2881

    Oracle 10g数据库管理系统是Oracle公司发布的一款企业级数据库产品,它在数据库管理、性能优化、安全性以及可扩展性方面都有显著的提升。对于Oracle编程人员来说,掌握Oracle 10g的相关知识和源代码至关重要,这有助...

Global site tag (gtag.js) - Google Analytics