oracle - JDBC 连接失败并出现 ORA-12516

标签 oracle jdbc oracle-xe

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

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

无论我以什么顺序运行测试,都会发生这种情况,因此问题似乎是我耗尽了数据库服务器上的某种资源。

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

select count(*) from v$session;

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

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

最佳答案

您可能需要增加 PROCESSES 参数的值。还可以执行“lsnrctl servcies”命令来查看服务是否显示为被阻止。我记得一个类似的问题,监听器很聪明,可以计算服务请求的连接数量。在 PMON 通知监听器之前,监听器不会获悉断开连接的情况。这可能是 5 或 10 分钟后。因此,监听器认为您有很多开放连接,并决定主动出击,不再分发更多连接 - 直到 PMON 另有通知。如果增加 PROCESSES 参数,您可能能够增加窗口中可能建立的连接数。

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

关于oracle - JDBC 连接失败并出现 ORA-12516,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281523/

相关文章:

c - OCI中如何获取sql_id

performance - dbms_output.put_line

oracle - Oracle:调用包内的存储过程

oracle - SAS:如何通过 SQL 传递将本地 SAS 表复制到 Oracle

mysql - 数据库连接错误.....无法加载驱动程序类...数据源异常

java - 有没有办法在 Oracle 11g XE 上安装 java?

oracle - 什么是使用oracle数据库空间? ("ORA-12953: ... exceeds the maximum allowed database size")

java - 如何通过 JDBC 使用包含问号 "?"的 PostgreSQL JSON(B) 运算符

java - JDBC - 结果集数据处理 : Strange behaviour : default fetchsize returned

oracle - Oracle XE 与 SQL Developer 之间的差异