oracle一般是不会死锁的,
在开发过程中注意事务及时处理就是了,也就是SQL语句要及时地commit或rollback
这些小问题注意了,应该没事当然,我以为:)

解决方案 »

  1.   

    主要考虑事务要及时提交,事务不宜过大,在PB的update属性中,更新模式建议使用第二种。
      

  2.   

    用事务及安全点。Oracle中的事务本来就是并发的。我们一般定立一个写表顺序机制(因为只有定表时才出现锁定)。
    如有表A,B, C, D, E。
    a程序会写到A, B,C表。
    b程序会写到A,C,E表。错误做法:
    a程序写入顺序为A,C,B
    b程序写入顺序为C, A, E
    当a程序已锁定A,而且准备锁定C。 同时,b程序要锁定C, 发现C未被锁定,于是锁定C,接着又要锁定A。这样就现死锁(因为A已被锁定,而已等待锁定C)。正确做法:(按已规定的锁定顺序)
    a程序写入顺序为A,B, C 
    b程序写入顺序为A, C, E
    当a程序已锁定A, 而且要锁定其他表(如B,C)。 此时,b程序要锁定A时发现A已锁定,此时等待A,直到A解锁。如此类推....