专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Java相关

jdbc循环连接、断开oracle的诡异有关问题

发布时间:2010-06-05 14:17:46 文章来源:www.iduyao.cn 采编人员:星星草
jdbc循环连接、断开oracle的诡异问题,请教大家
今天遇到一个奇怪的问题,Oralce数据库,重复获取jdbc连接、再立刻关闭,循环200次左右,即抛出异常:

Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
10.72.4.190:1521:orcl

已换Oracle的jdbc驱动,结果还是一样,都抛出类似的异常。期间,也调整了oracle的process数目,但不起作用,因为我实际是在单线程环境中进行的测试。

现在的疑问:
1.为什么Oralce jdbc关闭连接的方法,并没有真正关闭掉连接。
2.在单线程中,应该怎么做,才能彻底关闭jdbc连接。


恳请各位达人帮忙解惑,谢谢。。。



附:测试代码

int i = 0;
Class.forName("oracle.jdbc.driver.OracleDriver");

while (true)
{
  Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@10.72.4.190:1521:orcl", "SYSTEM", "abc");
  conn.close();
  i++;
}



------解决方案--------------------
因为被关掉的 Connection 并没有被 Oracle 数据库马上回收,而是处于 TIME_WAIT 状态。

Windows 中使用 netstat -ano | find ":1521" 可以看到所有的 1521 端口连接,看看有没有 TIME_WAIT 状态的
Linux 中使用 netstat -anp | grep 1521 同 Windows 中一样

TIME_WAIT 状态需要过一会儿才会真正意义上的断开
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: