基本 现 象:
在 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 from v$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 = 1000 scope = 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 ;