首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle中有哪些不同类型的锁?

oracle中有哪些不同类型的锁?
EN

Stack Overflow用户
提问于 2013-04-11 05:01:34
回答 2查看 37.8K关注 0票数 5

请任何人解释Oracle中的锁定模式,即共享、独占和更新锁。我找到了很多关于这个的理论,并根据那个

共享锁:任何人都不能更改数据,只读用途

排他锁:只允许一个用户/连接更改数据。

Update lock :行被锁定,直到用户提交/回滚。

然后,我尝试分享来检查它是如何工作的

代码语言:javascript
复制
SQL> lock table emp in share mode;

Table(s) Locked.

SQL> update emp set sal=sal+10;

14 rows updated.

然后,我发现,用户可以在共享锁定后更改数据。那么,它不同于排它锁和更新锁的原因是什么呢?

另一个问题是,更新锁和排它锁有什么不同,即使它们看起来几乎是等同的。

EN

回答 2

Stack Overflow用户

发布于 2017-11-20 06:29:40

为将来的访问者张贴解释,它也给出了答案。

共享锁

在我开始之前,让我先说一下有5种类型的表锁-

  • ,row exclusive,shared,shared,row exclusive和exclusive。而共享锁就是其中之一。另外,请注意行锁,它与表锁不同。点击我在结尾处提供的链接来了解所有这一切。SELECT锁在以下语句中指定的表上获得共享锁- LOCK TABLE table IN SHARE MODE;
  • This
  • 阻止其他事务获得“行独占”(此锁由INSERT、UPDATE和DELETE语句使用)、“共享行排他”和“独占”表锁,否则一切都是允许的。
  • 因此,这意味着共享锁将阻止其他事务在该表上执行INSERT、UPDATE和DELETE语句,但将允许其他事务使用“SELECT…”更新行FOR UPDATE“语句,因为对于此语句,需要”行共享“锁,并且当需要”共享“锁时,它是允许的。

下表很好地总结了锁和允许的锁。

由于许多用户会关注这个问题,所以我决定更进一步,并将我的学习笔记放在这里,我希望人们能从中受益:

Source of this information and also excellent reading about Oracle locks

票数 15
EN

Stack Overflow用户

发布于 2013-04-11 05:36:19

文档中对此进行了很好的解释:http://docs.oracle.com/cd/E11882_01/server.112/e41084/ap_locks001.htm#SQLRF55502

在您的示例中,您将表锁定在共享模式下。这不会阻止其他会话在共享模式下锁定同一对象,但会阻止它们在独占模式下锁定该对象,因此您不能在更新(具有共享锁)时删除表(需要独占锁)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15936323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档