KILL SESSION 相關

zecaro發表於2011-03-09

http://jaffardba.blogspot.com/2010/02/why-alter-system-kill-session-immediate.html

 

        最近在使用ALTER SYSTEM KILL SESSION 'sid,serial#'; kill掉一個inactive的session時,marked for kill,隨後發現很久都沒有從v$session中清理掉。然後查詢到對應的os上的程式,程式狀態還是很正常的,傳送了kill -3,就清理掉了(當然kill -9肯定ok啦)。

        既然遇到了,那就研究下~

I am pretty sure that many of us come across of situations when a killed session by 'alter system kill session' command did put the session in 'KILLED' status and never released the session  for a long time on the database. It could be due to the fact that the session would be rolling back the ongoing transaction.
Whenever we are in such situation, we generally try to find out the OS pid (on UNIX OS) associated with the killed session (which is a bit difficult task, as the killed session paddr in v$session changes while the addr corresponding value in v$process does not), and kill the associated OS process with 'kill -9' command on the OS level.
I have found the IMMEDIATE option with the 'alter system kill session' is more useful as it writes the following information in the alert.log file after killing the session and also try to finish the things at the earliest possible to close the session from the database:

Wed Feb 10 11:02:39 2010 
Immediate Kill Session#: 515, Serial#: 36366
Immediate Kill Session: sess: c0000001be20d9f0  OS pid: 14686

As you see, it writes the time stamp when the session was killed, and also gives the associated OS pid of the killed session in the alert.log. As per Oracle documentation, 'Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions, release all session locks, recover the entire session state, and return control to you immediately.'

Syntax:

alter system kill session 'sid,serial#' IMMEDIATE;

Regards,

Jaffar

 

 

Hi, Jaffar.

Pls, note that it is not case in 9i.

Regards

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23650854/viewspace-688866/,如需轉載,請註明出處,否則將追究法律責任。

相關文章