`

ORACLE TRANSACTION

阅读更多
Oracle开发专题之:对事务的一些总结和理解
http://space.itpub.net/219982/viewspace-619841
【1.事务隔离】

①一个未提交的事务所做的修改不能被其它事务所看到。只有当事务提交成功后,在该事务之后执行的其它事务才可能看到该事务所做的改变。

②在该事务提交之前已经执行了一部分而另一部分在该事务提交后执行的剩余部分同样也看不到该事务做出的改变。这是另一个Oracle特性:读一致和快照。

③在该事务提交同时进行的其它事务同样也看不到该事务所做的改变。

【2.语句级回滚】

①当一个SQL语句在执行期间因为发生的任何错误而中断时,将产生一个“语句级回滚”。该回滚的后果就像这个SQL语句根本没有执行过一样。

②注意回滚是发生在“执行”阶段的,如果是在SQL语句的解析阶段因为语法问题而无法执行。因为没有产生任何影响而不会出现“回滚”。

【3.事务控制的分割】
如果一个事务中包含了DML语句和DDL语句,那么该事务会被分解成多个事务。首先在DDL之前的所有DML语句会被作为一个事务而一次性提交。然后Oracle会为这个DDL创建一个新的,单语句的事务。如果DDL语句执行失败了,那么DML事务依然成功。

【4.不同情况下的事务控制】
请注意:用户从Oracle服务器断开连接和用户进程强行中断的后果是不同的。

①前者典型的例子是Oracle服务器关闭或重启,此时所有未提交事务会被提交。

②后者典型的例子用户通过进程管理器强行kill掉进程,此时所有未提交事务所做的操作被回滚。

【5.事务提交前要做的事情】
Oracle提交一个事务之前,必须做以下几件事情:

①记住数据被修改前是什么样子的

②记住数据即将要被改成什么样子

③记住redo log和undo log的关联

④将SGA中已读取到内存的数据修改为新的值(此时并未真正保存到数据文件)
其中第一步是通过在undo表空间中记录undo日志来完成的。第二步、第三步是通过向SGA中的redo日志缓冲区写记录来完成的。这样当事务回滚时就可以从redo日志找到对应的undo日志,从而找回之前的数据

★要特别注意的是:此时不一定会触发DBWn进程。

★要特别注意的另一个地方是:第2步记录事务操作的改变是内存中进行的,还未写到磁盘上的redo日志文件

【6.事务提交时所做的事情】

①记录SCN值(System Change Number)

②将在线重做日志记录(位于SGA的redo日志缓冲区中)持久化到redo日志文件

③Oracle释放资源和锁

④Oracle将事务标记为已结束

注意:只有在commit指令被发出后,才会将SGA中重做日志缓冲区的内容刷新到磁盘的redo日志文件。在LGWR进程执行前,重做日志一直存在于内存中,也被称为在线重做日志。

【7.savepoint回滚和整个事务的回滚】
注意当Oracle事务回滚到某个savepoint时,在savepoint之后的所有后续savepoint将失效。但此时Transaction还是活跃且可继续的。这一点不同于整个事务的回滚。

【8.自治事务】
从传统上来说,一个事务只有在完整执行成功或回滚之后,才会进行下一个事务。而自治事务允许在一个事务中调用运行另一个事务,被调用事务执行完成后,调用事务继续执行之前未完成的操作直至事务结束

自治事务在被调用后,将和外围事务完全独立。彼此之间并不共享任何资源或者锁,外围事务所有未提交的改变对自治事务来说都是不可见。自治事务提交后外围事务将可以看到改变
分享到:
评论

相关推荐

    asp.net 中使用oracle数据库事务

    - 如果使用事务处理,则还需安装 Oracle Services for Microsoft Transaction Server 10.1.0.2.0 或更高版本。 #### 三、创建 Oracle 事务 接下来,我们将介绍如何使用 C# 和 VB.NET 在 ASP.NET 应用程序中创建并...

    64位Oracle Data Access Components (ODAC)

    5. **Oracle Transaction Manager for .NET (Oramts)**:Oramts是Oracle的.NET事务管理器,它提供了两阶段提交和其他高级事务管理功能,确保在分布式系统中的数据一致性。 6. **ASP.NET Support**:`asp.net4`表明...

    Oracle Healthcare Transaction Base Implementation Guide Release

    Oracle Healthcare Transaction Base (HCTB) 是一个专为医疗保健行业设计的企业级应用程序,它提供了一个集成的平台来处理各种医疗交易和数据交换。在Oracle Healthcare Transaction Base Implementation Guide ...

    oracle-transaction.rar_oracle

    本文将深入探讨Oracle数据库中的事务概念及相关概念,同时涉及JDBC(Java Database Connectivity)和JTA(Java Transaction API)事务管理。 **事务的概念** 事务是数据库操作的逻辑单元,它包含了对数据库的一系列...

    oracle-事务oracle-transaction信息管理与信息系统.doc

    在 Oracle 数据库中,事务(Transaction)是数据库区别于文件系统的特性之一。它可以保证数据库的一致性和完整性。 事务的主要特征是 ACID,包括: 1. 原子性(Atomicity):事务中的所有动作要么都发生,要么都不...

    oracle-事务oracle-transaction信息管理与信息系统学士学位论文.doc

    Oracle 事务Transaction 信息管理与信息系统学士学位论文 在这篇论文中,我们将讨论 Oracle 中的事务管理,涵盖事务的定义、特征、控制语句、原子性、一致性、隔离性、持久性等方面的知识点。 一、事务的定义 在...

    ODAC安装手册及图解

    5. **Oracle Transaction Manager**:支持分布式事务处理,确保在多数据库操作中的数据一致性。 6. **Oracle Data Provider for LINQ**:提供对Oracle数据库的LINQ支持,使得查询更加直观和简洁。 接下来,我们来...

    Oracle Exchange XML Transaction Delivery Guide for Marketplace E

    《Oracle Exchange XML Transaction Delivery Guide for Marketplace E》是Oracle公司发布的一份详细的技术指南,主要针对Oracle Exchange在Marketplace Exchange Release 6.2.3版本中的XML事务传递功能。...

    Oracle Services for Microsoft Transaction Server Developer's

    《Oracle Services for Microsoft Transaction Server Developer's Guide》是Oracle公司为开发者提供的一份详细指南,用于在Microsoft Windows环境下集成Oracle数据库与Microsoft Transaction Server (MTS)。...

    Oracle Purchasing 11i XML Transaction Delivery Setup Guide

    Oracle Purchasing 11i XML Transaction Delivery Setup Guide 是一份针对Oracle Corporation的Oracle Purchasing模块的详细指南,专注于11.5.8版本的XML交易交付设置。此文档旨在帮助用户配置和管理Oracle ...

    ORACLE-事务ORACLE-TRANSACTION-信息管理与信息系统本科毕业设计.doc

    ORACLE 事务管理 ORACLE 事务管理是数据库管理系统中的一种机制,旨在确保数据库的一致性和完整性。在 ORACLE 中,事务是指一系列操作的集合,这些操作作为一个单元来执行,以确保数据库的一致性和完整性。 ORACLE...

    Using Microsoft Transaction Server with Oracle8 Release 8.1.6

    《使用Microsoft Transaction Server与Oracle8 Release 8.1.6》是Oracle公司发布的一份技术文档,主要关注如何在微软的事务处理服务器环境下整合Oracle数据库系统。这份文档由Mark Kennedy编写,其他多位专家如...

    OAS中间件---OC4J配置向导

    3. **事务管理**:通过集成Oracle Transaction Manager,OC4J能够支持分布式事务处理,确保数据的一致性和完整性。 4. **集群与负载均衡**:OC4J支持集群部署,可以在多个服务器之间实现负载均衡,提高系统的可用性...

    C#操作Oracle帮助类已经封装 本地无需安装oracle 内有说明文档

    在C#编程中,为了与Oracle数据库进行交互,通常需要使用Oracle的数据提供者,如Oracle.ManagedDataAccess.dll,这是一个由Oracle官方提供的.NET Framework数据提供程序,用于访问Oracle数据库。然而,这通常需要在...

    Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句

    Oracle批处理是数据库操作中提高效率的重要手段,尤其是在C#编程环境下,利用Oracle的数据驱动进行批处理,可以显著提升大量SQL语句执行的速度。本文将深入探讨如何在C#中利用Oracle自带的驱动来实现批处理,以一次...

    64-bit Oracle ODBC Driver 12.1.0.2.0

    64-bit Oracle Services for Microsoft Transaction Server 12.1.0.2.0 64-bit Oracle ODBC Driver 12.1.0.2.0 64-bit Oracle SQL*Plus 12.1.0.2.0 64-bit Oracle Instant Client 12.1.0.2.0

    Oracle Data Provider for .NET (ODP.NET)

    Oracle 10g 第 2 版 ODAC 和 Oracle Developer Tools for Visual Studio .NET 下载文件 ...Oracle Objects for OLE 10.2.0.2.20 Oracle Services for Microsoft Transaction Server 10.2.0.1.0

    delphi连接oracle(免装oracle客户端)测试

    4. **执行查询**:在代码中,可以通过TOraSession的BeginTransaction方法开始事务,然后调用TOraQuery的ExecSQL方法执行SQL,最后用CommitTransaction提交事务。 5. **异常处理**:在处理Oracle数据库操作时,应...

    OTL.rar_oracle_oracle O_oracle OTL_otl oracle_otlv4_h.zip

    4. **事务处理**:OTL支持事务控制,通过`otl_transaction`类可以方便地管理事务的开始、提交、回滚等操作,确保数据的一致性。 5. **类型映射**:OTL将Oracle数据库的类型与C++类型进行了映射,如将Oracle的NUMBER...

    一段无需安装Oracle客户端即可访问Oracle数据库的delphi控件

    4. 事务处理:利用TOraSession的BeginTransaction、Commit和Rollback方法,可以进行数据库事务操作,确保数据的一致性。 5. 错误处理:ODAC提供了一套完整的错误处理机制,帮助开发者捕获和处理数据库操作中的异常。...

Global site tag (gtag.js) - Google Analytics