Oracle 获取连接数 - 排查程序是否正确关闭连接

在Java开发时, 如果数据库连接 (Connection) 没有正确关闭, 会导致该连接一直被占用, 没有释放, 也就无法被重用或关闭, 最终会导致数据库连接的溢出, 无法获取连接, 程序也就挂了.

我们可以通过以下SQL来查询当前数据库的连接数, 正常情况下连接数会保持一定数量, 如果不是并发数突然增大的情况下.

select username, count(username)
  from v$session
 where username is not null
 group by username

由于获取数据库连接比较耗时, 所以通常的做法是采用连接池, 一开始就获取一定量的连接数, 需要连接时就从连接池中获取一个, 标记成正在被使用, 别人就无法再获取这个连接, 使用完后不会关闭, 只是去除被使用的标示, 释放回连接池, 这时这个连接可以再次被使用, 一旦连接池中的连接都被使用, 这时要看连接池的管理策略, 一种策略是自动关闭超时的连接,这种情况下就比较难通过数据库的方面来查看连接是否正常, 只能另外通过其他办法排查, 另外一种策略是, 如果连接池中的连接都被使用, 就会重新再增加一个连接数, 所以在这种情况下, 如果有连接没有正常关闭, 等到连接池中的连接全部使用完, 通过oracle查询就会发现连接一直在增加.

来源: IT艺术博客(http://www.itart.cn)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值