kill session-KILL_SESSION()

一. 開發背景#

作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                           
相關文章
相關標籤/搜索