ITPub博客

首页 > 数据库 > Oracle > 利用shell脚本定时清理某个sql_id的session

利用shell脚本定时清理某个sql_id的session

原创 Oracle 作者:adamjunior 时间:2020-04-23 18:04:27 0 删除 编辑

1.根据服务器负载压力清理某个具体SQL_ID的会话

#!/bin/bash

starttime=`date +'%Y-%m-%d %H:%M:%S'`

load=`uptime | awk '{print $10}'`

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=DEV

if [ $load <=10 ]

then 

$ORACLE_HOME/bin/sqlplus -S '/ as sysdba' << EOF

set linesize 999 feedback on verify on echo on;

spool /home/oracle/killsess.out;

SELECT SID,SERIAL#,INST_ID,MODULE,STATUS,event FROM gv\$session WHERE USERNAME IS NOT NULL AND MACHINE='oracle.test.com' AND STATUS= 'ACTIVE' AND SQL_ID='7ydfd2vdg9k2w';

begin

  for  rec in (SELECT SID,SERIAL# FROM gv\$session  WHERE USERNAME IS NOT NULL AND MACHINE='oracle.test.com' AND STATUS= 'ACTIVE' AND SQL_ID='7ydfd2vdg9k2w')

  loop 

    execute immediate 'alter system kill session ''' || rec.SID || ', ' ||rec.SERIAL# || '''immediate' ;

  END LOOP;

END;

/

spool off;

exit;

EOF

fi

exit 0



2.根据服务器负载压力清理某个具体SQL_ID的会话

#!/bin/bash

load=`uptime | awk '{print $10}'`

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=DEV

if [ $load <=10 ]

then 

$ORACLE_HOME/bin/sqlplus -S '/ as sysdba' << EOF

set linesize 999;

set serveroutput on;

spool /home/oracle/killsess.out

declare num_session int;

begin

  select count(*) into num_session from gv\$session where STATUS= 'ACTIVE' AND SQL_ID='dj7p00jr2b9vk';

  if  num_session >=3 then

for  rec in (SELECT SID,SERIAL#,EVENT FROM gv\$session  WHERE USERNAME IS NOT NULL AND MACHINE='oracle.vastdata.com' AND STATUS= 'ACTIVE' AND SQL_ID='dj7p00jr2b9vk')

      LOOP 

        execute immediate 'alter system kill session ''' || rec.SID || ', ' ||rec.SERIAL# || '''immediate';

dbms_output.put_line('the session ' || rec.sid || ',' || rec.serial# || ' waiting for '|| rec.event || ' has being killed;');

      END LOOP;

  end if;

END;

/

spool off;

exit;

EOF

fi

exit 0


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959726/viewspace-2687971/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: PG_基础查询SQL
请登录后发表评论 登录
全部评论
三年之病,求七年之艾。岂可得之?

注册时间:2020-01-14

  • 博文量
    23
  • 访问量
    26395