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