Oracle事务必须是执行写操作的吗?像select操作不算是事务transaction吗?

解决方案 »

  1.   

    select * from table for update  也算吧
    update delete也算的
      

  2.   

    shutdown transactional 命令我试了,对于写事务是等待事务完成后关闭,但对于读事务,如select * from table是不等待的。那么是不是说shutdown transactional 命令只等待写事务?还是事务就是指写操作,读不算事务?
      

  3.   

    事务跟读或写操作没有显式关系
    robbin的解释
    如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性;
    如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之后,后条SQL查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持。

      

  4.   

    我执行的是循环读,而且是死循环,有意让它不结束,当shutdown transactional时,也是无条件关闭了,不等待。可不可以说事务分读事务和写事务?shutdown transactional指的是写事务?
      

  5.   

    我的理解是shutdown transactional,阻止新的DML进行,但是可以SELECT,正在进行的DML操作需要提交或回滚,如果没有正在进行的DML,那么就会关库.
    也就是LZ所说的shutdown transactional只对"写事务"有影响
      

  6.   

    单纯select当然不算事务啦oracle的select是不会锁表的  这个跟其它数据库不一样
      

  7.   

    一个select语句是不算是事务的。楼主可以这么的理解,事务就是一组相关的dml语言。
      

  8.   

    事务必须执行UPDATE、INSERT、DELET