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

Oracle:使用JDBC url的连接间歇性问题,oracle,oracle-sqldeveloper,database-administration,Oracle,Oracle Sqldeveloper,Database Administration,SQL developer提供了多种连接到数据库实例的方法 如果我选择Basic方法,将hostname、port和SID分别提供到输入框中,则数据库连接运行时不会出现任何问题 但是,如果我选择Advanced方法,它整体上提供以下JDBC url: jdbc:oracle:thin:@hostname:port:SID 点击Test按钮,有时状态显示为Success,但有时会弹出如下错误消息: Status : Failure -Test failed: Listener refused t

SQL developer提供了多种连接到数据库实例的方法

如果我选择
Basic
方法,将
hostname
port
SID
分别提供到输入框中,则数据库连接运行时不会出现任何问题

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

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,那么数据库实例侦听器不能容忍多个访问?我想我只是弥补一下…

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

  • 增加Oracle允许的连接大小
  • 减少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" />
    
    现在一切都顺利…干杯

    <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" />