前2天发现数据库反应特别慢,用EM分析查出有个会话阻塞了其它的会话,查实后发现是一个SID 为300的会话,
SQL为:BEGIN DBMS_MVIEW.EXPLAIN_REWRITE(:1, :2, :3); END;
SQL类型为:PL/SQL EXECUTE
进一步查V$SESSION得知,CLIENT_INDENTIFYer是我自己的机器客户端IP,自己在此之间建过一个视图,但查询了几分钟还没有结果就手动断开了。
后来影响数据库性能之后,将这个会话给结束掉了。
此会话的STATUS 为KILLED。
但今天去又检查了一下,发现这个会话还在占用CPU,而且特别大,我用EM结束会话的时候,
提示:
SQL 错误  
java.sql.SQLException: ORA-00031: session ed for kill  请问这种情况是怎么产生的?现在占用资源这么大,应该如何处理?

解决方案 »

  1.   

    我找出这个会话对应的进程ID,直接 KILL进程号可以解决?
      

  2.   

    直接kill这个session吧。怎么你那还kill不了?我用toad都可以啊,em不行那就有点晕了
      

  3.   

    说说我的一次kill session的情况,使用PB连接数据库,后台查询v$session发现该连接,断开PB与数据库之间的连接(PB内存读取错误自动关闭),再次查询v$session,PB与数据库的连接居然存在!kill session提示会话已更改,再查询v$session,连接还在!无论如何反复kill,小强session还存活。无奈....最后使用PB连接数据库,正常断开后,小强session终于消失了。至今不知是怎么回事,所以一直记得此事。
      

  4.   


    要是em kill不掉的话,就用plsql或者toad kill掉吧!
      

  5.   

    已经自己搞定,直接KILL 进程号就OK
    能给自己积分不