oracle中斷session

一個用戶進程偶爾會掛起或佔用過多資源而拒絕其它會話。如果 DBA 依然能夠訪問數據庫,通常可以發出以下查詢
SELECT S.USERNAME,S.OSUSER,S.SID,S.SERIAL#,P.SPID FROM V$SESSION S,V$PROCESS P WHERE
S.PADDR=P.ADDR AND S.USERNAME IS NOT NULL;

通過 ALTER SYSTEM KILL SESSION 'SID,SERIAL#' 命令來殺SESSION

要殺掉已鎖的SESSION,WINDOWS下可以通過下載諸如QUICK SLICE等命令行工具,在命令行中直接執行ORAKILL <SID><SPID>即可。不利用這些工具,則要爲ORAKILL命令提供更多的的參數,諸如相應的WINDOWS線程等。

在網上也搜索到了一些相關的信息

===================================================================================================
處理方法一 :

1.SELECT saddr,sid,serial#,paddr,username,status FROM v$session WHERE username IS NOT NULL
example:saddr,sid,serial#,paddr,username,status FROM v$session WHERE username = 'XNJW0419' ;
SADDR SID SERIAL# PADDR USERNAME STATUS
-------- ---------- ---------- -------- ------------------------------ --------
542E0E6C 11 314 542B70E8 EYGLE INACTIVE 542E5044 18 662 542B6D38 SYS ACTIVE

2.ALTER SYSTEM KILL SESSION 'sid, serial#';
example:ALTER SYSTEM KILL SESSION '11,314';(注:在sqlplus中執行 )

結果: 提示標記要刪去的會話 無法釋放會話,未成功解鎖

====================================================================================================
處理方法二 :

a、 找到你要殺掉的那個SESSION, 並記下paddr

SELECT sid, username, paddr, status FROM v$session WHERE username = '用戶名' ;
example:SELECT sid, username, paddr, status FROM v$session WHERE username = 'XNJW0419' ;
SID USERNAME PADDR STATUS
---------- ------------------------------ -------- --------
10 XNJW0419 2B5E2E2C KILLED

b、 找到這個SESSION所對應的spid

SELECT * FROM v$process WHERE addr = '上面查尋的paddr';
example:SELECT ADDR,PID,SPID,USERNAME,SERIAL#,TERMINAL FROM v$process WHERE addr = '2B5E2E2C';
ADDR PID SPID USERNAME SERIAL# TERMINAL
-------- ---------- ------------ --------------- ---------- ----------------
2B5E2E2C 44 1204 SYSTEM -99 JWC

c、 殺掉spid所標識的那個進程

D:\>orakill sid  spid (注:cmd命令窗口中執行 只有oracle服務器端纔有orakill命令)
example: D:\>orakill oemrep 1204

提示:KILL OF THREAD id 1204 IN INSTANCE oemrep successfully signalled.

結果:成功刪除該SESSION,表也解鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章