近期在做項目的過程中,使用oracle時碰到了如下兩個異常:
ORA-12519, TNS:no appropriate service handler found;
ORA-00020:maximum number of processes (150) exceeded。
下文我們就來看一下產生此問題的原因和解決辦法。
原因分析:
對於數據庫的進程數超過最大值,只有資源打開之后,沒有及時的關閉,或者說資源打開之后不正常的關閉界面造成數據庫中的process處於inactive,沒有釋放,需要修改數據庫的進程數據。
解決辦法:
使用sys,以sysdba權限登錄,可以通過sqlplus或PLsql連接至數據庫通過command命令行進行修改。 首先使用 show parameter spfile; 看下 spfile文件是否存在 如果spfile文件存在的話,即對應的VALUE 是 /u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora話,修改對應的最大進程數:
SQL> show parameter processes; //查看processes連接數設置 SQL> show parameter sessions; //查看sessions連接數設置 SQL> alter system set processes=3000 scope=spfile; //設置processes連接數 SQL> shutdown immediate; SQL> startup SQL> show parameter processes; //查看processes連接數設置
如果spfile文件不存在的話,即對應的VALUE 是Null值的話,修改對應的最大進程數方法如下:
SQL> show parameter processes; //查看processes連接數設置 SQL> create spfile from pfile='u01/app/oracle/product/11.2.0/dbhome_1/dbs/initdevdb.ora' //切換到spfile啟動 SQL> shutdown immediate; SQL> show parameter spfile; //在顯示spfile文件,可以看到Value不為空 SQL> alter system set processes=3000 scope=spfile; //設置processes連接數 SQL> shutdown immediate; SQL> startup SQL> show parameter processes; //查看processes連接數設置,可以看到已經啟動成功 SQL> show parameter sessions;
也可以使用
SQL> show parameter processes;
SQL> alter system set processes=500 scope = spfile;
SQL> create pfile from spfile;
然后重啟數據庫,再次show,已經修改成了500了。
備注:
安裝11g,過程中提示 未找到文件 E:\app\xxj\product\11.2.0\dbhome_1\owb\external\oc4j_applications\applications\WFMLRSVCApp.ear 解決辦法: 將win64_11gR2_database_2of2中的\win64_11gR2_database_2of2\database\stage\Components\*拷到\win64_11gR2_database_1of2\database\stage\Components目錄下即可。