一:问题说明:
在PL/SQL Developer
Version 11.0.5.1790 (64.bit)
使用PL/SQL Developer进行kill会话,发现没有kill会话的选项。
客户咨询,这种kill会话的情况是属于正常kill会话还是属于立即kill会话:
二 跟踪测试:
使用PLSQL连接测试数据库,并定位到当前会话ID:
PL/SQL会话信息:
SID=404 serial#=24050
使用Oracle 10046事件进行跟踪该会话:
查询出OS进程ID:
select spid from v$ process where addr in (select paddr from v$session where sid=404);
SPID
13657
SQL> oradebug setospid 13657;
Oracle pid: 107, Unix process pid: 13657, image: oracle@rac1
SQL> oradebug unlimit;
Statement processed.
SQL> oradebug event 10046 trace name context forever,level 12;
Statement processed.
SQL> oradebug tracefile_name
/oracle/app/diag/rdbms/orcl/orcl1/trace/orcl1_ora_13657.trc
使用PL/SQL进行kill会话:
SQL> oradebug event 10046 trace name context off;
Statement processed.
查看trace文件:
结论:
从trace文件中可以明显看出Alter system kill session ‘409,42407’语句,因此使用PLSQL 11结束会话模式属于正常结束会话.并不属于立即结束会话。
附:
在最新版的PLSQL 13版本中,已经具有杀会话选项:
关于加不加immediate的区别:
如果不加IMMEDIATE,仅仅是标记该事务为中断,等待PMON进程来回收该SESSION所占用的资源及释放锁等,
如果加IMMEDIATE,那么就可以实现立即结束会话。