Oracle 死连接的第二种解决方案

Oracle 死连接前面已经讨论过一些解决方案,但实际应用中还是不是很方面,这里采用两手方案,针对的Unix下的oracle 死连接

       1. 查出inactive 的连接

SELECT  a.SID,b.SPID,a.SERIAL#,c.SQL_TEXT,a.LAST_CALL_ET,a.LOGON_TIME
 from v$session A, V$PROCESS B,v$sqltext c
 where A.PADDR = B.ADDR
   AND a.type != 'BACKGROUND'
   and a.status = 'INACTIVE'
   and a.username = 'NETFORCE'
 
   and a.machine = 'imep1'
   and c.HASH_VALUE=DECODE(a.sql_hash_value, 0, a.prev_hash_value, a.sql_hash_value)
   and c.ADDRESS= DECODE(a.sql_hash_value, 0, a.prev_sql_addr, a.sql_address)
   and c.SQL_TEXT like '%SELECT 1 FROM DUAL%'

这个查询语名可根据各自需求进行修改,重要的是能够得到spid,导出spid为spid.txt(注意为UNIX格式,需要DOS->UNIX)

29380
29368
29402
29400
29396
29418
29442
29501
29509
29497
29493
29495
29533
29515

编写执行shell脚本 kill_spid.sh

#! /bin/sh
infile='/tmp/spid.txt'
j=0
len=`wc -l  $infile`
while test $j -lt $len
do
spid=`tail +$j $infile | head -1`
 echo "start kill -9  $spid"
 kill -9  $spid
j=`expr $j + 1`
done

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章