ORACLE利用事務(wù)和封鎖機制提供數(shù)據(jù)并發(fā)存取和數(shù)據(jù)完整性,在一事務(wù)內(nèi)由語句獲取的全部封鎖在事務(wù)期間被保持,直至該事務(wù)提交或回滾時被釋放。對于用ORACLE7數(shù)據(jù)庫服務(wù)器構(gòu)造的較大規(guī)模的企業(yè)級客戶/服務(wù)器應(yīng)用系統(tǒng),眾多的客戶端由于各種各樣的原因(硬件故障、意外掉電等等)難免造成用戶會話的意外中止,而ORACLE本身不主動清除這些垃圾會話(session),如果這些會話(session)恰好在當(dāng)前事務(wù)期間對數(shù)據(jù)庫對象(表、視圖等)加了鎖,往往造成其他客戶端的用戶不能正常繼續(xù)工作。如何及時清除這些垃圾會話(session)、釋放所占用的資源,這正是本文所要討論的內(nèi)容。2具體方法ORACLE數(shù)據(jù)庫具有審計其內(nèi)部所有發(fā)生的活動的能力,每一個企圖與數(shù)據(jù)庫連接的活動都可以被審計(Audit),即所謂的登錄審計(LoginAudit)。
為開化等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及開化網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、網(wǎng)站制作、開化網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
sqlplus環(huán)境下 alter system kill session 'sid,serial#';
如果不行的話在操作系統(tǒng)下操作:
windows: orakill 實例名 spid
linux: kill -9 spid
舉個例子
通過session id (SID) 找到系統(tǒng)進(jìn)程號 然后kill 進(jìn)程
SQL select spid from v$process where addr=(select paddr from v$session where rownum=1 and sid=(select userenv('SID') from dual));
SPID
------------------------
12135
spid 系統(tǒng)進(jìn)程號
SQL ho kill -9 12135
kill 掉這個進(jìn)程 就完了
SQL select sysdate from dual;
select sysdate from dual
*
第 1 行出現(xiàn)錯誤:
ORA-03135: 連接失去聯(lián)系
進(jìn)程 ID: 12135
會話 ID: 65 序列號: 19533
在Oracle中,可以用kill session來終止一個會話進(jìn)程,其基本語法結(jié)構(gòu)為:
alter system kill session 'sid,serial' ;
ORACLE官網(wǎng)對于ora-00031異常給出的解釋:
ORA-00031 session marked for killCause: The session specified in an ALTER SYSTEMKILL SESSION commandcannot be killed immediately because the session isinvolved in anon-interruptible operation (for example, rollingback a transaction or beingblocked by a network operation). The session hasbeen marked to be killed assoon as possible after the current operation is done.Action: No action is required for the session to bekilled, but further executionsof the ALTER SYSTEM KILL SESSION command onthis session may cause thesession to be killed soone
意思是說當(dāng)前你的這個session正在進(jìn)行回滾等正在運行狀態(tài)的操作,所以不能馬上刪除該會話。系統(tǒng)會在該session的當(dāng)前操作完成后自動刪除這個session。所以,你可以等等。應(yīng)該就沒問題啦
你可以考慮使用在操作系統(tǒng)層面來殺掉客戶端會話的連接進(jìn)程,這樣資源馬上就可以釋放掉,如果只是在數(shù)據(jù)庫級別的話,即便是管理員殺掉會話,那么v$session里面也不過是顯示killed狀態(tài),而不是真正的釋放掉,同時如果此時實際的連接數(shù)量達(dá)到參數(shù)session設(shè)定數(shù)量上線的話,新的連接將會報錯無法連接,直到資源釋放才可以。