powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# ODP.NET OracleConnection сессии - в голове каша
10 сообщений из 10, страница 1 из 1
C# ODP.NET OracleConnection сессии - в голове каша
    #39627950
ДАП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Везде в примерах, да и сам Oracle в своей документации говорит, что надо делать так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;


 OracleConnection con = new OracleConnection();
 con.ConnectionString = "Data Source=;User Id=;Password=";
 con.Open();
 Console.WriteLine("Connected to Oracle" + con.ServerVersion);
...................................
 con.Close();
 con.Dispose();
 Console.WriteLine("Disconnected");


либо так:
Код: c#
1.
2.
3.
using (OracleConnection connection = new OracleConnection())
{..............................
}



1) после выполнения этих команд сессия на сервере не закрывается, а продолжает висеть в неактивном состоянии. Закрывается только при полном закрытии .NET-приложения. Почему? А что если мне надо обязательно закрыть сессию в приложении, как быть?

2) Я так понимаю это всегда и везде так надо делать? Допустим, у пользователя висит приложение с кучей контролов, где на каждый чих идёт обращение к БД. Это в каждом методе, обработчике события и т.д. надо делать Open->Close->Dispose ?

Я себе работу с БД как-то всю жизнь представлял так, что соединился, сколько угодно работаешь с БД, сколько угодно отправляешь запросов к БД, отсоединился, при этом приложение вообще может сутками не завершаться.
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627953
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что используется пул соединений, почитайте про него
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627954
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДАПпосле выполнения этих команд сессия на сервере не закрывается, а продолжает висеть в неактивном состоянии.Пуллинг скорее всего. Чтобы все время не тратить время на соединение с сервером, висит определенный пул коннекшенов.
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627963
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Практически во всех мануалах рекомендуется оборачивать использование DbConnection в блок using, дабы минимизировать число коннекшенов в пуле.

авторДопустим, у пользователя висит приложение с кучей контролов, где на каждый чих идёт обращение к БД


Если таких пользователей множество, то обращение к БД нужно делать с помощью промежуточного слоя ApplicationLayer, где одно-единственное приложение будет обращаться по запросам клиентов к БД, и передавать полученные данные обратно. Реализовать можно относительно быстро с помощью технологии WCF, например. Приносит приложению кучу плюсов, в т.ч. по безопасности.
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627965
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читать тут до просветления:

https://docs.oracle.com/cd/B19306_01/win.102/b14307/featConnecting.htm

обратить внимание на параметры:
Decr Pool Size
Incr Pool Size
Max Pool Size
Min Pool Size
Pooling
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627967
ДАП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если отключить пул. То можно один раз, например, при запуске приложения открыть сессию, а по завершении работы закрыть ? Не повлияет ли это на производительность, рост курсоров и т.д. ?
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627968
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДАПА если отключить пул. То можно один раз, например, при запуске приложения открыть сессию, а по завершении работы закрыть ? Не повлияет ли это на производительность, рост курсоров и т.д. ?

дал же ссылку выше
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627971
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДАПДопустим, у пользователя висит приложение с кучей контролов, где на каждый чих MS рекомендует на каждое окно соединение.
Туда запиши его и не трогай пул.
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39627982
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пулинг может выйти боком, если на сервере используются пакеты с состоянием - закрытие соединения при включенном пулинге не сбрасывает состояние пакета, приходится либо отключать пулинг, либо в пакете заводить процедуру для сброса состояния пакета. По крайней мере, так было в System.Data.OracleClient, который входил в состав 4-го фреймворка.
...
Рейтинг: 0 / 0
C# ODP.NET OracleConnection сессии - в голове каша
    #39628002
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныПулинг может выйти боком, если на сервере используются пакеты с состоянием - закрытие соединения при включенном пулинге не сбрасывает состояние пакета, приходится либо отключать пулинг, либо в пакете заводить процедуру для сброса состояния пакета. По крайней мере, так было в System.Data.OracleClient, который входил в состав 4-го фреймворка.
Просто пакет инит привязан только к коннекту. Но у него думаю нет такого.
Поэтому я бы не трогал пулинг без надобности.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# ODP.NET OracleConnection сессии - в голове каша
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]