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));
→ Ссылка