我们使用hibernate使用连接池,我们希望跟踪池中的活动连接。是否可以找到使用查询或任何数据库工具?
答案 0 :(得分:2)
您可以查询v$session
select * from v$session where USERNAME='<username configured in c3p0>'
您可以找到有关v $ session columns here的更多信息,该视图有一个活动列,指示某些sql是否正在执行。
您需要一些显式权限才能对v $ session发出查询,例如
GRANT SELECT ON v_$session TO <user who monitor>;
答案 1 :(得分:2)
您可以通过JMX监控c3p0,或者通过PooledDataSource界面编写您自己的代码。
您要观察的属性是numBusyConnectionsAllUsers
或numBusyConnectionsDefaultUser
(无论是通过JMX还是直接访问PooledDataSource
。这两个值在最常见的情况下是相同的通过DataSource中配置的身份验证信息访问Connections。如果您使用多个身份验证,那么这两个值将不同(您可能对方法getNumBusyConnections(username, password)
感兴趣。
JMX监控既有趣又简单!