alter system kill session ‘sid,serial#’;
如果是RAC環(huán)境,可以指定inst_id:
alter system kill session ‘sid,serial#,@inst_id’;
kill session不會(huì)真正killi掉會(huì)話。只是告訴會(huì)話把主機(jī)kill掉。有些場(chǎng)景下,比如等待遠(yuǎn)程數(shù)據(jù)庫(kù)replay、或者事務(wù)回滾,會(huì)話則不會(huì)立即kill掉自己,而是等待操作完成。這時(shí),在v$session中的狀態(tài)就是“marked for kill”。后續(xù)會(huì)kill掉自己。
還可以加上immediate參數(shù):
alter system kill session ‘sid,serial#’ immediate;
immediate只是立即將控制權(quán)返回給當(dāng)前會(huì)話,而不是等待kill操作完成。
如果被標(biāo)記為kill的會(huì)話存在很久,可以從操作系統(tǒng)層面kill掉對(duì)應(yīng)的進(jìn)程。在操作系統(tǒng)層kill進(jìn)程之前,建議查看一下是否在執(zhí)行回滾操作。
alter system disconnect session
也是用來(lái)kill會(huì)話,和alter system kill session的原理類似。語(yǔ)法略有差別:
SQL> ALTER SYSTEM DISCONNECT SESSION ‘sid,serial#’ POST_TRANSACTION;
SQL> ALTER SYSTEM DISCONNECT SESSION ‘sid,serial#’ IMMEDIATE;
post_transaction選項(xiàng)在斷開(kāi)會(huì)話之前,會(huì)等待事務(wù)結(jié)束;immediate會(huì)立即斷開(kāi)會(huì)話,在進(jìn)行的事務(wù)會(huì)回滾。
disconnect會(huì)殺掉對(duì)應(yīng)會(huì)話的后臺(tái)進(jìn)程,kill不會(huì)。