本文的内容,如题所示。
该问题出现在运维过程中,这里(本文)的描述所基于的环境是我自己的环境中的模拟。

发生问题时候的状态如下图所示:
for_update_hang
如上图所示,在SQL*Plus中,执行对某张表的UPDATE时,操作被挂起(Hang)。

通过查看数据库锁的状态,你可以发现问题所在:

事实上,上述命令日志中看到的锁是由于另一个SQL*Plus会话中的“select … for update”引发的:

解法:
发起“for update”的会话commit或kill后,“update set …”才能正常被执行:
“for update”会话:

这时,“update set …”会话恢复正常:

注意:
Oracle并不推荐在日常开发过程中使用“for update”,因为如本例所示,在发起“for update”后,忘了“commit”,则会引起很多锁表的故障!
——————————————————————
Ending。

打赏

历史上的今天:

  1. 2018:  霜雪千年 - 洛天依(0)
  2. 2018:  LNMP的替代工具(0)
  3. 2017:  MS Windows:Excel中CSV乱码(0)
  4. 2017:  Linux:YUM,只下载不安装(0)
  5. 2017:  Cloudera:QuickStart 场景【3】(0)

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒