0

SQL 开发人员提供了多种连接数据库实例的方法。

如果我选择单独Basic提供hostname,portSID输入框的方法,数据库连接运行没有任何问题。

但是,如果我选择Advanced方法,它整体提供了以下JDBC url:</p>

jdbc:oracle:thin:@hostname:port:SID

并点击Test按钮,有时状态会显示Success,但有时会弹出如下错误消息:

Status : Failure -Test failed: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found

那么这两种方法为什么以及如何存在这种差异呢?它是来自 SQL 开发人员的错误吗?

更新 1

我发现这个问题恰好发生在我运行具有 JNDI 连接到同一个数据库实例的 Java EE 应用程序时,所以如果其中一个是 JNDI,数据库实例侦听器不能容忍多个访问?我想我只是弥补...

4

1 回答 1

0

找到问题,简而言之,问题可以通过以下两种选择之一来解决:

  1. 增加 Oracle 允许的连接大小
  2. 减少 JNDI 允许的连接大小

第一个解决方案由 DBA 操作,但第二个可以由开发人员实现,在我的应用程序的 JNDI 设置中(我们在 Tomcat 上测试 JNDI),允许到池的最大连接数对于当前 Oracle 服务可以处理的太多:

<Resource name="jdbc/schema_A" auth="Container" type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@hostname:1521:orcl"
    username="app_A" password="app_A" maxActive="20" maxIdle="10" maxWait="-1" />

maxActive="20" maxIdle="10"太多因此错误消息,所以我将其更改为

<Resource name="jdbc/schema_A" auth="Container" type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@hostname:1521:orcl"
    username="app_A" password="app_A" maxActive="1" maxIdle="1" maxWait="-1" />

现在一切正常……干杯……

于 2013-02-04T16:40:10.907 回答