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 数据库中对数据进行操作时,确保数据的一致性和完整性的一种机制。事务处理是 Oracle 数据库的核心功能之一,通过事务处理,数据库可以确保数据的一致性和完整性,...
java 代码写的关于Oracle的 事务处理
ORACLE事务处理机制探析.pdf
详细的关于Oracles事务的实验,学习后,应该对oracle事务非常清楚。
Oracle数据库在事务处理方面提供了强大的支持,这对于保持数据的一致性和完整性至关重要。事务是一组数据库操作,这些操作被视为单个逻辑工作单元,要么全部成功,要么全部失败。本篇文章将详细探讨Oracle中事务处理...
Undo Data是Oracle事务处理的关键。它保存了数据修改前的状态,使得在事务回滚时能够恢复到之前的状态,保证了原子性。在发生故障时,Oracle可以利用Undo Data来恢复数据库到一致性状态,提供读一致性查询,允许用户...
在实际应用中,可能会涉及到事务管理,确保所有SQL语句要么全部成功执行,要么全部回滚。这可以通过开启一个OracleTransaction并将其与命令对象关联来实现: ```csharp OracleTransaction transaction = connection...
四、Oracle事务处理 事务是包含一组数据库操作的逻辑工作单元。在事务中包含的数据库操作是不可分割的整体,要么一起被执行,要么回滚到执行事务之前的状态。在执行事务时,并不是每执行一个数据库操作就立即将结果...
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#代码提供参考。
在Java编程中,Oracle数据库是常用的后端存储系统,而事务处理和异常回滚是确保数据一致性、完整性和可靠性的关键机制。以下是对这个主题的详细讲解。 首先,Oracle JDBC驱动程序是Java与Oracle数据库之间通信的...
再者,回滚段(ROLLBACK SEGMENTS)管理是Oracle事务处理的关键部分。回滚段存储了事务的回滚信息,用于在事务回滚时恢复到事务开始时的状态。正确地管理和分配回滚段能防止事务间的资源争抢,避免“ORA-01555:...
第1章 Oracle基础知识 1.1 Oracle简介 1.2 Oracle 的版本 1.3 Oracle的安装(演示) ...第4节 Oracle事务处理 第5节 SQL优化 第6节 PL( Procedural Language) / SQL编程基础 …… …… …… …… 第14节 TNS基本配置
封装了对Oracle数据库的连接、增删改查、事务处理、查询直接得到数据集。使对数据库的操作变得很方便、简易
* 原子性(A-Atomicity):事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全回滚,全部不保留。 * 一致性(C-Consistency):事务完成或者撤销后,都应该处于一致的状态。 * ...
Oracle事务管理 Oracle事务是指一组数据库命令,构成单一逻辑工作单元的操作集合。事务是访问并可能更新各种数据项的一个程序执行单元,是不可分割的工作逻辑单元。执行并发操作的最小控制单位。 事务的特性包括...
3. Oracle事务处理 事务是数据库操作的基本单位,保证了数据的一致性和完整性。你可以通过COMMIT提交事务,ROLLBACK回滚事务,或者使用SAVEPOINT设置事务恢复点。 4. SQL函数的使用 Oracle提供了大量的内置函数,如...
- Oracle事务处理原则:显式使用COMMIT或ROLLBACK,或自动提交(默认每3秒或缓存满)。 - 事务的特性:原子性、隔离性、一致性、持久性。 - 事务状态:活动、部分提交、提交、已决事务。 - 提交事务:`COMMIT;` ...