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

 

 

 

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