ITPub博客

首页 > 数据库 > Oracle > ORACLE定期清理INACTIVE会话

ORACLE定期清理INACTIVE会话

原创 Oracle 作者:sjw1933 时间:2023-01-27 20:03:50 0 删除 编辑
CREATE OR REPLACE PROCEDURE SYS.DB_KILL_IDLE_CLIENTS AUTHID DEFINER AS
   job_no number;
   num_of_kills number := 0;
BEGIN
 FOR REC IN
       (SELECT SID, SERIAL#, INST_ID, MODULE,STATUS
        FROM gv$session S
            WHERE S.USERNAME IS NOT NULL  
                 AND S.LAST_CALL_ET >= 4*60*60                              
            AND S.status='INACTIVE'
        ORDER BY INST_ID ASC
            ) LOOP
         ---------------------------------------------------------------------------
         -- kill inactive sessions immediately
         ---------------------------------------------------------------------------
         DBMS_OUTPUT.PUT('LOCAL SID ' || rec.sid || '(' || rec.module || ')');
         execute immediate 'alter system disconnect session ''' || rec.sid || ', ' || rec.serial# || '''immediate' ;
     DBMS_OUTPUT.PUT_LINE('. killed locally ' || job_no);
         num_of_kills := num_of_kills + 1;
   END LOOP;
   DBMS_OUTPUT.PUT_LINE ('Number of killed system sessions: ' || num_of_kills);
END DB_KILL_IDLE_CLIENTS;

 

$ vi /home/oracle/kill_idle_session.sh

. $HOME/.profile
logfile=/home/oracle/killSession.log
echo " " >> $logfile 2>&1
echo "START ----`date`" >> $logfile 2>&1
sqlplus /nolog <<STATS
connect / as sysdba
exec sys.db_kill_idle_clients;
exit;
STATS
echo "END ------`date`" >> $logfile 2>&1

 

crontab -l

42 * * * * su - oracle -c /home/oracle/kill_idle_session.sh >>/home/oracle/kill_idle_session.log


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23825935/viewspace-2932992/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
11年数据库行业经验,Oracle ACE、PG ACE、OCM、IBM Certified DBA、MySQL OCP、PolarDB技术专家、KCP、PCTP、PCSD、达梦师资认证、PolarDB开源社区技术顾问、ITPUB认证专家、某高校外聘教师

注册时间:2019-05-05

  • 博文量
    295
  • 访问量
    300833