問題描述:
今天突然發現連接數據庫時報錯,用pl/sql dev連接數據時,有時能連接上,有時連接時報:
ORA-12520: TNS: 監聽程序無法找到需要的服務器類型的可用句柄
通過服務器登錄數據庫,報下面的報連接數錯誤:
[oracle@dbserver22 ~]$ sqlplus"/as sysdba"
SQL*Plus: Release 11.2.0.3.0Production on 星期五 11月 14 10:23:23 2014
Copyright (c) 1982, 2011,Oracle. All rights reserved.
ERROR:
ORA-00020: maximum number ofprocesses (150) exceeded
請輸入用戶名:
ERROR:
ORA-01017: 用戶名/口令無效; 登錄被拒絕
……
SP2-0157: 在 3 次嘗試之後無法連接到ORACLE, 退出 SQL*Plus
[oracle@dbserver22 ~]$
和開發溝通了解後,是因為在昨天晚上有新業務上線,業務量增大,導致連接數上升。
解決辦法:
增加進程連接數
--停掉監聽
[oracle@dbserver22 ~]$ lsnrctl stop
--殺掉連接進程
[oracle@dbserver22 ~]$ ps -ef |grep LOCAL=NO | cut -c 10-15 | xargs kill -9
--增加連接數
SQL> alter system set processes=650 scope=spfile;
系統已更改。
--重啟數據庫
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area1.7103E+10 bytes
Fixed Size 2245480 bytes
Variable Size 6744444056 bytes
Database Buffers 1.0335E+10 bytes
Redo Buffers 21708800 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> exit
--啟動監聽
[oracle@dbserver22 ~]$ lsnrctl start
總結:
可能問題的原因很簡單,但准確的定位和找出原因是需要經驗和技巧的,和開發人員的溝通很重要,最終只要找出原因,解決起來可能就很簡單了!