1
、事务概念:
概念:在数据库中事务是工作的逻辑单元
,
一个事务是由一个或多个完成一组的相关行为的
SQL
语句组成
,
通过事务机制确保这一组
SQL
语句所作的操作要么完全成功执行
,
完成整个工作单元操作
,
要么一点也不执行。
主要特性:确保数据库的完整性。
2
、事务的
ACID
特性
对一组
SQL
语句操作构成事务
,
数据库操作系统必须确保这些操作的原子性
,
一致性
,
隔离性
,
持久性
.
1、
原子性
(Atomicity)
事务的原子性是指事务中包含的所有操作要么全做,要么不做
,
也就是说所有的活动在数据库中要么全部反映
,
要么全部不反映
,
以保证数据库的一致性。
2、
一致性
(Consistency)
事务的一致性是指数据库在事务操作前和事务处理后
,
其中数据必须满足业务的规则约束。
3、
隔离性
(Isolation)
隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力
,
隔离性可以防止多个事务的并发执行时
,
由于它们的操作命令交叉执行而导致数据的不一致性。
4、
持久性
(durability)
事务的持久性是指在事务处理结束后
,
它对数据的修改应该是永久的。即便是系统在遇到故障的情况下也不会丢失
,
这是数据的重要性决定的。
3
、事务的控制语句
在
oracle
数据库中
,
没有提供开始事务处理语句
,
所有的事务都是隐式开始的
,
也就是说在
oracle
中
,
用户不可以显示使用命令来开始一个事务
.oracle
任务第一条修改数据库的语句
,
或者一些要求事务处理的场合都是事务的隐式开始。但是当用户想要终止一个事务处理时
,
必须显示使用
commit
和
rollback
语句结束。
根据事务
ACID
属性
,oracle
提供了如下的事务控制语句:
Set
transaction
设置事物属性
Set
constrains
设置事物的约束模式
约束模式是指:在事务中修改数据时
,
数据库中的约束立即应用于数据
,
还是将约束推迟到当前事务结束后应用。
Savepoint
在事务中建立一个存储的点
.
当事务处理发生异常而回滚事务时
,
可指定事务回滚到某存储点
.
然后从该存储点重新执行。
Release
savepoint
删除存储点
Rollback
回滚事务
取消对数据库所作的任何操作
Commit
提交事务
对数据库的操作做持久的保存。
3
、
1
设置事物的属性:
set
transaction
语句可用来设置事物的各种属性。该语句必须放在事务处理的第一个语句
.
也就是说,必须在任何
insert
、
update
、
delete
语句以及其他的事务处理。
Set
transaction
的语句可以让用户对事务的以下属性进行设置
指定事务的隔离层
规定回滚事务所使用的存储空间
命名事务
备注:在使用
set
transaction
语句设置属性时
,
对于规定回滚事务所使用的存储空间的设置很少使用
.
对于命名事务也非常简单
,
只有在分布式事务处理中才会体现出命名事务的用途
.
注意:
set
transaction
只对当前事务有效
,
事务终止
,
事务当前的设置将会失效。
1、
数据异常
事务的隔离性定义了一个事务与其它事务的隔离程度
.
为了更好的理解隔离层
,
首先讨论一下并发事务对同一个数据库进行访问可能发生的情况
.
在并发事务中总体来说会发生如下
3
种情况
错读
|
脏读
非重复读取
|
不可重复读
假读
|
幻读
错读
|
脏读:当一个事务修改数据时
,
另一事务读取了该数据
,
但是第一事务由于某种原因取消对数据修改
,
使数据返回了原状态
,
这是第二个事务读取的数据与数据库中数据部一致
.
这就叫错读。
非重复读取:是指一个事务读取数据库中的数据后
,
另一个事务则更新了数据
,
当第一个事务再次读取其中的数据时
,
就会发现数据已经发生了改变
,
这就是非重复读取。非重复读取所导致的结果就是一个事务前后两次读取的数据不相同。
假读:如果一个事务基于某个条件读取数据后
,
另一个事务则更新了同一个表中的数据
,
这时第一个事务再次读取数据时
,
根据搜索的条件返回了不同的行
,
这就是假读。
事务中遇到的这些异常与事务的隔离性设置有关
,
事务的隔离性设置越多
,
异常就出现的越少
,
但并发效果就越低
,
事务的隔离性设置越少
,
异常出现的越多
,
并发效果越高。
2、
选择隔离层
针对
3
中读取的数据时产生的不一致现象
,
在
ANSI SQL
标准
92
中定义了
4
个事务的隔离级别
.
如下图所示:
隔离层
|
错读
|
脏读
|
非重复读取
|
不可重复读
|
假读
|
幻读
|
READ UNCOMMITTED(
非提交读
)
|
是
|
是
|
是
|
READ COMMITTED(
提交读
)
|
否
|
是
|
是
|
Repeatable READ(
可重复读
)
|
否
|
否
|
是
|
Serializable(
串行读
)
|
否
|
否
|
否
|
Oracle
支持上述四种隔离层中的两种
:read committed
和
serializable
。除此之外
oralce
中还定义
read only
和
read write
隔离层。
Read committed
这是
oracle
默认的隔离层。
Serializable
:设置事物的隔离层位它时
,
事务与事务之间完全隔开
,
事务以串行的方式执行
,
这并不是说一个事务必须结束才能启动另外一个事务
,
而是说这些事务的执行的结果于一次执行的事务的结果一致,相当于把多个事务当做一个事务。
Read only
和
read write
当使用
read only
时
,
事务中不能有任何修改数据库中数据的操作语句,这包括
insert
、
update
、
delete
、
create
语句。
Read only
是
serializable
的一个子集,区别是
read only
只读
,
而
serialzable
可以执行
DML
操作。
Read write
它是默认设置
,
该选项表示在事务中可以有访问语句、修改语句
.
但不经常使用
.
3、
建立
set
transaction
的语句
列举如下:
Set transaction
read only
Set transaction
read write
Set transaction
isolation level read committed
Set transaction
isolation level serializable
注意:这些语句是互斥的
.
即不能够同时设置两个或者两个以上的选项。
4、
结束事务:
什么情况下代表事务的结束呢
?
1、
Commit
提交事务
用户使用了
commit
语句显示终止一个事务。当执行
commit
语句时。在事务中对数据永久的保存。
2、
rollback
回滚事务
用户使用了
rollback
语句回滚了事务,当执行此语句时,将取消在事务中对数据库所做的任何更改,数据返回到事务开始时的状态。如果设置了存储点,则只取消存储点后的事务处理,且事务不会终止。
//
只读的案例
SQL>
set transaction read only;
Transaction
set
SQL>
select * from users where username='mj';
SQL>
update users set password='123' where username='mj';
update
users set password='123' where username='mj'
ORA-01456:
不能在
READ ONLY
事务处理中执行插入
/
删除
/
更新操作
//
脏读的案例
SQL>
set transaction isolation level read committed;
Transaction
set
SQL>
select * from users where username='mj';
SQL>
update users set password='123' where username='mj';
1 row
updated
SQL>
select * from users where username='mj';
SQL>
rollback;
分享到:
相关推荐
1. **事务概念** 事务是一个不可分割的操作序列,具有原子性,即事务中的所有操作要么全部执行,要么全部不执行。事务保证了数据库的一致性,确保在事务开始和结束之间,数据库始终处于合法状态。事务通常以`COMMIT...
本文将深入探讨“Oracle事务回滚存储过程”这一主题,旨在理解其核心概念、工作原理以及实际应用。 ### Oracle事务 在数据库操作中,事务是一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有ACID...
Oracle事务与锁定是数据库管理系统中的核心概念,它们对于确保数据的完整性和一致性至关重要。事务是数据库操作的基本单元,它封装了一系列的数据库操作,确保这些操作要么全部成功,要么全部失败,从而保持数据库的...
在"公司外部Oracle培训PPT第二章"中,我们将会深入探讨几个关键的知识点,包括数据库操纵命令、Oracle事务概念、管理表、管理约束、视图以及序列和同义词。下面将对这些主题进行详细阐述。 首先,数据库操纵命令是...
1. 事务处理的概念 事务处理是指在 Oracle 数据库中对数据进行操作时,确保数据的一致性和完整性的一种机制。事务处理可以将多个操作组合成一个单元,以确保数据的一致性和完整性。如果在事务处理过程中出现错误,...
在Java编程中,Oracle数据库是常用的后端存储系统,而事务处理和异常回滚是确保数据一致性、完整性和可靠性的关键机制。以下是对这个主题的详细讲解。 首先,Oracle JDBC驱动程序是Java与Oracle数据库之间通信的...
总的来说,Oracle事务和EJB的结合为分布式企业级应用提供了强大的数据管理能力,使得开发者能够构建出高可用、高性能且数据一致的应用系统。理解并掌握事务管理机制,对于优化数据库操作、提升系统性能至关重要。
在Oracle数据库中,事务处理是确保数据完整性和一致性的重要机制。事务可以被看作是一系列操作的集合,这些操作作为一个整体被执行,要么全部成功,要么全部失败。这遵循了ACID(原子性、一致性、隔离性、持久性)...
该手册提供了对Oracle数据库系统的全面介绍,涵盖了数据库基础概念、架构、特性和应用程序开发的各个方面。 在数据库简介部分,手册可能提供了Oracle数据库的基本概念,解释了什么是数据库,以及Oracle数据库是如何...
8. 由于文档中提到了版本号,我们可以推测该手册重点在于介绍Oracle 20c相较于之前版本的创新之处,同时也会对Oracle数据库的基础知识进行阐释,比如数据库的安装、配置、管理、数据字典、SQL和PL/SQL语言、事务处理...
### ASP.NET 中使用 Oracle 数据库事务 #### 一、引言 在 ASP.NET 应用程序中集成 Oracle 数据库,并实现高效且可靠的事务处理是非常重要的。事务管理是确保数据一致性和完整性的重要手段之一,尤其是在涉及多条 ...
Oracle 事务处理是数据库操作的核心概念,它确保了数据的完整性和一致性。事务是一组逻辑操作,这些操作被视为单个单元,必须全部成功执行或全部回滚,以防止数据不一致。这种机制对于多用户环境中的并发操作尤其...
"Oracle概念"这一主题深入探讨了Oracle数据库系统的基础知识和核心原理。以下是对Oracle数据库概念的详细解读: 1. **数据库架构**:Oracle数据库采用客户-服务器模型,包括数据库服务器、客户端应用程序以及网络...
了解并掌握Oracle事务的概念和操作,对于保证数据库系统的稳定性和数据的准确性至关重要。在实际应用中,合理地使用事务控制和并发处理策略,可以有效地避免数据冲突,提高系统的可靠性和用户体验。
### 事务概念 在Oracle中,事务是确保数据库数据一致性的机制。事务由一系列相关的DML(数据操纵语言)语句组成,这些语句必须要么全部成功,要么全部撤销,以保证数据的一致性。例如,当执行一个转账操作时,通常...
### Oracle事务、锁表查询及相关实用查询SQL语句 #### 一、Oracle事务管理 在Oracle数据库中,事务是作为一组逻辑操作单元处理的一系列数据库操作。这些操作要么全部成功,要么全部失败,确保了数据的一致性和完整...
Oracle Database 20c 旨在为用户提供强大的数据管理能力,支持大规模、高并发的数据处理以及事务一致性管理。本手册主要介绍Oracle Database 20c的核心概念和特点。 首先,Oracle Database 20c 提供了面向云的...
6. **事务和并发控制**:讨论了事务的概念,提交、回滚和保存点的操作,以及Oracle的多版本并发控制(MVCC)机制。 7. **备份与恢复**:详述了Oracle的备份策略,包括冷备份、热备份和逻辑备份,以及RMAN(恢复管理...