查看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 数据库提供如下事务隔离级别: 已提交读隔离级别 可串行化隔离级别 只读隔 ...
随机推荐
- 转:seajs的spm使用摸索
~~~spm是基于nodejs的,打开nodejs命令行工具,npm install spm -g 进行spm的安装,过程很漫长 github上的官网不能访问 seajs自带的spm打包工具相关文档略 ...
- iOS SDK:预览和打开文档
iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处.不过由于沙盒的严格限制,导致程序之间共享数据比较麻烦.一般在程序间共享文档可以通过UIDocumentInteractionCon ...
- Windows Phone 8初学者开发—第7部分:本地化应用程序
原文 Windows Phone 8初学者开发—第7部分:本地化应用程序 第7部分:本地化应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...
- android中使用DisplayMetrics获取屏幕参数
--关于Density int android.graphics.Bitmap.getDensity(),返回bitmap-density(密度).默认的density就是当前display-dens ...
- DropDownList SelectedIndexChanged使用
在asp.net中使用dropdownlist,默认是不会送的,我们想要选中一项然后更改相关的数据,应该吧属性AutoPostback改为true. http://msdn.microsoft.com ...
- UVA 1160 - X-Plosives 即LA3644 并查集判断是否存在环
X-Plosives A secret service developed a new kind ofexplosive that attain its volatile property only ...
- Kali Linux 安全渗透教程<第三更>1.2 安全渗透所需工具
了解了渗透測试的概念后.接下来就要学习进行渗透測试所使用的各种工具.在做渗透測试之前.须要先了解渗透所需的工具.渗透測试所需的工具如表1-1所看到的: 表1-1 渗透所需工具 splint unhi ...
- iOS开发- 打包ipa,让别人设备安装你的App
一般在接外包的时候, 通常第三方须要安装你的app进行測试(这时候你的app肯定是还没传到app store之前). 这样的情况下.假设是企业账号就好办了, 随便安装.. 可是个人开发人员账号呢? 假 ...
- 代理丶通知丶KVO之间区别和各自优势
文/OyeOnoOmg(简书作者)原文链接:http://www.jianshu.com/p/75d3fd218a23著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 今天在网上看到一个 ...
- iOS 请求数据 error
解决办法如下: 0x1 ->请求数据时加上缺少的类型 AFHTTPSessionManager *manager = [selfAFHTTPSessionManager];// manag ...