程序是jdbc连接oracle数据库的,因为有时候网络问题,可能会和数据库断开,所以在程序中加入了重连的机制,即每次执行sql语句出错的时候就断开原来的链接,不断的重新连接,直到连接成功。但测试结果发现,当网络断开时,会去重连,网络恢复了也能重新连接成功,但是连接数却增加了一个,请问这是什么问题?网络断了,oracle客户端连接能断开吗,如果不行网络恢复了是否可以?

解决方案 »

  1.   

    数据库的session 没有释放正常下一个连接就是一个session,当事务操作结束后,session就结束释放了,但突然中断情况下,数据库并不知道,所以session没有释放,当你再次连接是,又会重新开启一个session。所以session就会多一个..这个session可以手动的数据库后台kill掉..  在数据库限定的session范围内(pfile里指定session数),连接是没有问题的,当session达到最高限额后,就不能在连接了..
      

  2.   

    to tianlesoftware:说的有道理,那么请问怎么解决这种情况,如果网络情况不好的话,那连接岂不是一直在增加?谢谢!
      

  3.   

    专有模式下oracle的pmon会自动处理不可用的session的,除非你一直使用session,你变成俩连接的时候都使用吗?
      

  4.   

    其实你只要把不用的session断开就行了,oracle没那么傻......
      

  5.   

    to jinxino_o:变成两个连接后,肯定是只用一个,关键是原来那个没法断掉
      

  6.   

    如果有两个相同的session连接过来,根据时间把先连接的那个kill掉试试