Oracle:使用JDBC URL连接间歇性问题

时间:2013-02-04 15:17:27

标签: oracle oracle-sqldeveloper database-administration

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

如果我选择Basic方法(分别在输入框中提供hostnameportSID),则数据库连接会毫无问题地运行。

但是,如果我选择Advanced方法,它在整体上提供以下JDBC网址:

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,那么数据库实例监听器不能容忍多个访问?我想我就是这样做的......

1 个答案:

答案 0 :(得分:0)

找到问题,简而言之,问题可以解决两个选择之一:

  1. 增加Oracle允许的连接大小
  2. 减少JNDI允许的连接大小
  3. 第一个解决方案由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" />
    

    现在一切正常,没有问题......干杯......