近期在做项目的过程中,使用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:appxxjproduct11.2.0dbhome_1owbexternaloc4j_applicationsapplicationsWFMLRSVCApp.ear 解决办法: 将win64_11gR2_database_2of2中的win64_11gR2_database_2of2databasestageComponents*拷到win64_11gR2_database_1of2databasestageComponents目录下即可。