当一个oracle一张表在被一个进程写的时候,同时另外一个进程申请游标对这个表进行查询,这样会有问题吗?会有什么问题呢?

解决方案 »

  1.   

    会有问题
    游标查询的时候数据不一定存在 可能尚为commit 这样得出的结果就不是你想要的了
      

  2.   

    oracle做这个没有问题,因为它有个叫undo的东东
      

  3.   

    9楼: 在SQLSERVER中,你说的是对的,在ORACLE中就不对了
    其它用户在修改数据时,在修改前会将数据放到UNDO里,此时做SELECT查询,从UNDO中取数据
      

  4.   

    Oracle没有读锁,读不阻塞写,写也不会阻塞读.
      

  5.   

    使用"更新游标"的话,fetch后的当前行会被锁住,如果是这时候其它进程在对表进行修改操作,会阻塞,至于谁阻塞谁,我就搞不懂了
    如果是简单游标,应该不会阻塞,不过有可能,读到的数据是更新以前的.
      

  6.   

    如果是只读游标是没有问题的
    楼上已经说对了,oracle有undo来确保读一致和不阻塞
    另外sql server2000读是加锁的,从2005开始,可以修改隔离级别,获得oracle的读不阻塞的效果
      

  7.   

    read commited级别,不会有任何问题
    serializable或者read only级别会有问题
      

  8.   

    不会有问题的 但是如果你的写进程没有提交 读进程是看不到那些新做的修改的
    建议楼主去网上搜一下
    ORACLE一致性读
    也可以看看锁和隔离级别的相关内容
      

  9.   

    没问题,oracle的锁机制可不弱智