我今天就遇到了這樣的問題,主要是隻殺掉SESSION而沒有殺掉對應的
PROCESS(進程),這個進程對應的PGA還沒有反映。等待是可以的,
但我採取了重新啟動數據庫的最笨也是最快的方法!我同事和我說可以有一個語句
類似:ORALE KILL SESSION_ID,PROCESS_ID 這樣的
可以同時操作殺掉對應SESSION和對應的進程,這樣就可以解決問題了
不過我頁不太清除這個語句,你可以查找搜索以下資料。

解决方案 »

  1.   

    可以通过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
      

  2.   

    alter system kill session 只是杀掉了client session。并没有杀掉server process。windows中oracle的server process是一个线程,用orakill杀掉
    c:>orakill <sid> <process_id>unix 直接用kill -9 <process_id>
      

  3.   

    --查找出你的session
    SELECT USERNAME, SID, SERIAL#, STATUS, OSUSER, MACHINE, PROGRAM,
    MODULE, ACTION FROM v$session
    --根据SID找出PID
    SELECT * FROM v$process
    WHERE addr = (SELECT paddr FROM v$session WHERE sid ='34')
    --登陆主机,kill -9 <proceess_id>
    注意,此进程号=pid,自己玩没关系,要是在线系统,就要看清楚了,不然后悔莫及