SET TRANSACTION READ ONLY来实现事物级别的一致性。一个事物所有语句读到的数据都是一致的。

我们开始试验一,模拟语句级别读一致性。第一个session使用显示打开一个游标模拟数据读,同时在游标读数据的过程中,启动另外一个session更改数据,我可以看到另外一个session对数据的更改,并不会改变到第一个session的读。这就是语句级别的读一致性。启动一个session连接数据库:Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0Connected as cboSQL> set serveroutput on;SQL>SQL> create table test(id number,name varchar2(10));Table createdSQL> insert into test values(1,'a');1 row insertedSQL> insert into test values(2,'b');1 row insertedSQL> commit;Commit completeSQL>SQL> declare2  cursor cur is select * from test;3  begin4  for rec in cur5  loop6   dbms_output.put_line(rec.name);7   dbms_lock.sleep(10);--中间等待另外一个session启动并执行更新数据操作8  end loop;9  end;10  /abPL/SQL procedure successfully completedSQL>在执行游标打印输出的时候同时启动另外一个进程,执行更新数据操作:Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0Connected as cboSQL> set serveroutput on;SQL>SQL> create table test(id number,name varchar2(10));Table createdSQL> insert into test values(1,'a');1 row insertedSQL> insert into test values(2,'b');1 row insertedSQL> commit;Commit completeSQL>SQL> declare2  cursor cur is select * from test;3  begin4  for rec in cur5  loop6   dbms_output.put_line(rec.name);7   dbms_lock.sleep(10);8  end loop;9  end;10  /abPL/SQL procedure successfully completedSQL>

下面我们开始试验二,模拟事务级别读一致性。

首先启动一个SESSION,读一次数据:

SQL> SET TRANSACTION READ ONLY;

Transaction set

SQL> select * from test;

ID NAME

---------- ----------

1 a

2 bbbb

接下来我们启动另外一个session,执行更新数据操作:

SQL> update test set name='123456';

2 rows updated

SQL> commit;

Commit complete

最后我们回到第一session查看再次查看数据:

SQL> select * from test;

ID NAME

---------- ----------

1 a

2 bbbb

我们会发现读出的数据并没有发生改变。所以在设置了SET TRANSACTION READ ONLY后,一个事务前后语句读取的数据不会因为其他seesion对数据的更新而改变。

另外SET TRANSACTION READ ONLY是有一定的条件限制的,官方文档说明如下:

TheSETTRANSACTIONstatement must be the

first statement of a new transaction; if any DML statements (including

queries) or other non-DDL statements (such asSET ROLE) precede aSET TRANSACTIONREADONLYstatement, an error is returned. Once aSETTRANSACTIONREADONLYstatement successfully executes, onlySELECTFORUPDATEclause),COMMIT,ROLLBACK, or non-DML statements (such asSETROLE,ALTERSYSTEM,LOCKTABLE) are allowed in the transaction. Otherwise, an error is returned. ACOMMIT,ROLLBACK,

or DDL statement terminates the read-only transaction; a DDL statement

causes an implicit commit of the read-only transaction and commits in

its own transaction.

oracle模拟重叠事务,ORACLE的事务读一致性与语句读一致性相关推荐

  1. Oracle数据库只读事务和无事务的区别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt382 Oracle默认情况下(没有事务) 保证了SQL语句级别的读一致性,即 ...

  2. oracle分同步事务和异步事务,oracle的事务隔离

    事务隔离 ITL ITL: Interested Transaction List,也叫事务槽,它位于BLOCK Header.格式如下: Itl Xid Uba Flag Lck Scn/Fsc 0 ...

  3. oracle repeatable read,Oracle和Mysql中的数据库事务有关问题:Mysql Read-Repeatable有有关问题...

    Oracle和Mysql中的数据库事务问题:Mysql Read-Repeatable有问题 今天不知不觉想到数据库的乐观锁和悲观锁,遂想写个程序测测,却发现了另一个问题,Mysql InnoDB的R ...

  4. oracle 开始一个事务,oracle的启动与关闭原理-事务commit或者rollback

    oracle的启动与关闭原理-事务commit或者rollback 4.事务 4.1事务的概念 从第一个DML语句开始执行,以rollback或者commit为结束标记,之前所有的DML操作(inse ...

  5. Oracle 存储过程 中如何使用事务Transaction 自主事务 自治事务

    Oracle基础 存储过程和事务 一.事务和存储过程 在存储过程中如何使用事务.当需要在存储过程中同时执行多条添加.修改.删除SQL语句时,为了保证数据完整性,我们需要使用事务.使用方式和在PL-SQ ...

  6. oracle事物的传播属性,spring事务的隔离级别和传播属性

    /*** @author 王政* @date 2006-11-24* @note 转载自http://www.iteye.com/topic/35907?page=1*/ ********Transa ...

  7. Oracle学习笔记(七)。事务处理语言(DTL)。事务的特性,原子性(ATOMICITY),一致性(CONSISTENCY),隔离性(ISOLATION),持久性(DURABILITY)

    文章目录 1 什么是事务 2 事务特性 2.1原子性(ATOMICITY) 2.2 一致性(CONSISTENCY) 2.3 隔离性(ISOLATION) 2.4 持久性(DURABILITY) 3 ...

  8. 事务相关、不可重复读与幻读的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 事务内嵌套事务:   1) 都用spring事务时,取决spring采用的事务的隔离级别.     ...

  9. Mysql事务,并发问题,锁机制-- 幻读、不可重复读--专题

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

最新文章

  1. KitKat系统发现BUG:付费输入法更新后自动停用
  2. java中如何忽略字符串中的转义字符--转载
  3. CodeFrist基础_迁移更新数据
  4. Authorization object where used list in tcode SUIM
  5. 【JVM】JVM指令集总结
  6. nvidia-smi每0.1s实时显示显存使用情况,且数字变化处有白底
  7. 11月热门下载资源TOP100强力推荐!
  8. jQuery Mobile中导航栏navbar的data-*选项
  9. C. Oh Those Palindromes
  10. erlang web服务器性能,100万并发连接服务器笔记之Erlang完成1M并发连接目标
  11. java旅游管理系统(带文档
  12. 阵列信号处理及matlab实现,《阵列信号处理的理论和应用》(pdf+程序)
  13. 声艺fx16调音台怎么样_声艺调音台FX16II使用说明书.doc
  14. JDK10安装与配置
  15. cpu顶盖怎么看步进_【有趣】第19期:如何从CPU顶盖获取有用信息(上)?
  16. android x86应用兼容性,x86如何解决Android应用兼容性问题
  17. smb1文件共享不安全不能连接文件共享
  18. JAVA学习第一阶段模块三
  19. NC14745 Hungry!
  20. 好机会!IT工程师恭喜了!纳入工信部-工业互联网人才库!8月31日报名截止

热门文章

  1. [国家集训队]middle
  2. EcmaScript对象克隆之谜
  3. webRTC实战总结
  4. 课堂练习之小强大扫荡
  5. extjs5(05--主界面上加入顶部和底部区域)
  6. PHP中开发的良好习惯总结(持续更新) By ACReaper
  7. android面试题精选
  8. 利用FS寄存器获取KERNEL32.DLL基址算法的证明(ZZ)
  9. 彻底解决zend studio 下 assignment in condition警告
  10. bzoj 1084 DP