自动终止不活动的会话

概述

今天我们要创建脚本,自动终止 oracle 数据库中的非活动会话。在这里我要杀死 15 分钟的旧的非活动会话

解决方案

第 1 步:查找 15 分钟前的非活动会话

要查找 15 分钟的旧非活动会话,我们使用以下命令。复制以下命令并创建一个扩展名为“ .sql ”的脚本。在我的例子中,我正在创建一个名为“ inactive_ses.sql ”的脚本。您可以使用任何名称创建脚本。

我的脚本的位置:/u01/scripts/inactive_ses.sql

$vi /u01/scripts/inactive_ses.sql

set lines 600
set pages 600
TTITLE OFF
SET HEAD OFF

SELECT 'Alter system kill session ''' || SID || ',' || SERIAL# || '''immediate;' FROM V$SESSION
WHERE STATUS != 'ACTIVE'
AND USERNAME = 'SCOTT'
AND WAIT_CLASS = 'Idle'
AND round(SECONDS_IN_WAIT/60,2) > 15;

第 2 步:使用上述脚本创建 shell 脚本

在 shell 脚本中,我们调用步骤 1 脚本,它帮助我们找到 15 分钟的旧会话并使用步骤 1 查询的输出创建新脚本。

$vi /u01/scripts/kill_inactive_ses.sh

export ORACLE_SID=digital
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/
$ORACLE_HOME/bin/sqlplus -S "/as sysdba" @/u01/scripts/inactive_ses.sql > /u01/scripts/kill_inactive_ses.sql
$ORACLE_HOME/bin/sqlplus -S "/as sysdba" @/u01/scripts/kill_inactive_ses.sql > /u01/scripts/kill_inactive_ses_out.log
exit

创建 shell 脚本后,我们需要更改权限。

权限前:

 
$ chmod 775 kill_inactive_ses.sh

权限后:

 

第 3 步:在 crontab 中安排 shell 脚本

这是最后一步,在这一步中,我们在 crontab 中安排 shell 脚本,如下例所示。

 
$crontab -e

*/5 * * * * /u01/scripts/kill_inactive_ses.sh

 参考

https://ocptechnology.com/automatically-kill-inactive-sessions/

posted @ 2023-01-04 14:36  雪竹子  阅读(97)  评论(0编辑  收藏  举报