Oracle 事务操作
在看本文之前,请确保你已经了解了Oracle事务和锁的概念即其作用,不过不了解,请参考数据库事务的一致性和原子性浅析和Oracle TM锁和TX锁
1、提交事务
当执行使用commit语句可以提交事务.当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁。在此之前,与当前事务相关的数据都会被加锁,直到当前事务进行了commit操作,如果在这个过程中有其他回话试图操作相关数据,(这些数据已经被当前事务加锁),那么其他回话会进行等待,或者直接返回错误。
注意:只有在提交事务之后也就是进行commit操作之后,数据才会真正的发生改变,在commit提交之前操作,全部被记录入Oracle日志系统
2、回退事务
在说回退事务之前,先说Oracle事务的保存点(savepoint)的概念和作用,保存点是事务中的一点,用于取消部分事务,保存点记录的是当前数据库的状态
在事务commit提交前,可以使用rollback 到指定的保存点,来回退到指定的保存点
在事务commit提交后,保存点会被删除,这个时候,就无法进行回退了
这里在使用保存点之前,强调一点,任何commit操作,也就是事务提交操作,都会导致savepoint的被删除!!!
3、rollback to savepoint 取消部分事务
select * from test;
savepoint a; ---创建回退点

接着删除一条数据
delete from test where deptno=10
select * from test;

ok,depetno为10的那行数据被删了,现在使用rollback+savepoint进行回退
rollback to a;
select * from test;

数据又回来了,我在删除数据之前,添加了一个会退点,然后进行删除数据,接着发现那条数据不能删,我就通过保存点返回到删除数据之前的那个保存点所对应的数据库状态
4、rollback 取消全部事务
回退的机制和rollback to savepoint 一样,但是使用rollback就是取消当前事务的全部操作,也就说当前事务先前的操作会全部被取消
5、只读事务
只读事务是指只允许执行查询的操作,而不允许执行其他任何的DML操作,只读事务可以帮助获取某个时间点的数据。
例:假定机票代售点每天18点统计今天的销售情况,这时可以使用只读事务,在设置了只读事务之后,尽管其他回话会提交新的事务,但是只读事务不会获取新的数据变化,从而保证取得特定时间点的数据信息。
口令:
set transaction read only
使用scott登录的会话,设置只读事务
ok,只读事务设置完毕
现在我们用dba身份登录sqlplus,创建一个会话,然后向scoot.dept表中插入一条新数据
ok,插入成功!
现在看看scott回话中,能不能插到dept中新添加的记录;
scott会话,并没有查到,新添加的记录。
但是sysdba的回话中,数据已经添加了
ok,根据上面的代码演示,我们可以得出,当一个事务被设置为只读事务,那么当前事务只能查询到这个时间点的数据记录,就算有其他会话对数据记录进行修改,也不会影响到只读事务。
Oracle 事务操作的更多相关文章
- Oracle 数据库基本操作——实用手册、表操作、事务操作、序列
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...
- 浅谈Oracle事务【转载竹沥半夏】
浅谈Oracle事务[转载竹沥半夏] 所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要 ...
- Winform开发框架里面使用事务操作的原理及介绍
在很多情况下,事务是个很有用的东西,可以把一系列的操作组合成一个原子粒度的操作,一旦组合中某个地方出错,可以整个干净的进行滚回,不会留下脏数据:除此之外,事务还能提高批量操作的效率,如在本地SQLit ...
- oracle 事务总结
用了这么长时间的oracle,该总结一下所得了 1,事务 事务用于保证数据的一致性, 它由一组相关的 dml语句组成, 该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败,比 ...
- Oracle事务之一:锁和隔离
Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...
- 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具
基于OCILIB的oracle数据库操作总结 1. 类图 2. 基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* ----- ...
- oracle事务特性详解
原子性 事务是一个完整的操作.事务的各步操作是不可分的(原子的):要么都执行,要么都不执行. -- 创建表 create table account_money ( id number(4) not ...
- oracle事务和锁
数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数 ...
- oracle事务和锁(转)
If you use a SET TRANSACTION statement, then it must be the first statement in your transaction. How ...
随机推荐
- poj—1753 (DFS+枚举)
...
- 洛谷P2173 [ZJOI2012]网络(10棵lct与瞎jb暴力)
有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相同颜色的边不超过两条. 图中不存在同色的环,同色的环指相同颜色的边构成的环. 在这个图上,你 ...
- ViewResolver 视图解析器
pringMVC 视图解析器 前言 在前一篇博客中讲了 SpringMVC 的Controller 控制器,在这篇博客中将接着介绍一下 SpringMVC 视图解析器.当我们对SpringMVC控制的 ...
- C++友元(友元函数、友元类和友元成员函数)
友元(友元函数.友元类和友元成员函数) C++ 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私 ...
- 爬虫开发8.scrapy框架之持久化操作
今日概要 基于终端指令的持久化存储 基于管道的持久化存储 今日详情 1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的 ...
- linux LVM 磁盘管理
一.linux LVM 管理及创建步骤 步骤:1.创建pv—2.创建vg—3.将pv加入vg—4.在vg中创建lv—5.将lv分区格式化—6.将lv分区挂载到某个目录使用 1.创建PV [root@z ...
- “全栈2019”Java第二十五章:流程控制语句中循环语句while
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 【bzoj4888】: [Tjoi2017]异或和 BIT-乱搞
[bzoj4888]: [Tjoi2017]异或和 题目大意:给定一个序列,求这个序列所有的连续和的异或值.(n<=1e5 ai<=1e6) 想了各种奇怪的方法就是不会做啊啊啊.. Orz ...
- [转]IOS UIView 之属性篇
[转载自:IOS UIView 之属性篇 From CSDN] UIView 继承于UIResponder 所遵守的协议有 NSCoding .UIAppearance. UI ...
- Maven环境下面多项目之间的引用
如图: https://github.com/sdl/odata-example sdl OData例子包含了4个项目,下载到本地后编译.发现只有model项目是可以编译过去了.其他几个暂时编译不过 ...