我们正在使用OleDb连接类来连接 Oracle 和 SqlServer。在某些地方,我们还使用 SqlClient 和 Oracle.DataAccess.OracleConnection。我需要使用性能计数器了解我们的服务器有多少个活动连接。
我们的 DBA 指责我们没有关闭连接。但我们确信我们正在关闭连接(我们正在使用 C# 建立连接)。
答案1
对于 Oracle,您可以使用 V$SESSION 视图
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2088.htm#REFRN30223
像这样:
select LOGON_TIME, OSUSER, PROCESS, PROGRAM, MACHINE\
from V$SESSION \
where MACHINE = 'YOUR CLIENT HOSTNAME' and STATUS != 'KILLED';
如果连接由不同的客户端发起,但来自同一个应用程序名称 - 您可以根据 PROGRAM 进行过滤
WHERE regexp_like(PROGRAM,'Your Program Name','i');
或者你可以根据 netstat 输出执行此操作。
像这样
netstat -anp | grep ":1521" | grep 'ESTABLISHED' | grep 'Your CLIENT IP' | wc -l
基于 netstat 的类似技术可以应用于 SQL Server
netstat -ano | find /I ":1433" | find /I "ESTABLISHED" | find /I "Your client IP" /c