jdbc循环连接、断开oracle的诡异问题,请教大家

jcdel 2009-12-21 04:57:10
今天遇到一个奇怪的问题,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++;
}

...全文
362 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilov_like 2011-09-11
  • 打赏
  • 举报
回复
今天遇到同样问题了,在java中使用循环语句添加记录到oracle数据库,当循环达到300+的时候连接就自动断开了。
  • 打赏
  • 举报
回复
因为被关掉的 Connection 并没有被 Oracle 数据库马上回收,而是处于 TIME_WAIT 状态。

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

TIME_WAIT 状态需要过一会儿才会真正意义上的断开
zy88882007 2010-01-09
  • 打赏
  • 举报
回复
:@10.72.4.190:1521:orcl
感觉有点问题 IP对吗?
  • 打赏
  • 举报
回复
都不知道你测什么,怎么测的,目的是啥,反正我是没看懂你要做什么
  • 打赏
  • 举报
回复

附:测试代码

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++;
}


这段代码能测试?很好,很强大!
jcdel 2009-12-22
  • 打赏
  • 举报
回复
在不使用连接池的情况下,有可能非常频繁地取连接、关闭连接。我觉得这是很正常的应用,这不过我模拟了一下极限情况。

现在就是搞不懂,为什么oracle jdbc的关闭连接操作不起作用,就像没关闭一样。


大家给点意见吧,万分感谢。
jcdel 2009-12-22
  • 打赏
  • 举报
回复
自顶
crazylaa 2009-12-21
  • 打赏
  • 举报
回复
不懂。。。
楼主这么做的目的是什么啊。
jcdel 2009-12-21
  • 打赏
  • 举报
回复
jcdel 2009-12-21
  • 打赏
  • 举报
回复
恳请高手解答,跪谢。。。
jcdel 2009-12-21
  • 打赏
  • 举报
回复

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧