技术路线清晰而简单,引发的后果不太可控,诸君慎用!!
利用sys用户建立过程(需要调用动态性能视图v$session),选出会话数量过高的,自动杀掉session,并通过job定时执行实现监控
核心语句
PCOMM:='alter system kill session '''||PSID||','||SERIAL||''' immediate';--引号中没有分号
EXECUTE IMMEDIATE PCOMM;
--自治事务用于记录杀掉的主机会话
PROCEDURE LOG_GN_KILLSESSION_PROCEDURE(kill_machine VARCHAR2,
V_DATE DATE DEFAULT SYSDATE) IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO CQGZFGLPT.LOG_GN_KILLSESSION--该表通过job定时清理(每周一)
VALUES
(kill_machine,to_date(V_DATE,'YYYY-MM-DD hh24:mi:ss'));
COMMIT;
END;
------------------------------------------杀掉会话--------------------------------------------------------------------------
declare
CURSOR CUR_MACHINE IS
SELECT MACHINE
--存储中调用动态性能视图必须以SYS用户创建存储
FROM (SELECT MACHINE,