天萃荷净
分享一篇关于Oracle数据库会话session管理的方法,通过脚本来实现批量kill session的方法
在很多使用,因为各种原因,我们需要定时批量的kill一部分session,用来释放数据库部分资源,这里是因为bug导致temp不能正常释放,也可能是因为bug导致pga不释放,还有可能是因为太多inactive占用资源等等.我这里提供了两种方法来实现该功能
1.存储过程实现kill session
--创建记录表
CREATE TABLE kill_session_record
(
kill_time DATE,
kill_statement VARCHAR2 (1000)
)
/
--创建kill session存储过程
CREATE OR REPLACE PROCEDURE kill_inactive_session
IS
CURSOR c
IS
SELECT sid, serial#
FROM v$session s
WHERE s.status = 'INACTIVE' AND s.username = 'oracleplus';
k_sid NUMBER;
k_serial NUMBER;
BEGIN
OPEN c;
FETCH c
INTO k_sid, k_serial;
WHILE c%FOUND
LOOP
BEGIN
EXECUTE IMMEDIATE
'ALTER SYSTEM DISCONNECT SESSION '''
|| k_si