设置定时清理Oracle长时间 INACTIVE session 脚本
复制间接执行,或者编辑到文件执行
#### 设置定时清理Oracle长时间 INACTIVE session 脚本if [ ! -d "/home/oracle/cront/" ];thenmkdir /home/oracle/crontelseecho "Do nothing"fi# /home/oracle/cront/ks.sqlecho "set trimspool onspool /home/oracle/cront/kills.sh replaceset pagesize 0set heading offset linesize 32767SELECT 'kill -9 ' || P.SPID FROM V\$PROCESS P WHERE P.ADDR IN (SELECT B.PADDR FROM V\$SESSION B WHERE B.TYPE = 'USER' AND B.STATUS = 'INACTIVE' AND B.LAST_CALL_ET > 3600);exit;spool off" > /home/oracle/cront/ks.sql# /home/oracle/cront/debug.sqlecho "oradebug wakeup 2;exit;" > /home/oracle/cront/debug.sql# /home/oracle/cront/ks.shecho '#!/bin/bash' > /home/oracle/cront/ks.shecho "source /home/oracle/.bash_profilesqlplus / as sysdba @/home/oracle/cront/ks.sqlgrep \"kill\" /home/oracle/cront/kills.sh > /home/oracle/cront/kill.shecho -e >> /home/oracle/cront/cron_kill.logecho \"################# Started 'kill -9' commend at \`date +'%F %T %A'\` ##################\" > /home/oracle/cront/cron_kill.logecho -e >> /home/oracle/cront/cron_kill.log# Kill session/home/oracle/cront/kill.sh >> /home/oracle/cront/cron_kill.log# oradebugecho \"# oradebug , No Information Return\" >> /home/oracle/cront/cron_kill.logsqlplus / as sysdba @/home/oracle/cront/debug.sql# Infoecho -e >> /home/oracle/cront/cron_kill.logecho \"Warning: \`cat /home/oracle/cront/kill.sh | wc -l\` processes Killed. \" >> /home/oracle/cront/cron_kill.logecho -e >> /home/oracle/cront/cron_kill.log echo \"################ Stoped at \`date +'%F %T'\` ################\" >> /home/oracle/cront/cron_kill.log" >> /home/oracle/cront/ks.sh# Grant execute permissionchmod +x /home/oracle/cront/*# Add Crontd(crontab -l | grep -v "ks.sh") | crontab(crontab -l ; echo "*/30 * * * * /bin/bash /home/oracle/cront/ks.sh") | crontab