在v$lock中可以看到sid=11的会话有未提交的事务,引发了锁堵塞,导致其他update语句无法执行。
在v$session也可以找到sid=11的记录,同时也可查到该sid=11的会话是由machine=‘test'通过program='PLSqlDev.exe'的方式连接的,但是奇怪的,登录machine=‘test'的这个机器的时候,该机器上的PL Sql Develop根本不存在未提交的事务,而且通过v$mystat查看每个会话的sid,都找不到sid=11的会话。
目前只能通过执行'alter system kill session '11''的方式来释放该对话,但是找不到问题的原因。有没有什么办法可以追踪到这个问题的根本原因呢(例如定位到是网络问题还是程序假死问题等等),有没有什么监控方法来监控此类异常情况?
关于这个,我也做过相应的测试.但是没有得到想要的结果.
测试的大致结果如下:
1.通过 plsql dev 连接到 oracle 之后,执行一个长 select 语句,v$session可以监控到这个会话,并且会 active 的.但是 sql 执行完成之后, 会话的状态变为 inactive 了.在这里之前,我觉得都是正常的.也符合 oracle 的解释. 但是当我将 plsql dev 关闭之后,查询相应的会话,依然是存在的.
所以到这里,就感觉有点模糊了.
关于TWT使用指南社区专家合作厂商入驻社区企业招聘投诉建议版权与免责声明联系我们 © 2024talkwithtrend — talk with trend,talk with technologist京ICP备09031017号-30