【问题标题】:JDBC connection failing with ORA-12516JDBC 连接失败并出现 ORA-12516
【发布时间】:2012-05-04 02:56:15
【问题描述】:

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

【问题讨论】:

    标签: oracle jdbc oracle-xe


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        几年后……

        见: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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-01
          • 2011-12-31
          • 2017-12-14
          • 1970-01-01
          • 2012-09-18
          • 2018-06-22
          • 2015-06-16
          • 1970-01-01
          相关资源
          最近更新 更多