如何在Oracle中设置锁定等待超时

2020-09-12 17:53发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在我的应用程序中,由于同时访问同一对象,我们遇到了会话阻塞的问题。 这是由于查询速度慢或运行时间长所致。 为了防止阻止会话,我们尝试应用锁定等待超时。 锁定等待超时可能在mysql结束。 但是如何在oracle或hybris端完成相同的操作。 请指教。 我们需要这个答案。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在我的应用程序中,由于同时访问同一对象,我们遇到了会话阻塞的问题。 这是由于查询速度慢或运行时间长所致。 为了防止阻止会话,我们尝试应用锁定等待超时。 锁定等待超时可能在mysql结束。 但是如何在oracle或hybris端完成相同的操作。 请指教。 我们需要这个答案。

付费偷看设置
发送
3条回答
闻人可可
1楼-- · 2020-09-12 18:31

您好Kumar,

在OOTB中,通过服务ItemLockingService.java提供了项目级别锁定。 希望可能对您有所帮助。

SAP浪
2楼-- · 2020-09-12 18:35
clasier
3楼-- · 2020-09-12 18:41
  1. 您被阻塞的会话不是因为并发访问,而是由于同一对象(表中的行)的并发修改。 发生这种情况不是因为缓慢或长时间运行的查询,而是由于您构造应用程序代码的方式。 示例:线程A修改购物车条目1,然后尝试修改购物车条目1所属的cBC,同时线程B修改cBC并尝试修改购物车条目1-它们每个都持有1个锁,并且都期望 由另一个线程保留的锁。 重要提示:只有当两个修改都在相同的交易范围内完成时,才会发生这种情况,否则每个修改都将独立完成,并且效果将不可见。

  2. 可以通过显式调用modelService.lock(model)方法(必须在正在运行的事务中进行!)或通过在事务内部再次使用modelService持久操作来完成从DB行的Hybris端进行"锁定"。 因此,在事务尚未完成之前,锁不会(永远)释放,并且为了控制Oracle DB方面的超时,您必须采用Oracle 资源管理器计划和配置文件管理-有关此主题,请咨询DBA。

一周热门 更多>