如何检查 Oracle 中的活动连接?

How can I check active connection in Oracle?

我们在休眠中使用了连接池,我们想跟踪池中的活动连接。是否可以使用查询或任何数据库工具找出答案?

可以查询v$session

select * from v$session where USERNAME='<username configured in c3p0>'

您可以找到有关 v$session 列 here 的更多信息,该视图有一个活动列,指示某些 sql 是否正在执行。

您需要一些明确的权限才能对 v$session 发出类似

的查询
GRANT SELECT ON v_$session TO <user who monitor>;

您可以通过 JMX 监控 c3p0,或者编写您自己的代码通过 PooledDataSource 接口来实现。

你要观察的属性是numBusyConnectionsAllUsersnumBusyConnectionsDefaultUser(无论是通过JMX还是直接访问PooledDataSource)。这两个值在最常见的情况是,您只能通过数据源中配置的身份验证信息访问连接。如果您使用多重身份验证,那么这两个值将不同(您可能对方法 getNumBusyConnections(username, password).[=15= 感兴趣) ]

JMX 监控既有趣又简单!