Oracle:哪一个是锁是由可序列化隔离级别获取的

zwghvu4y  于 2022-11-28  发布在  Oracle
关注(0)|答案(1)|浏览(172)

我试图建立的是隔离级别和锁之间是否存在任何直接关系。因此,假设我使用可序列化隔离级别启动了一个事务,那么Oracle是否会默认获取该事务中列出的所有表上的某种类型的“表”锁,如果是,那么它是什么?
对于这个问题,我找不到任何直接的答案,但我自己通过阅读许多在线文档了解到,隔离级别和锁之间没有直接的关系,锁将基于事务中存在的特定SQL语句获得-而不是基于事务隔离级别是Read Committed还是Serializable。因此,如果存在DML,则将获取读取独占表锁(RX),如果存在类似LOCK TABLE table IN EXCLUSIVE MODE;的语句,则将获取独占表锁(X)。

请注意这个问题是针对Oracle的,而且是针对可序列化隔离级别获取的锁的。我绝不是在寻找与Oracle中可用的隔离级别和锁相关的答案,我已经阅读并理解了联机文档。

nnsrf1az

nnsrf1az1#

我在Ask Tom上也问了同样的问题,Ask Tom很有风度地证实了我的理解--简而言之,隔离级别和锁之间没有直接的关系。锁将基于事务中存在的特定SQL语句获得--而不是基于事务隔离级别是“已提交读”还是“可序列化”。因此,如果存在DML,则将获取读取独占表锁(RX),如果存在类似LOCK TABLE table IN EXCLUSIVE MODE;的语句,则将获取独占表锁(X)。
下面是AT回答的链接:https://asktom.oracle.com/pls/apex/asktom.search?tag=oracle-which-lock-is-acquired-by-serializable-isolation-level

相关问题