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 提交事务
2、 rollback 回滚事务
//只读的案例
SQL> set transaction read only;
Transaction set
SQL> select * from users where username='mj';
USERNAME PASSWORD NAME ADDRESS ZIP
-------------------- -------------------- -------------------- -------------------- -------
mj redarmy 陈红军
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';
USERNAME PASSWORD NAME ADDRESS ZIP
-------------------- -------------------- -------------------- -------------------- -------
mj redarmy 陈红军
SQL> update users set password='123' where username='mj';
1 row updated
SQL> select * from users where username='mj';
USERNAME PASSWORD NAME ADDRESS ZIP
-------------------- -------------------- -------------------- -------------------- -------
mj 123 陈红军
SQL> rollback;
数据库:数据库的完整性,参照的完整性,用户自定义的完整性
分享到:
相关推荐
以下是从“Oracle复习考试题”中提炼出的关键知识点,旨在帮助考生全面复习,确保对Oracle核心概念和技术有深入的理解。 ### 一、Oracle基础知识 1. **Oracle数据库概述**:理解Oracle数据库系统的架构,包括实例...
**Oracle复习资料详解** Oracle是全球最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。本复习资料以PPT格式详细介绍了Oracle数据库的关键概念和技术,旨在帮助学习者全面掌握Oracle的相关知识。 ...
根据提供的文件信息,我们可以梳理出一系列关于Oracle数据库的重要知识点,主要涵盖了数据类型、PL/SQL控制结构、游标以及过程等内容。以下是对这些知识点的详细解释: ### 数据类型 1. **VARCHAR2** - `VARCHAR2...
标题“Oracle复习”提示我们,这里将探讨Oracle数据库的相关知识,这是一款广泛应用于企业级的数据库管理系统。Oracle数据库以其高效、稳定和强大的功能在IT行业中占有一席之地。描述中的“博文链接”提供了进一步...
在复习Oracle时,我们需要深入理解其核心概念和技术,包括表连接方式、执行计划的查看、优化器策略、SQL监控与调整、索引的运用以及排序内存管理等。 1. **表连接方式**:Oracle支持多种连接方式,如哈希连接(Hash...
《ORACLE数据库》复习汇总是一份综合性的学习资料,涵盖了ORACLE数据库的关键概念和技术。这份复习汇总主要基于教材,旨在帮助学生系统性地理解和掌握ORACLE数据库的核心内容。 首先,Oracle版本及其发展史展示了...
Oracle复习纲要主要涵盖了Oracle数据库的基础概念、管理、编程以及安全性等方面的知识。以下是对这些知识点的详细说明: 1. **Oracle实例和数据库结构**: - Oracle实例是运行在操作系统上的一组进程和内存结构,...
这篇“Oracle面试复习(一)”的博文可能涵盖了Oracle数据库的基础知识,以及如何在面试中有效地展示这些技能。以下是一些可能涉及的关键知识点: 1. **Oracle数据库简介**:Oracle是全球领先的数据库管理系统之一...
这篇复习资料主要涉及Oracle数据库中的模式对象管理,这对于学习数据库管理和准备数据库三级考试非常有帮助。模式对象是数据库中的一种抽象概念,主要包括表、视图、索引、约束、序列和同义词等。 首先,我们来看看...
以下是对Oracle期末复习资料中涉及的关键知识点的详细解释: 1. **Oracle支持的类型**:Oracle支持多种类型的数据库,包括事务处理型(适合高并发读写操作)和数据仓库型(优化查询性能,用于数据分析)。通用类型...
这篇复习资料主要聚焦于Oracle面试中常见的问题,旨在帮助你更好地准备和理解Oracle的核心概念、功能以及最佳实践。以下是一些可能在面试中出现的关键知识点: 1. **SQL语言基础**: - SQL是Structured Query ...
本复习资料主要涵盖了Oracle中的数据操作语言(DML)和过程化SQL(PL/SQL)的相关实例,这对于理解和掌握Oracle数据库的操作至关重要。 1. 数据操作语言(DML): DML是Oracle中用于插入、更新、删除和查询数据的...
### Oracle复习资料知识点详解 #### 一、Oracle数据库系统的物理存储结构 - **数据文件**:数据文件是Oracle数据库中最基本的存储单元之一,用于存储实际的数据和元数据信息。一个表空间通常由一个或多个数据文件...
2011年的Oracle复习资料主要涵盖数据库管理、SQL语法、表空间管理、序列、后台进程、SQL语句缓存、文件操作、变量管理和约束等方面的知识点。 1. 数据文件是Oracle数据库存储数据的基本单元。描述正确的是C,一个表...
Oracle数据库是全球广泛使用的数据库管理系统,对于准备...以上是Oracle考试复习的关键知识点,熟练掌握这些内容将有助于在考试中取得好成绩。在实际应用中,还需要结合实际场景灵活运用,以解决各种数据库管理问题。
### Oracle复习知识点详解 #### 一、创建与管理数据库对象 **1. 创建表空间** 在Oracle中,数据存储在表空间中。表空间由一个或多个数据文件组成,是逻辑存储单元。例如: ```sql createtime EXAM_DATAFILE 'C:\...
04-Oracle复习.mmap
本复习将深入探讨Oracle的关键知识点,并将其与SQL Server进行对比,以便更好地理解和运用。 首先,Oracle的安装配置是使用Oracle数据库的第一步。安装过程中,你需要选择适合的软件版本(如Oracle Database 12c或...