概述
今天我们要创建脚本,自动终止 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 脚本后,我们需要更改权限。
权限前:
![](/i/l/?n=23&i=blog/1732072/202301/1732072-20230104143351550-450978999.png)
$ chmod 775 kill_inactive_ses.sh
权限后:
![](/i/l/?n=23&i=blog/1732072/202301/1732072-20230104143430220-1481771348.png)
第 3 步:在 crontab 中安排 shell 脚本
这是最后一步,在这一步中,我们在 crontab 中安排 shell 脚本,如下例所示。
$crontab -e */5 * * * * /u01/scripts/kill_inactive_ses.sh
参考
https://ocptechnology.com/automatically-kill-inactive-sessions/
标签:脚本,ses,inactive,自动,scripts,终止,kill,活动,u01 From: https://www.cnblogs.com/lkj371/p/17024765.html