Oracle数据库文档提供了两个事务的示例,它们可以获得显式锁定。我认为有一个错误,因为即使第一个(左)交易得到RS锁定,底部(右)交易也应该能够获得SRX锁。
你有什么看法?只是想确保它确实是一个错误。答案 0 :(得分:1)
刚刚做过测试,你的意见是对的。结果如下:
会话1:
SQL> LOCK TABLE CENZHGL.LOCK_TEST IN ROW SHARE MODE;
Table(s) locked
会话2:
SQL> LOCK TABLE CENZHGL.LOCK_TEST IN EXCLUSIVE MODE NOWAIT;
ORA-00054
SQL> LOCK TABLE CENZHGL.LOCK_TEST IN SHARE ROW EXCLUSIVE MODE NOWAIT;
Table(s) locked
Oracle锁模型互斥关系如下:
lock mode | lock name | permit | exclusion
--------------|-------------------------------|----------|--------------
2 | Row Share | 2,3,4,5 | 6
3 |Row Exclusive Table Lock | 2,3 | 4,5,6
4 | Share Table Lock | 2,4 | 2,5,6
5 |Share Row Exclusive Table Lock | 2 | 3,4,5,6
6 | Exclusive Table Lock | | 2,3,4,5,6