一. 开发背景#
作kill session操做时须要考虑session 占用的回滚段大小.
本程序全部查询结果均排除username为null的会话。
二. 流程图#
三. 参数说明#
1. 函数头#
function kill_session(kill varchar2 default 'false', filter_name varchar2 default null, filter_word varchar2 default null, used_undo_below number default 250, session_id number default 0, serial number default 0) return t_session_info_tab pipelined;
2. 参数#
该参数决定是否执行kill session的操做,对哪些会话执行kill操做由其余参数的过滤条件决定。
该值为'true'时,执行kill操做.
指定按哪一个字段作过滤,接受下面4个值之一,"EVENT","DBUSER", "OSUSER","HASHVALUE"
"EVENT":按session的等待事件作过滤
"DBUSER":按session的username作过滤,当为该值时,filter_word参数会忽略大小写
"OSUSER":按session的osuser作过滤
"HASHVALUE":按session当前执行的sql hash value作过滤,为了保持向9i数据库兼容,不支持SQL ID作过滤条件
- 当为参数为空,而且session_id参数为0时,不指定具体过滤条件,则只显示当前非空闲等待的session。
过滤条件,支持Oracle like的模糊匹配。
如"filter_name"为'EVENT'时,本参数值为'%buffer%',能够列出全部等待事件中含buffer的等待事件。
当参数"kill"的值为'true'时,本参数才有效,kill session的动做只会在undo使用量小于本参数指定值的session实施,单位是M,默认值是250M。
以session的sid为过滤条件,指定本参数后,filter*参数将失效。
指定session的sid时,该sid对应的serial#
四 举例 #
一、以dbuser作过滤条件,kill session。#
SQL> select * from table(dba_session.kill_session('true', 'dbuser','dbmgr')); SID SERIAL USED_UNDO USERNAME STATUS SQL_HASH_VALUE OSUSER PROGRAM EVENT KILLED ---- ---------- ---------- ---------- -------- -------------- ------------------------------ ------------------------------------------------ ------------------------- ------ 93 15 0 DBMGR KILLED 0 lianghaian001 plsqldev.exe SQL*Net message from clie YES nt 97 14 0 DBMGR KILLED 0 lianghaian001 plsqldev.exe SQL*Net message from clie YES
二、显示当前event为'SQL*Net'开头的会话信息。#
SQL> select * from table(dba_session.kill_session(null, 'event','SQL*Net%')); SID SERIAL USED_UNDO USERNAME STATUS SQL_HASH_VALUE OSUSER PROGRAM EVENT KILLED ---- ---------- ---------- ---------- -------- -------------- ------------------------------ ------------------------------------------------ ------------------------- ------ 14 28 0 COW_SUNXIN INACTIVE 0 sunxin005 plsqldev.exe SQL*Net message from clie NO 005 nt 25 362 0 LIANGHAIAN ACTIVE 2749853118 lianghaian001 plsqldev.exe SQL*Net message from clie NO 001 nt 26 273 0 COW_WUXIAO INACTIVE 0 wuxiaoli133 plsqldev.exe SQL*Net message from clie NO LI133 nt