ORA-00020: maximum number of processes (xxxx) exceeded 報錯解決方法
轉自:http://blog.51cto.com/lee90/1788124
今天java開發在連線線上的oracle大量導資料,一會提示連線不上資料庫了。我本地用sqldeveloper也連線不上。
登入到伺服器,重啟oracle,本地還是不能連線。
在xshell裡面登入oracle
# su - oracle
# sqlplus / as sysdba 連線Oracle
提示要輸入使用者名稱和密碼。
並報錯ORA-00020: maximumnumber of processes (300) exceeded
根據報錯資訊是由於processes程序數達到了最大值。
常規方法無法登入,我們連線時候要加上-prelim引數
# sqlplus -prelim/ as sysdba 這樣終於登入進Oracle的SQL介面
【參考http://blog.sina.com.cn/s/blog_ad6555610101ar4t.html 、 http://blog.sina.com.cn/s/blog_ad6555610101ar46.html】
SQL> set linesize 500;
SQL> show parameter processes;
可以看到預設的processes設定的是300. 太小了,稍後我們得改一改。
系統生產系統,不能重啟資料庫,好在系統過了一會兒恢復正常了。主要是因為大量資料庫的插入修改操作造成的。
解決方案:
在系統空閒時,修改系統processes引數為1000,重啟資料庫。【processes引數是靜態引數,修改後需要啟動資料庫。】
SQL> alter system set processes=1000 scope=spfile;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
SQL> show parameter processes;
可以看到現在processes 引數被改成1000了。
我們再執行
SQL> show parameter spfile; 看下spfileora11g.ora檔案的路徑
然後退出oracle控制檯,到shell終端介面。
# cp /data/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora/tmp
# vim /tmp/spfileora11g.ora 【這是個二進位制檔案,開啟會顯示部分亂碼,但是我們能看到processes=1000,說明已經寫入配置檔案了】