OracleConnection.Clone после открытия создает на самом деле несколько сессий
Пытаюсь использовать OracleConnection.Clone() для создания нескольких сессий для параллельных независимых запросов. Но после метода Open() клона PL/SQL Developer при просмотре сессий отображает 6(!) вместо ожидаемых двух сессий. При этом подключение-оригинал открывалось вполне адекватно.
Простейший пример:
using Oracle.DataAccess.Client;
using System;
namespace Test_OraConn
{
class Program
{
static void Main(string[] args)
{
var c = new OracleConnection(String.Format("Data Source={0};User Id={1};Password={2}", serv, user, pass));
c.Open();
var c2 = c.Clone() as OracleConnection;
Console.ReadKey(); // пауза - смотрим v$session на сервере
// здесь все еще показывает одну открытую сессию
c2.Open();
Console.ReadKey(); // пауза - смотрим v$session на сервере
// на этом месте просмотр сессий показывает аж 6 открытых
}
}
}
Подскажите, как избежать дополнительных сессий, крадущих серверные ресурсы, и при этом иметь возможность создавать клоны открытого подключения.
Ответы (1 шт):
Автор решения: kvvk
→ Ссылка
Все дело оказалось в пуле соединений. При добавлении в строку подключения "Pooling=false" всё работает корректно
var c = new OracleConnection(String.Format("Data Source={0};User Id={1};Password={2}; Pooling=False", settings.serv, settings.user, settings.pass));