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)来回滚最后添加的那条记录:
相关推荐
oracle事务处理,oracle基础使用,oracle
java 代码写的关于Oracle的 事务处理
ORACLE事务处理机制探析.pdf
Oracle事务处理的基本操作,可以好好学习一下。 希望有用,对大家学习数据库有很大帮助
详细的关于Oracles事务的实验,学习后,应该对oracle事务非常清楚。
Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句
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)...
1.通过ODBC使C#能够对MySQL数据进行访问,并可以...2.通过ODBC使C#能够对Oracle数据进行访问,并可以进行事务处理。 3.文档里面包含了环境配置,软件安装的全过程。最后包含了可执行的数据库连接共同的C#代码提供参考。
第1章 Oracle基础知识 1.1 Oracle简介 1.2 Oracle 的版本 1.3 Oracle的安装(演示) ...第4节 Oracle事务处理 第5节 SQL优化 第6节 PL( Procedural Language) / SQL编程基础 …… …… …… …… 第14节 TNS基本配置
封装了对Oracle数据库的连接、增删改查、事务处理、查询直接得到数据集。使对数据库的操作变得很方便、简易
oracle 在java中的事务处理和异常回滚。 里面的类直接运行,需要把oracle的数据库连接改改就ok、
Oracle Database 11g 标准课程第八章 Oracle事务处理ORACLE事务处理概述
功能一:通过oci,PHP成功访问Oracel数据库》功能二:使用PHP代码创建和删除表》功能三:使用PHP代码进行表的增删改查操作》功能四:使用PHP代码进行事务处理》附加项:Oracle客户端的配置
16.oracle事务处理 34 17.oracle数据完整性 36 18.oracle 序列(sequence) 39 19.oracle 索引 40 20.oracle管理权限和角色 42 21.PL/SQL 47 (1)存储过程简单版本 47 (2)存储过程升级版本 49 (3)函数 50 (4)包 50 (5)...
Oracle学习笔记(事务知识点),事务处理:所谓的事务处理其实就是保证数据操作的完整性,所有的操作要么同时成功,要么同时失败
ORACLE数据库事务处理和故障恢复