查看ORACLE事务隔离级别方法(转)
众所周知,事务的隔离级别有序列化(serializable),可重复读(repeatable read),读已提交(read committed),读未提交(read uncommitted)。根据隔离级别的等级,对事务隔离的严格度也不同,如序列化的隔离级别最严格,并发的效果就越不理想,各种数据库都有对事务隔离的支持,那么如何查看ORACLE对事务的隔离级别呢?还是做个试验验证吧
一 首先做个测试表,表结构和其中的数据如下
ID PHONE
43071 126811
二 打开一个session, 这里叫session1,编写如下PL/SQL
DECLARE
V_OLD VARCHAR2(32);
V_NOW VARCHAR2(32);
V_SYSDATE DATE;
V_LIMIT DATE;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
SELECT PHONE FROM TEST.TEST_HIS_CHILD WHERE PHONE='126811';
DBMS_OUTPUT.PUT_LINE('FIRST SELECT: ' || V_OLD || ' sysdate:' ||
TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
SELECT SYSDATE INTO V_SYSDATE FROM DUAL;
SELECT SYSDATE + 1 / 1440 / 8 INTO V_LIMIT FROM DUAL;
LOOP
IF SYSDATE > V_LIMIT THEN
EXIT;
END IF;
END LOOP;
SELECT PHONE INTO V_NOW FROM TEST.TEST_HIS_CHILD WHERE PHONE='126811';
DBMS_OUTPUT.PUT_LINE('SECOND SELECT: ' || V_NOW || ' sysdate:' ||
TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
COMMIT;
END;
再打开一个session2 输入如下sql
UPDATE TEST.TEST_HIS_CHILD SET PHONE='126811000' where PHONE='126811';
COMMIT;
这里用于测试事务的不可重复读,对同一条数据读两次,在第二次读之前,打开session2,修改相同的记录,之后再查看session1的运行结果
FIRST SELECT: 126811 sysdate:2015-02-11 16:51:32
ORA-01403:未找到数据
这说明在session1中对同一条记录读取第二次之前数据已被修改,而session1 在第二次读取时能够发现另一个session2对本条记录的修改结果,所以报告未找到数据
也就是说ORACLE这里克服了不可重复读的问题。
在运行session2时还可以去掉commit,不提提交事务,这样session1得到的结果是
FIRST SELECT: 126811 sysdate:2015-02-11 17:00:09
SECOND SELECT: 126811 sysdate:2015-02-11 17:00:18
说明ORACLE完成的是一致度操作,而不是脏读
这里可以看出ORACLE使用的隔离级别是可重复读(repeatable read)
http://blog.itpub.net/750077/viewspace-1433569/
查看ORACLE事务隔离级别方法(转)的更多相关文章
- Oracle事务隔离级别处理差异
Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...
- Oracle事务隔离级别
转自:https://blog.csdn.net/leozhou13/article/details/50449965
- oracle,mysql,sql server三大数据库的事务隔离级别查看方法
1:mysql的事务隔离级别查看方法 mysql 最简单,执行这条语句就行:select @@tx_isolation 详情: 1.查看当前会话隔离级别 select @@tx_isolation; ...
- 事务,Oracle,MySQL及Spring事务隔离级别
一.什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 二.事务特性(4种): 原子性 (atomicity):强调事务的不可分割:一致性 (consiste ...
- mysql事务隔离级别及传播机制
TRANSACTION(事务隔离级别) 在说明事务隔离级别之前先说一下脏读.不可重复读.幻读这三个概念. 脏读:一个事务读取到另一事务未提交的更新新据.当一个事务正在访问数据,并且对数据进行了修改,而 ...
- mysql,oracle,sql server中的默认事务隔离级别查看,更改
未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据) 已提交读(数据库引擎的默认级别) 可重复读 可序列化(隔离事务的最高级别,事务之间完全隔离) 可串行化比较严谨,级别高; MySQL m ...
- 数据库事务隔离级ORACLE数据库事务隔离级别介绍
本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committ ...
- ★ MYSQL隔离级别 通俗理解 + mysql、oracle默认事务隔离级别
★ 脏读 : 读取了前一事务 未提交 的数据 ; 不可重复读 : 读取了前一事务 提交 的数据: ★ 幻读 与 不可重复读 common :都是读取了另一条已经提交的事务(这点与脏读不 ...
- Oracle Database Transaction Isolation Levels 事务隔离级别
Overview of Oracle Database Transaction Isolation Levels Oracle 数据库提供如下事务隔离级别: 已提交读隔离级别 可串行化隔离级别 只读隔 ...
随机推荐
- UnixShell编程(第三版) 二章
这本书写的真的很好,让人欲罢不能的读下去. 1,可以简单的将命令看做类似函数的东西,而后面跟的是所传的参数. echo Hello Word > Hi 将字符串hello Wrod 写入文件 ...
- 资源文件(.RES)的应用
资源档有什麽用处呢?最重要的有两个地方1.国际发行:我们将Application中所有的文字从Resource用读取,那麽,只要更动 Resource档的内容,就可以用不同语言的 ...
- 飘逸的python - 简单探索time模块
time模块中方法众多,不过在了解本质和联系之后,就会发现其实很简单. 在python中可以用3种方式来表达时间.看似很乱,其实就只是这3种变来变去来回转换而已. 1.时间戳 2.时间tuple,由9 ...
- git 使用过程(二、创建版本库)
1.显示当前git所在操作文件路径 命令:pwd 2.改变当前操作路径 命令:cd /e/神马神马的,如果想到当前文件夹的某个子目录下,可以直接输入命令:cd 子目录名称,这样就可以了. 3.创建一 ...
- 【Maven】项目添加Maven类库依赖
1.右击项目-->Maven-->EnableDependencyManagement,按步骤完成操作. 2.右击项目-->Properties-->DeploymentAss ...
- CodeForces 508C Anya and Ghosts 贪心
做不出题目,只能怪自己不认真 题目: Click here 题意: 给你3个数m,t,r分别表示鬼的数量,每只蜡烛持续燃烧的时间,每个鬼来时要至少亮着的蜡烛数量,接下来m个数分别表示每个鬼来的时间点( ...
- filter过滤器的使用
从J2EE1.3开始,Servlet2.3规范中加入了对过滤器的支持.过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种,下面让我们分别来看看这四种过滤器的工作方式: 1.reques ...
- Python之路Day10
本节主要内容:memcache&redis.RabbitMQ.twisted框架 1. memcache&redis 1.1 memcache Memcached 是一个高性能的分布式 ...
- RunLoop学习总结
开始 很久之前就看了一次YY的文章,没看懂.后来又看了sunny的视频和叶孤城的直播的视频,找了很多资料,对RunLoop也越来越清晰,然后又看了两三次YY的文章,虽然还没完全看懂,不得不说写的非常好 ...
- GIT分支操作常用命令
切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git rm file 查看状态:git status 添加记录:git add file ...