您的位置:首页 > 数据库 > Oracle

【转】ORACLE定期清理INACTIVE会话

2016-12-21 18:23 162 查看
源地址:http://www.cnblogs.com/kerrycode/p/3636992.html

[code]







[/code]
[/code]
如果是RAC环境,那么最好使用下面SQL语句,使用全局视图GV$SESSION。

[code][code]







[/code]
[/code]

接下来创建存储过程SYS.DB_KILL_IDLE_CLIENTS. 方便调用该功能执行kill inactive 会话。注意:xxx部分用实际业务的PROGRAM来替代。

[code][code]




























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

[code][code]



























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

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

[code][code]















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

0,15,30,45 * * * * /home/oracle/cron/session/bin/killSession.sh >/dev/null 2>&1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: