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 developer的bug吗?
更新1
我发现当我使用JNDI连接到同一个数据库实例来运行Java EE应用程序时,就会发生这个问题,所以如果其中一个是JNDI,那么数据库实例侦听器就不能容忍多个访问。我想这是我编的..。
发布于 2013-02-05 00:40:11
找到问题,简而言之,问题可以解决以下两种选择中的任何一种:
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" />现在没有issues...cheers,一切都可以正常工作了。
https://stackoverflow.com/questions/14689727
复制相似问题