Kill Oracle Local=NO

531968912發表於2016-09-28
linux:

所有含有關鍵字“LOCAL=NO”的程式,這是Oracle資料庫中遠端連線程式的共同特點,因此透過以下命令可以kill掉所有的程式

ps -ef |grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9

管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。下面說說用管道符聯接起來的幾個命令:

“ps -ef”是Red Hat 裡檢視所有程式的命令。這時檢索出的程式將作為下一條命令“grep LOCAL=NO”的輸入。

“grep LOCAL=NO”的輸出結果是,所有含有關鍵字“LOCAL=NO”的程式,這是Oracle資料庫中遠端連線程式的共同特點。

“grep -v grep”是在列出的程式中去除含有關鍵字“grep”的程式。

“cut -c 9-15”是擷取輸入行的第9個字元到第15個字元,而這正好是程式號PID。

“xargs kill -9”中的xargs命令是用來把前面命令的輸出結果(PID)作為“kill -9”命令的引數,並執行該命令。“kill -9”會強行殺掉指定程式,這樣就成功清除了oracle的所有遠端連線程式。其它類似的任務,只需要修改“grep LOCAL=NO”中的關鍵字部分就可以了。



aix:
kill -9 'ps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'

kill -9 `ps -ef | grep LOCAL|grep -v grep awk '{print $2}'`

ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9
ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9
ps -ef|grep -v grep|grep LOCAL=NO|awk '{print $2}'|xargs kill -9
ps -ef|grep -v grep|grep LOCAL=NO|awk '{print $2}'|xargs kill -9

資料轉換的同事發現,生產庫現在連線不上。小機系統為AIX5.3,用oracle使用者登入反映很慢,之後提示 0403-030 The fork function failed. Too many processes already exist。 其他使用者能夠正常登入。

看來不是oracle的問題了
# ps -ef|grep oracle|wc
     126    1239   10614

# lsattr -E -l sys0 -a maxuproc
maxuproc 128 Maximum number of PROCESSES allowed per user True
# chdev -l sys0 -a maxuproc='800'
sys0 changed

問題解決



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2125674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章