Jdbc - 连接拒绝异常

时间:2017-03-02 19:22:25

标签: java oracle jdbc database-connection

我使用jdbc将我的java程序与Oracle数据库连接起来。 当数据库的命中率很低时,程序运行正常,但是当数据库的命中率增加时,我面临以下异常:

  

java.sql.SQLException:Io异常:网络适配器不能   建立connectionjava.sql.SQLException:已关闭连接

P.s我已经在finally块中关闭了连接。

try{ 
     con.close();
    }catch(Exception ex){
       System.out.println(ex);
 }

知道如何解决此问题吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

  

当数据库的命中率很低时,程序运行正常

似乎您的应用程序尝试与数据库建立连接,但现有连接数等于数据库允许的SESSIONS数,因此数据库拒绝建立进一步的连接。

要验证相同内容,您可以看到允许的和当前会话详细信息的数量,对于Oracle,您可以使用以下查询:

数据库配置为允许的会话数

SELECT name, value FROM v$parameter WHERE name = 'sessions'

当前有效的会话数

SELECT COUNT(*) FROM v$session

答案 1 :(得分:0)

我不确定您的工作流程,但此问题看起来像您尝试使用已关闭的连接的连接泄漏问题。每当你试图关闭你的连接时,将它放在finally块中。所以,如果发生异常,你不应该错过它。结束结果集,语句和连接的顺序应该是这样的。

try
{
 //open connection
//execute statement
//get resultset
//process resultset
}
catch(Exception e)
{
//Catch exception(using Exception just for example). It is a good programming practice to catch/throw specific exceptions instead of specifying super class Exception.
}
finally
{
rs.close();
stmt.close();
conn.close();
}

解释您是否粘贴了完整的代码会很有帮助。您也可以使用连接池,但如果您没有正确关闭或重复使用它们,您将面临同样的问题。