Oracle数据库文档锁定模式示例

时间:2017-09-11 23:27:48

标签: sql oracle

enter image description here

Oracle数据库文档提供了两个事务的示例,它们可以获得显式锁定。我认为有一个错误,因为即使第一个(左)交易得到RS锁定,底部(右)交易也应该能够获得SRX锁。

你有什么看法?只是想确保它确实是一个错误。

Documentation link

1 个答案:

答案 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