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 数据库的核心功能之一,通过事务处理,数据库可以确保数据的一致性和完整性,...
本文将深入探讨Oracle事务处理的运行机制、实现方法,并通过实例解析事务处理的整个流程。 首先,事务是数据库操作的基本单位,它封装了一组逻辑相关的SQL语句,这些语句要么全部执行,要么全部回滚,以此保证数据...
java 代码写的关于Oracle的 事务处理
Undo Data是Oracle事务处理的关键。它保存了数据修改前的状态,使得在事务回滚时能够恢复到之前的状态,保证了原子性。在发生故障时,Oracle可以利用Undo Data来恢复数据库到一致性状态,提供读一致性查询,允许用户...
在实际应用中,可能会涉及到事务管理,确保所有SQL语句要么全部成功执行,要么全部回滚。这可以通过开启一个OracleTransaction并将其与命令对象关联来实现: ```csharp OracleTransaction transaction = connection...
本文将深入探讨“Oracle事务回滚存储过程”这一主题,旨在理解其核心概念、工作原理以及实际应用。 ### Oracle事务 在数据库操作中,事务是一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有ACID...
在Java编程中,Oracle数据库是常用的后端存储系统,而事务处理和异常回滚是确保数据一致性、完整性和可靠性的关键机制。以下是对这个主题的详细讲解。 首先,Oracle JDBC驱动程序是Java与Oracle数据库之间通信的...
Oracle事务与锁定是数据库管理系统中的核心概念,它们对于确保数据的完整性和一致性至关重要。事务是数据库操作的基本单元,它封装了一系列的数据库操作,确保这些操作要么全部成功,要么全部失败,从而保持数据库的...
### MySQL或Oracle通过ODBC与C#建立连接和进行事务处理 #### 一、概述 在现代企业级应用开发中,数据库的选择对于整个系统的稳定性和性能有着至关重要的影响。随着多语言开发的需求日益增长,如何让不同的编程语言...
在会计系统中,Oracle事务处理至关重要。例如,当记录一次转账操作时,需要同时更新两个账户的余额,这两个操作必须在一个事务中完成,以确保数据的准确性。如果其中一个操作失败,整个事务会被回滚,防止出现不一致...
再者,回滚段(ROLLBACK SEGMENTS)管理是Oracle事务处理的关键部分。回滚段存储了事务的回滚信息,用于在事务回滚时恢复到事务开始时的状态。正确地管理和分配回滚段能防止事务间的资源争抢,避免“ORA-01555:...
以上知识点涵盖了从Oracle数据库的配置到PHP通过OCI扩展访问Oracle数据库,并进行基本的数据库操作以及事务处理的全过程。要实现这些功能,还需要对oci8扩展的API有一定的了解,包括oci_connect、oci_parse、oci_...
Oracle和MySQL作为两大主流的数据库系统,在事务处理方面有着各自的特点和差异。本文将从事务的基本概念、隔离级别、锁机制以及事务控制语句等方面,详细探讨Oracle与MySQL在事务处理上的差异,并提供代码示例。 ...
3. Oracle事务处理 事务是数据库操作的基本单位,保证了数据的一致性和完整性。你可以通过COMMIT提交事务,ROLLBACK回滚事务,或者使用SAVEPOINT设置事务恢复点。 4. SQL函数的使用 Oracle提供了大量的内置函数,如...
- **ORACLE事务处理流程**:事务处理确保数据的一致性和完整性。Oracle支持多种事务隔离级别,可以根据具体需求进行配置。 - **ORACLE系统的 SYS 和 SYSTEM 模式**:这两个模式具有特殊的权限,通常用于系统级别的...