【正确答案】一般情况下,可以通过执行SQL语句“ALTER SYSTEM KILL SESSION 'SID,SERIAL#'”直接杀掉(结束)会话,当SESSION是ACTIVE的时候,ALTER SYSTEM KILL SESSION只是将SESSION的状态标识为KILLED, SERVER变为PSEUDO状态,但并不会释放SESSION持有的资源,所以,在执行完ALTER SYSTEM KILL SESSION后,会话还是一直存在。执行命令KILL SESSION的时候,后边加上IMMEDIATE,这样在没有事务的情况下,相关会话就会立即释放而不会变为KILLED的状态,当有事务存在的情况下,会先进行回滚相关的事务,然后释放会话所占有的资源。
另外,由于变为KILLED状态的回话的PADDR列都变成了另外一个值,因此,通过平常的连接方式就没有办法关联到后台进程,在Oracle 11g下提供了CREATOR_ADDR列,该列可以关联到后台进程,对于Oracle 10g可以通过特殊的SQL找到后台的进程号。
Oracle 10g可以使用如下的脚本:

Oracle 11g可以使用如下的脚本:
