oracle中帶LOCAL=NO參數的串連

來源:互聯網
上載者:User

oracle串連常見的有帶LOCAL=NO參數或帶LOCAL=YES的進程。

LOCAL=NO:非本地串連,即網路連接。它是通過Listener 串連到伺服器的。用戶端的應用通過用戶端的監聽向伺服器的監聽發送請求,伺服器的監聽接收後,在與資料庫連接,執行相關操作,在把結果返回給用戶端。這是通過監聽的流程。 所以在用戶端需要配置監聽,即配置tnsnames.ora。

LOCAL=YES:本地串連。 本地串連不走監聽,所以在服務監聽沒有啟動的情況下,通過本地的sqlplus 還是可以連上資料庫的。

[oracle@localhost ~]$ ps -aux | less

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND

oracle     469  0.0  0.4 10759972 320408 ?   Ss   May28   0:05 oracleorcl (LOCAL=NO)

oracle     495  1.2 10.1 10762344 7505684 ?  Rs   May28 356:58 oracleorcl (LOCAL=NO)

oracle     863  1.1 10.0 10762344 7455964 ?  Ss   May28 330:21 oracleorcl (LOCAL=NO)

如果應用使用持久串連的話(例如串連池),這些進程的存活時間應該是比較長的。

不過LOCAL=NO的進程還有一個現象就是,當用戶端崩潰的時候(例如plsql dev或toad無故死掉),我們只能結束程式,但oracle並不會自動釋放他們之間建立的監聽進程。沒有釋放的相關進程還是繼續佔用系統資源。所以對於這些已經無用的進程,我們可以把它kill掉。

更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

下面指令碼是kill 掉連線時間超過3天的網路連接的進程。 把指令碼放在crontab裡,定時執行即可。不過在生產環境慎用!

kill.sh:

#!/bin/sh

ps -e -o pid -o etime -o args|grep oracle|grep LOCAL=NO|grep ->/tmp/tmpfile

#ps -e -o pid -o etime -o args|grep oracle|grep LOCAL=NO|grep -|awk '{print $2}'|awk -F: '{print $1}'

cat /tmp/tmpfile|while read LINE

do

TIME=`echo $LINE|awk '{print $2}'`

TIME=`echo $TIME|awk -F- '{print $1}'`

if [ $TIME -gt 3 ]

then

echo $LINE|awk '{print $1}'|xargs -t -n1 kill -9

fi

done

rm -f /tmp/tmpfile

本文出自 “richard的筆記-積微成著” 部落格,請務必保留此出處http://zxf261.blog.51cto.com/701797/756318

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.