"ICDMAIN","94","33286","KILLED","Administrator","ICD_DOMAIN\ICD_JIEKOU","PLSQLDev.exe","PL/SQL Developer","Test Window - Script for procedu","04-3-30 15:10:32","00000004009B7220","182078","00000004009502E8","32","47","2147483644","000000040195EAD8","","DEDICATED","32","ICDMAIN","119:126","ICD_JIEKOU","USER","0000000410351728","4115313795","0000000410351728","4115313795","1190136663","3367543201","","305825","-1","0","0","0","4728","NO","NONE","NONE","NO","DEFAULT_CONSUMER_GROUP","DISABLED","ENABLED","ENABLED"
为什么Kill一个Session,进程状态为Kill,但一直没从操作系统中删除,怎么做,为什么会这样。

解决方案 »

  1.   

    可能两种原因:
    1.该session的回退操作没有完成,可能被其它会话阻塞。
    2.pmon进程繁忙,来不及清理死进程。解决办法:
    1.
    kill掉该session对应的进程(UNIX)/线程(windows),强制smon清理死session.
     unix: select process from v$session where sid='94'
           $kill -9 'process'
     windows: select spid from v$procecess ,v$session where v$session.paddr=v$process.addr and v$session.sid='94'
           c:\>orakill 94 'spid'
    2.
    重启数据库,让instance recovery快速清除死sessionkill session可以使用immediate,迅速杀死session:
    alter system kill session ',' immediate;
      

  2.   

    可以通过alter system kill session ‘sid,serial#’来杀掉会话 SELECT /*+ rule */ s.username,  decode(l.type,'TM','TABLE LOCK',                'TX','ROW LOCK',                NULL) LOCK_LEVEL,  o.owner,o.object_name,o.object_type,  s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser  FROM v$session s,v$lock l,dba_objects o  WHERE l.sid = s.sid  AND l.id1 = o.object_id(+)  AND s.username is NOT NULL
      

  3.   

    类似的问题:
    我有三个程序,程序的处理流程基本上相同的。
    每个程序分别创建了一个SOCKET监听,也创建了一个到ORACLE的连接。SOCKET接受数据,处理后填入ORACLE,填写是用存储过程来实现的,操作的表也是一样的。
    现在问题是,我的第二个程序总是会在大概第三天断开连接,而且与ORACLE的连接也不活动,ORACLE占用CPU骤升到60%,此时另外两个程序仍在正常运行,一小时后CPU升到100%。
    我在操作系统中杀掉第二个进程,在ORACLE中KILL第二个连接,CPU仍不下降。查了v$locked_object也没有死锁,我想知道ORACLE的60%CPU它到底在干什么?有什么办法?
    还有,我重新运行第二个程序,居然socket.bind失败,用netstat并没看到有那个端口,问有没有办法不用注销/不用重启就能解决bind失败问题的?
    我观察了一个月了,也还是黔驴技穷,只得到上面的信息。它为什么偏偏每次都是第二个程序在三天后出这种莫名其秒的事情,望各位高手各抒已见。我的最终目的,就是要让系统在无人干预的情况下长久稳定的运行,无论采用什么手段都行。
    我也试过另做一个监控程序,发现系统异常时就重启电脑,但也很麻烦,因为老是重启不成功,导致系统更糟或者谁有比较历害的重启电脑函数,只要保证操作系统不坏,ORACLE数据库不坏(因为此时ORACLE处于异常状态)就行,又能保证重启成功的(因为CPU很高,经常有些东西会弹出立即结束那种对话框,不是随便搞个给权限再ExitWindow就可以搞定的)。
    谢谢!!
      

  4.   

    我有一KILLED连接,按照上面各位说的
    1,用alter system kill session '10,9' ,结果执行光标停着不动,过半分钟后出一个错误:
    ERROR位于第一行:
    ORA-00031:标记要删去的会话。
    2,用ORAKILL 结果出错:
    Could not attach to oracle instance 10 : err=2
    除了重启数据库搞不定,说明上面各位说的还是不大起作用。
      

  5.   

    sorry , orakill第一个参数应该是 <SID>,如下例子:(我的数据库实例名为 ora902)C:\Documents and Settings\lifangjun>orakill ora902 728Kill of thread id 728 in instance ora902 successfully signalled.
      

  6.   

    我的方法是等待
    對於KILLED的進程,由於回退沒有完成,所以需要等待
      

  7.   

    killed 状态什么时候真的kill掉啊