我对你说的“事务隔离级别为3”有点不大清楚,我理解事务隔离级别应该为:读未提交(Read uncommitted),读已提交(Read committed),可重复读(Repeatable read),可串行化(Serializable )这样几个级别。不知道你说的3级是哪一个?oracle是通过undo_tablespace,来完成读一致性的,它保证oracle可以完成“可串行读”。

解决方案 »

  1.   

    我的意思是一个事务中,我用排它锁,锁住表,然后更新一条记录,这时如果可以查询的话读出的数据是没提交的数据,初学Oracle请指教
      

  2.   

    你说的这是两种概念,事务的一致性是可以通过锁来实现,但是oracle不是这样做的。oracle是使用undo表空间来保证事务的杜一致性的。也就是每当一个事务要修改数据库中已经存在的记录时,它都会将一个数据副本放到undo表空间中,在事务提交之前,其它的访问请求都去访问这个数据副本这样来保证事务的读一致性。