Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ODP.Net как OracleConnection мапируется на оракловые сессии?  [new]
teepok
Member

Откуда:
Сообщений: 361
Добрый день.
Тонкий клиент ходит к web серверу, который через ODP.Net коннектится к Oracle.
Есть некоторое непонимание того, как OracleConnection мапируется на оракловые сессии, т.е.
например, у меня есть бизнес-операция, которая состоит из вызова трех оракловых процедур которые выполняются длительное время и должны быьт выполнены в одной транзакции.
Вот я через тонкий клиент зашел в свое приложение, и у меня открылось новое подключение:

OracleConnection conn = new OracleConnection ("my connectoin string ....");
conn.Open;

потом я запускаю эту свою долгую процедуру.

В этот момент в приложение заходит другой пользователь и пытается читать данные, которые я модифицирую в этой своей процедуре.

Вопрос: web сервер ходит в БД под одним и тем же оракловым пользователем, т.е., правильно ли я понимаю, что создается только один пул подключений (при условии что не превышено кол-во коннектов на один пул), а один пул - это всегда одна сессия на Оракле и таким образом, внутри одной сессии все пользователи(тонкого клиента) видят все манипуляции с данными еще до commit. Я прав?
27 фев 12, 10:56    [12155308]     Ответить | Цитировать Сообщить модератору
 Re: ODP.Net как OracleConnection мапируется на оракловые сессии?  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
Если у вас middle-tier ходит в базу с одним и тем же connection string, то для него будет создан pool.
Однако, обслуживается он не единственной сессией в базе (т.к., в противном случае, все операции с базой выполнялись бы последовательно). Также, учтите, что ваша "долгая процедура" не отдаст свою сессию БД обратно под обслуживание пула, пока не закончится ее выполнение и вы не потребуете conn.Close/conn.Dispose.
Второй пользователь, получив в этот момент connection из того же пула, попадет в иную, свободную, сессию БД (из обслуживающих пул), соответственно, данных из первой сессии не увидит.
27 фев 12, 12:27    [12155985]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить