Oracle 独占锁(exclusive lock)允许其它事务读取数据吗?清华大学出版的《数据库概论》上面说,独占锁不允许其它事务读取,不能更新,
可是网上很多文章说,独点锁可以允许其它事务读取?到底哪一个正确?
为什么?

解决方案 »

  1.   

    不可以,但其他事物可以从before image中读取。
      

  2.   

    这个问题太简单了,是在数据库里试试不就知道了,干嘛去相信别人的:
    scott>:lock table dept in exclusive mode
    tom>:select * from  scott.dept 
    数据可以完整的显示出来,说明可以读去,
    试试其他的语句:
    tom>:lock table scott.dept in exclusive 
    tom>:select * from  scott.dept for update 
    有死锁发生
      

  3.   

    只要UNDO 表空间有足够的空间,并且UNDO_RETENTION的值设置得当,
    那么在ORACLE中的所有查询(SELECT...FOR UPDATE除外)都能成功的执行.在ORACLE中,查询是不需要任何锁的.