5

我有一些与 Oracle-11g XE 对话的单元测试。单独运行每个测试都可以正常工作,但是当我全部运行它们时,前几个通过,其余的在尝试创建数据库连接时失败并出现此错误:

ORA-12516, TNS:listener could not find available handler with matching protocol stack

无论我以什么顺序运行测试都会发生这种情况,所以问题似乎是我正在使用数据库服务器上的某种资源。

我尝试缓慢运行测试,并检查运行期间使用的连接数:

select count(*) from v$session;

会话数始终徘徊在 26 到 28 之间,并且限制设置为 49,所以我不确定问题出在哪里。

如果我快速运行测试,问题也会变得更糟。当我在没有任何额外延迟的情况下运行它们时,90% 会因此错误而失败。我在 tearDown() 中设置了一个睡眠,以便更好地了解正在发生的事情,在这种情况下,只有大约 10% 失败。

4

3 回答 3

3

您可能需要增加 PROCESSES 参数的值。还可以执行“lsnrctl servcies”命令来查看服务是否显示为被阻止。我记得一个类似的问题,其中侦听器很聪明并计算服务请求的连接数。在 PMON 通知它之前,侦听器不会了解断开连接。这可能是 5 或 10 分钟后。所以听众认为你有很多打开的连接,并决定积极主动,不再分发连接——直到 PMON 另有通知。如果您增加 PROCESSES 参数,您可能可以将自己提高到您可能在窗口中建立的连接数。

更新:此链接描述它:https ://forums.oracle.com/forums/thread.jspa?threadID=360226

于 2012-04-23T21:15:50.873 回答
0

查看 v$parameters 以及 alert.log 和 listener.log 中的会话和进程限制 答案就在某处

于 2012-04-23T20:43:18.330 回答
0

几年后...

见:http ://www.eddgrant.com/blog/2010/01/20/increasing-the-number-of-processes-in-oracle-xe.html

在 Sql Plus 中运行它解决了我的问题:

SQL> alter system set sessions=300 scope=spfile; 
SQL> alter system set processes=300 scope=spfile;
于 2016-03-20T19:15:05.340 回答