我有一些与 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% 失败。