Мы используем класс OleDbConnection для соединения Oracle и SqlServer. В некоторых местах мы также используем SqlClient и Oracle.DataAccess.OracleConnection. Мне нужно знать, сколько активных соединений у наших серверов с помощью счетчика производительности.
Наш администратор баз данных обвиняет нас в том, что мы не закрываем соединения. Но мы уверены, что закрываем соединение (ставим соединение на C # с помощью).
Для 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';
В случае, если соединения инициируются от разных клиентов, но от одного и того же имени приложения - вы можете фильтровать на основе ПРОГРАММЫ
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