`

Oracle事务处理

阅读更多

Oracle事务处理 

        事务是由一系列语句构成的逻辑工作单元。事务和存储过程等批处理有一定程序上的相似之处,通常都是为了完成一定业务逻辑而将一条或多条语句“封装”起来,使它们与其他语句之间出现一个逻辑上的边界,并形成相对独立的一个工作单元。


        当使用事务修改多个数据表时,如果在处理的过程中出现了某种错误,例如系统死机或突然断电等情况,则返回结果是全部数据均没有被保存。因为事务的处理结果只有两种:一种是在事务处理的过程中,如果发生了某种错误则整个事务全部回滚,使所有对数据的修改全部撤消,事务对数据库的操作是单步执行的,当遇到错误时可随时地回滚;另一种是如果没有发生任何错误且每一步的执行都成功,则整个事务全部被提交。从而可以看出,有效地使用事务不但可以提高数据的安全性,而且还可以增强数据的处理效率。事务包含4种重要的属性,被统称为ACID(原子性、一致性、隔离性和持久性),一个事务必须通过ACID。


     原子性(Atomic):事务是一个整体的工作单元,事务对数据库的操作要么全部执行,要么全部撤消。如果某条数据执行失败,则所有数据全部回滚。


     一致性(ConDemoltent):事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保证所有数据的完整性。如果事务成功,则所有数据将变为一个新的状态;如果事务失败,则所有数据将处于开始之前的状态。


     隔离性(Isolated):由事务所作的修改必须与其他事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。


     持久性(Durability):当事务提交后,对数据库所做的修改就会永久保存下来。


        Oracle 11g的事务是隐式的自动开始的,它不需要用户显示地执行开始事务语句。但对于事务的结束处理,则需要用户进行指定的操作,通常以下情况时,Oracle认为一个事务结束了。
    1.执行COMMIT语句提交事务。
    2.执行ROLLBACK语句撤消事务。
    3.执行一条数据定义语句,比如CREAT、DROP或ALTER等语句。如果该语句执行成功,那么Oracle系统会自动执行COMMIT命令;否则,Oracle系统会自动执行ROLLBACK命令。
    4.执行一个数据控制命令,比如GRANT、REVOKE等控制命令,这种操作执行完毕,Oracle系统会自动执行COMMIT命令。
    5.正常地断开数据库的接连、正常地退出SQL*Plue环境,Oracle系统会自动执行COMMIT命令;否则,Oracle系统会自动执行ROLLBACK命令。

 

1. 提交事务(COMMIT语句)

        提交事务是指把对数据库进行的全部操作持久性地保存到数据库中,这种操作通常使用COMMIT语句来完成。在使用该语句提交事务时,Oracle系统内部会按照如下顺序进行处理。

        1.在回滚段内记录当前事务已提交,并且声称一个唯一的系统编号(SCN),以唯一的标识这个事务。
    2.启动后台的日志写入进程(LGWR),将SGA区的重做日志缓冲区中的数据和当前事务的SCN写入重做日志文件中。
    3.Oracle服务器开始释放事务处理所使用的系统资源。
    4.显示通知,告诉用户事务已经成功提交。

 

        在HR模式下,向新建表jobs_temp中添加一条记录,然后使用COMMIT语句提交事务,使新增记录持久化到数据库中:

 

SQL>insert into jobs_temp values(‘DESIGN’, ‘设计人员’, 3000,5000);
SQL>已创建1行
SQL>commit;
SQL>提交完成


        在上面的实例中,如果用户不使用COMMIT提交事务,此时,再开启一个SQL*Plus环境(但要求当前的SQL*Plus环境不退出,若退出,Oracle系统会自动执行COMMIT语句提交数据库),然后在HR模式下查询jobs_temp表,会发现新增加的记录不存在。若用户使用COMMIT语句提交事务,则在另一个SQL*Plus环境下就能够查询到新增加的记录。

 

2. 回滚事务(ROLLBACK语句)

        回滚事务是指撤消对数据库进行的全部操作,Oracle利用回滚段来存储修改前的数据,通过重做日志来记录对数据所做的修改。如果要回滚整个事务,Oracle系统内部将会执行如下操作过程:
    1.使用回滚段中的数据撤消对数据库所做的修改。
    2.Oracle后台服务进程释放掉事务所使用的系统资源。
    3.显示通知,告诉用户事务回滚成功。


        Oracle不仅允许回滚整个未提交的事务,还允许回滚事务的一部分,这可以通过“保存点”来完成。在事务的执行过程中,用户可能通过建立保存点将一个较长的失误分隔为几部分。这样用户就可以有选择地回滚到某个保存点,并且该保存点之后的操作都将被取消。


        在HR模式下,向新建表jobs_temp中先后添加两条记录,然后使用保存点(savepoint)来回滚最后添加的那条记录:


 

  • 大小: 15.1 KB
分享到:
评论

相关推荐

    oracle事务处理

    Oracle 事务处理 Oracle 事务处理是指在 Oracle 数据库中对数据进行操作时,确保数据的一致性和完整性的一种机制。事务处理是 Oracle 数据库的核心功能之一,通过事务处理,数据库可以确保数据的一致性和完整性,...

    java Oracle事务处理

    java 代码写的关于Oracle的 事务处理

    ORACLE事务处理机制探析.pdf

    ORACLE事务处理机制探析.pdf

    oracle 事务实验

    详细的关于Oracles事务的实验,学习后,应该对oracle事务非常清楚。

    ORCLE事务处理的基本操作

    Oracle数据库在事务处理方面提供了强大的支持,这对于保持数据的一致性和完整性至关重要。事务是一组数据库操作,这些操作被视为单个逻辑工作单元,要么全部成功,要么全部失败。本篇文章将详细探讨Oracle中事务处理...

    SQL与Oracle对数据库事务处理的差异性.docx

    Undo Data是Oracle事务处理的关键。它保存了数据修改前的状态,使得在事务回滚时能够恢复到之前的状态,保证了原子性。在发生故障时,Oracle可以利用Undo Data来恢复数据库到一致性状态,提供读一致性查询,允许用户...

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

    在实际应用中,可能会涉及到事务管理,确保所有SQL语句要么全部成功执行,要么全部回滚。这可以通过开启一个OracleTransaction并将其与命令对象关联来实现: ```csharp OracleTransaction transaction = connection...

    Oracle数据库基础教程课后习题答案

    四、Oracle事务处理 事务是包含一组数据库操作的逻辑工作单元。在事务中包含的数据库操作是不可分割的整体,要么一起被执行,要么回滚到执行事务之前的状态。在执行事务时,并不是每执行一个数据库操作就立即将结果...

    Oracle数据操作和控制语言详解.pdf

    Oracle数据操作和控制语言详解 1 1. DML语言 1 2. 插入数据 1 3. 更新数据 2 4. 删除数据 2 5. 清空表 2 6. SELECT FOR UPDATE 3 7. 锁定表 3 8. 死锁 4 9. 事务控制 4 10. Savepoint 和 部分回滚(Partial Rollback)...

    MySQL或Oracle通过ODBC与C#建立连接和进行事务处理

    1.通过ODBC使C#能够对MySQL数据进行访问,并可以...2.通过ODBC使C#能够对Oracle数据进行访问,并可以进行事务处理。 3.文档里面包含了环境配置,软件安装的全过程。最后包含了可执行的数据库连接共同的C#代码提供参考。

    oracle 在java中的事务处理和异常回滚。

    在Java编程中,Oracle数据库是常用的后端存储系统,而事务处理和异常回滚是确保数据一致性、完整性和可靠性的关键机制。以下是对这个主题的详细讲解。 首先,Oracle JDBC驱动程序是Java与Oracle数据库之间通信的...

    Oracle高级详细资料

    再者,回滚段(ROLLBACK SEGMENTS)管理是Oracle事务处理的关键部分。回滚段存储了事务的回滚信息,用于在事务回滚时恢复到事务开始时的状态。正确地管理和分配回滚段能防止事务间的资源争抢,避免“ORA-01555:...

    Oracle 教案(教程)

    第1章 Oracle基础知识 1.1 Oracle简介 1.2 Oracle 的版本 1.3 Oracle的安装(演示) ...第4节 Oracle事务处理 第5节 SQL优化 第6节 PL( Procedural Language) / SQL编程基础 …… …… …… …… 第14节 TNS基本配置

    对Oracle数据库的连接、增删改查、事务处理封装源码

    封装了对Oracle数据库的连接、增删改查、事务处理、查询直接得到数据集。使对数据库的操作变得很方便、简易

    oracle事务1.ppt

    * 原子性(A-Atomicity):事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全回滚,全部不保留。 * 一致性(C-Consistency):事务完成或者撤销后,都应该处于一致的状态。 * ...

    oracle事务.ppt

    Oracle事务管理 Oracle事务是指一组数据库命令,构成单一逻辑工作单元的操作集合。事务是访问并可能更新各种数据项的一个程序执行单元,是不可分割的工作逻辑单元。执行并发操作的最小控制单位。 事务的特性包括...

    oracle安装-卸载-初识oracle-笔记

    3. Oracle事务处理 事务是数据库操作的基本单位,保证了数据的一致性和完整性。你可以通过COMMIT提交事务,ROLLBACK回滚事务,或者使用SAVEPOINT设置事务恢复点。 4. SQL函数的使用 Oracle提供了大量的内置函数,如...

    Oracle第二次考试答案

    - Oracle事务处理原则:显式使用COMMIT或ROLLBACK,或自动提交(默认每3秒或缓存满)。 - 事务的特性:原子性、隔离性、一致性、持久性。 - 事务状态:活动、部分提交、提交、已决事务。 - 提交事务:`COMMIT;` ...

Global site tag (gtag.js) - Google Analytics