一 事务处理介绍
事务是这样一种机制,它确保多个SQL语句被当作单个工作单
元来处理。事务具有以下的作用:
* 一致性:同时进行的查询和更新彼此不会发生冲突,其他
用户不会看到发生了变化但尚未提交的数据。
* 可恢复性:一旦系统故障,数据库会自动地完全恢复未完
成的事务。
二 事务与一致性
事务是完整性的单位,一个事务的执行是把数据库从一个一
致的状态转换成另一个一致的状态。因此,如果事务孤立执行时
是正确的,但如果多个事务并发交错地执行,就可能相互干扰,
造成数据库状态的不一致。在多用户环境中,数据库必须避免同
时进行的查询和更新发生冲突。这一点是很重要的,如果正在被
处理的数据能够在该处理正在运行时被另一用户的修改所改变,
那么该处理结果是不明确的。
不加控制的并发存取会产生以下几种错误:
1 丢失修改(lost updates)
当多个事务并发修改一个数据时,不加控制会得出错误的结
果,一个修改会覆盖掉另一个修改。
2 读的不可重复性
当多个事务按某种时间顺序存取若干数据时,如果对并发存
取不加控制,也会产生错误。
3 脏读(DIRDY DATA),读的不一致性
4 光标带来的当前值的混乱
事务在执行过程中它在某个表上的当前查找位置是由光标表
示的。光标指向当前正处理的记录。当处理完该条记录后,则指
向下一条记录。在多个事务并发执行时,某一事务的修改可能产
生负作用,使与这些光标有关的事务出错。
5 未释放修改造成连锁退出
一个事务在进行修改操作的过程中可能会发生故障,这时需
要将已做的修改回退(Rollback)。如果在已进行过或已发现错
误尚未复原之前允许其它事务读已做过修改(脏读),则会导致
连锁退出。
6 一事务在对一表更新时,另外的事务却修改或删除此表的
定义。
数据库会为每个事务自动地设置适当级别的锁定。对于前面
讲述的问题:脏读、未释放修改造成的连锁退出、一事务在对一
表更新时另外的事务却修改或删除此表的定义,数据库都会自动
解决。而另外的三个问题则需要在编程过程中人为地定义事务或
加锁来解决。
三 事务和恢复
数据库本身肩负着管理事务的责任。事务是最小的逻辑工作
单元,在这个工作单元中,对数据库的所有更新工作,要么必须
全部成功,要么必须全部失败(回退)。只要应用程序指定了某
段程序为一个事务并做了相应的处理(提交或回退),数据库系
统会自动维护事务本身的特性。
四 ORACLE数据库的事务定义
ORACLE事务从COMMIT、ROLLBACK、连接到数据库或开始第一
条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出
数据库时结束。如果在一个事务中包含DDL语句,则在DDL语句的
前后都会隐含地执行COMMIT语句,从而开始或结束一个事务。
如果一个事务由于某些故障或者由于用户改变主意而必须在
提交前取消它,则数据库被恢复到这些语句和过程执行之前的状
态。
利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个
事务。可以回退整个事务,也可以会退部分事务,但是不能回退
一个已经被提交的事务。回退部分事务的ROLLBACK命令为:
ROLLBACK to savepoint 存储点名
存储点是用户放入事务中的标记,用来表示一个可被回退的
位置。存储点通过在事务中放入一个SAVEPOINT命令而被插入。该
命令的语法是:
SAVEPOINT 存储点名
如果在ROLLBACK语句中没有给出存储点名,则整个事务被回
退。
附:
Commit的用法:(完成事务,数据修改成功并对其他用户开放)
例如:
Update 计划类型 set 计划类型='哈哈' where 计划类型='测试';
Commit;
当执行过Update语句之后表中的数据是不会被更改的,只有在执行了Commit之后表中的数据才能被修改.
Rollback的用法:(撤消事务,撤消所有操作)
Update 计划类型 set 计划类型='哈哈' where 计划类型='测试';
Rollback;
Update更新过的数据将直接被回滚.
Rollback to savepoint 的用法:(撤消在设置的回滚点以后的操作)
Update 计划类型 set 计划类型='哈哈' where 计划类型='测试';
SAVEPOINT my_savepoint;
Update 计划类型 set 计划类型='测试2' where 计划类型='工作';
ROLLBACK TO my_savepoint;
在回滚点前的数据将会真实影响到表,而回滚点后面的将会被回滚.
分享到:
相关推荐
Oracle 事务处理 Oracle 事务处理是指在 Oracle 数据库中对数据进行操作时,确保数据的一致性和完整性的一种机制。事务处理是 Oracle 数据库的核心功能之一,通过事务处理,数据库可以确保数据的一致性和完整性,...
java 代码写的关于Oracle的 事务处理
在Java编程中,Oracle数据库是常用的后端存储系统,而事务处理和异常回滚是确保数据一致性、完整性和可靠性的关键机制。以下是对这个主题的详细讲解。 首先,Oracle JDBC驱动程序是Java与Oracle数据库之间通信的...
Oracle 事务处理是数据库操作的核心概念,它确保了数据的完整性和一致性。事务是一组逻辑操作,这些操作被视为单个单元,必须全部成功执行或全部回滚,以防止数据不一致。这种机制对于多用户环境中的并发操作尤其...
本文将深入探讨“Oracle事务回滚存储过程”这一主题,旨在理解其核心概念、工作原理以及实际应用。 ### Oracle事务 在数据库操作中,事务是一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有ACID...
"ORACLE数据库事务处理和故障恢复" ORACLE数据库事务处理和故障恢复是指在ORACLE数据库中,为了确保数据的一致性和完整性,使用事务处理和故障恢复机制来解决数据库并发操作中的问题。 一、并发控制 在多用户...
本文将深入探讨Oracle事务处理的运行机制、实现方法,并通过实例解析事务处理的整个流程。 首先,事务是数据库操作的基本单位,它封装了一组逻辑相关的SQL语句,这些语句要么全部执行,要么全部回滚,以此保证数据...
Oracle事务与锁定是数据库管理系统中的核心概念,它们对于确保数据的完整性和一致性至关重要。事务是数据库操作的基本单元,它封装了一系列的数据库操作,确保这些操作要么全部成功,要么全部失败,从而保持数据库的...
以上知识点涵盖了从Oracle数据库的配置到PHP通过OCI扩展访问Oracle数据库,并进行基本的数据库操作以及事务处理的全过程。要实现这些功能,还需要对oci8扩展的API有一定的了解,包括oci_connect、oci_parse、oci_...
### MySQL或Oracle通过ODBC与C#建立连接和进行事务处理 #### 一、概述 在现代企业级应用开发中,数据库的选择对于整个系统的稳定性和性能有着至关重要的影响。随着多语言开发的需求日益增长,如何让不同的编程语言...
封装了对Oracle数据库的连接、增删改查、事务处理、查询直接得到数据集。使对数据库的操作变得很方便、简易
Oracle和MySQL作为两大主流的数据库系统,在事务处理方面有着各自的特点和差异。本文将从事务的基本概念、隔离级别、锁机制以及事务控制语句等方面,详细探讨Oracle与MySQL在事务处理上的差异,并提供代码示例。 ...
在Oracle数据库中,自治事务可以用于各种场景,例如日志记录、错误处理、统计计算等。自治事务可以提高数据库的性能和可靠性,减少事务的coupling度。 自治事务的优点包括: * 提高事务的独立性和自治性 * 减少...
在Oracle数据库中,事务处理是确保数据完整性和一致性的重要机制。事务可以被看作是一系列操作的集合,这些操作作为一个整体被执行,要么全部成功,要么全部失败。这遵循了ACID(原子性、一致性、隔离性、持久性)...
##### Oracle事务的实现 Oracle 在逻辑上通过Undo表空间(Undo Tablespace)来实现事务处理。Undo表空间包含了Undo段(Undo Segments),而Undo段又包含了Undo数据(Undo Data)。Undo数据是支持事务的基本逻辑单元。 - *...
1. **审计日志**:在触发器中记录事务处理的日志,即使外部事务回滚,日志也不会丢失。 2. **通知机制**:当某些条件满足时,触发器可以独立于外部事务发送电子邮件或短信通知。 3. **数据同步**:在分布式系统中,...
在.NET环境中,与Oracle数据库进行交互并管理事务...务必确保正确处理异常,以确保事务管理的健壮性。在开发过程中,ODP.NET驱动程序是理想的Oracle数据库访问工具,因为它提供了优化的性能和对Oracle特性的广泛支持。
"oracle常用sql.rar"这个压缩包文件显然包含了关于Oracle数据库中常用SQL语句的集合,这对于学习和工作中解决常见问题非常有帮助。以下是一些Oracle SQL的重要知识点: 1. **锁表查询**: 在Oracle中,锁定数据是...