Posted on 2011-05-18 11:46
IceWee 閱讀(865)
評論(0) 編輯 收藏 所屬分類:
Database
ORA-12516: TNS: 監聽程序找不到符合協議堆棧要求的可用處理程
以前沒有遇到過這個錯誤,一般常見的就是ORA-12514,這個錯誤是第一次遇到,我們是用SSH框架的,數據庫鏈接由spring來管理,所以不擔心連接不能及時釋放的問題。但是現在數據庫不只是我們做web的在使用,還有做通訊的同事,今天上午突然發現PL/SQL連不上數據庫了,報的就是這個錯誤。
網上查找資料發現出現這個問題是由于Oracle的會話數不夠導致的,使用命令“show parameter processes;”,返回
NAME TYPE VALUE
----------------------------------- ------------- ------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
可見當前最大連接數是150,于是我到數據庫服務器使用DBA登陸,結果也登陸不上,報錯ORA-12520,看來問題很嚴重啊!我查看了listener.log,發現有個IP創建了很多的鏈接,最終鎖定問題原因,就是因為同事沒有及時釋放連接導致連接數不夠。解決此法最好是程序上注意,使用后及時釋放,如果你寫的是循環,那就很危險了。也可以修改最大連接數,如果服務器能頂得住。