oracle 清理inactive,ORACLE定期清理INACTIVE会话

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 另外,由于kill session是直接将session kill掉,有可能出现导致事物回滚的现象,其实我们可以使用disconnect session完成当前事务并终止session.这种方式比alter system kill session跟安全可靠。

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

另外,由于kill session是直接将session kill掉,有可能出现导致事物回滚的现象,其实我们可以使用disconnect session完成当前事务并终止session.这种方式比alter system kill session跟安全可靠。

1: CREATE OR REPLACE PROCEDURE SYS.DB_KILL_IDLE_CLIENTS AUTHID DEFINER AS

2: job_no number;

3: num_of_kills number := 0;

4: BEGIN

5:

6: FOR REC IN

7: (SELECT SID, SERIAL#, INST_ID, MODULE,STATUS

8: FROM gv$session S

9: WHERE S.USERNAME IS NOT NULL

10: AND UPPER(S.PROGRAM) IN ('xxxx', 'xxxx')

11: AND S.LAST_CALL_ET >= 2*60*60

12: AND S.STATUS<>'KILLED'

13: ORDER BY INST_ID ASC

14: ) LOOP

15: ---------------------------------------------------------------------------

16: -- kill inactive sessions immediately

17: ---------------------------------------------------------------------------

18: DBMS_OUTPUT.PUT('LOCAL SID ' || rec.sid || '(' || rec.module || ')');

19: execute immediate 'alter system disconnect session ''' || rec.sid || ', ' ||

20: rec.serial# || '''immediate' ;

21:

22: DBMS_OUTPUT.PUT_LINE('. killed locally ' || job_no);

23: num_of_kills := num_of_kills + 1;

24: END LOOP;

25: DBMS_OUTPUT.PUT_LINE ('Number of killed system sessions: ' || num_of_kills);

26: END DB_KILL_IDLE_CLIENTS;

27: /

然后,我们可以在作业(JOB)或Schedule里面定期调用该存储过程,也可以通过后台作业结合shell脚本实现定期清理空闲会话的功能。例如如下所示。

创建killSession.sh脚本,调用该存储过程SYS.DB_KILL_IDLE_CLIENTS

1: #!/bin/bash

2:

3:

4:

5: logfile=/home/oracle/cron/session/log/killSession.log

6:

7: echo " " 》 $logfile 2>&1

8: echo "START ----`date`" 》 $logfile 2>&1

9: sqlplus /nolog 《STATS

10: connect / as sysdba

11: exec sys.db_kill_idle_clients;

12: exit;

13: STATS

14:

15: echo "END ------`date`" 》 $logfile 2>&1

在crontab里面配置后台作业,每隔15分钟运行一次,清理哪些满足条件的空闲会话。

0,15,30,45 * * * * /home/oracle/cron/session/bin/killSession.sh >/dev/null 2>&1

[1] [2]

gtm5igngthm.png

1428d0e076c3959ab11d28a39bc84fab.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值