v$session有sid记录,但相应客户端上却没有该sid会话

在v$lock中可以看到sid=11的会话有未提交的事务,引发了锁堵塞,导致其他update语句无法执行。在v$session也可以找到sid=11的记录,同时也可查到该sid=11的会话是由machine=‘test'通过program='PLSqlDev.exe'的方式连接的,但是奇怪的,登录machine=‘test'的这个机器的时候,该机...显示全部

在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''的方式来释放该对话,但是找不到问题的原因。有没有什么办法可以追踪到这个问题的根本原因呢(例如定位到是网络问题还是程序假死问题等等),有没有什么监控方法来监控此类异常情况?

收起
参与22

查看其它 3 个回答heibao326的回答

heibao326heibao326数据库管理员js

问题原因可能找到了,可能是plsql  develop程序导致的,问题重现步骤如下

step1:比如在10:45时,打开plsql developer的sql window,执行\'select * from v$mystat\'语句,此时出现的结果是sid=26

ps:同时在v$session中也有sid=26的记录,program=plsqldev machine=xxx

1.png


Step2:过了一会儿,大约过15分钟左右,还是在原来的sql window,执行\'select * from v$mystat\'语句,此时plsql developer程序出现短暂的卡住(处于未响应状态),等待其相应成功时,结果sid=31(在同一个sql window中,2次执行v$mystat的sid不一样!!!!)

ps:此时在v$session中有sid=26和sid=31的记录,program=plsqldev machine=xxx,但是我在machine=xxx的机子上只开了一个sql window

所以根据以上步骤猜测:应该是plsql developer未响应导致的,所以如果对话中有未提交的事务时  可能也就会出问题了


IT其它 · 2015-11-19
浏览1182

回答者

heibao326
数据库管理员js

回答状态

  • 发布时间:2015-11-19
  • 关注会员:5 人
  • 回答浏览:1182
  • X社区推广