基本现象:
在Windows XP + Oracle 10g 的环境下跑Java程序的Junit测试用例时,每当跑到120几个JunitTest时就会报如下错误,中间似乎有个很短的停顿刷新,然后又可以正常跑后面程序:
Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found The Connection descriptor used by the client was:......
调查原因:
可能是数据库中当前的连接数目已经超过了它能够处理的最大值。
解决方案:
1.获取DB当前连接数:
SQL> select count(*) from v$process; --当前连接数
COUNT(*)
28
2.获取DB允许的最大连接数:
SQL> select value fromv$parameter where name = 'processes'; --数据库允许的最大连接数
VALUE
150
Oracle安装时的连接数默认是150.此时会发现DB的连接数已经不满足程序继续往下测的需求了,所以会出现"Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found".所以这里需要修改DB的连接数来确保JunitTest的正常运行。
3.修改最大连接数:
SQL> alter system setprocesses = 1000scope = spfile; --修改最大连接数
4.重启数据库:
SQL> shutdown immediate;
SQL> startup;
-------------------------------------->>>分割线<<<-------------------------------------
--查看当前有哪些用户正在使用数据
select osuser, a.username, cpu_time/executions/1000000||'s', sql_fulltext, machine
from v$session a, v$sqlarea b
where a.sql_address = b.address
order by cpu_time/executions desc;