Мы используем ADO для доступа к Oracle 10g release 2, Oledb для Oracle 10g. Мы сталкиваемся с некоторыми проблемами с пулом соединений. База данных находится на удаленной машине, и объединение пулов происходит так, как должно. Но если удаленная машина по какой-то причине опускается, соединение возвращается из пула, и запрос на это соединение терпит неудачу. Когда это соединение закрыто, оно возвращается обратно в пул вместо того, чтобы быть недействительным. Последующие запросы на открытие соединения являются успешными, но запрос завершается с ошибкой. Это странное поведение, согласно спецификациям OLEDB, поставщик должен поддерживать свойство DBPROP_CONNECTIONSTATUS, поэтому в случае недействительного соединения он не будет возвращен обратно в пул.Пул соединений OLEDB Oracle и недействительные подключения
Вещи попадают, когда приходит удаленная машина. Соединения в пуле по-прежнему недействительны, и, хотя открытие соединения завершается успешно, запрос на соединение терпит неудачу. Oracle OLEDB больше не может подключиться к серверу, и мы должны перезапустить наше приложение. Ну, это нежелательно, потому что наше приложение является критическим приложением.
Любые идеи о том, как преодолеть это.
Благодаря Mubashir
Я не думаю, что это проект .NET? Я спрашиваю, потому что у нас не было проблем с драйвером ODP .NET на 10g, отлично работал. –
нет его не .NET. мы используем поставщика OLEDB для Oracle с ADO в проекте VC++. –
Используете ли вы какие-либо статические методы для открытия соединений с базой данных? Это длинный снимок, так как это OLEDB/Oracle/VC++, но в .NET/SQL Server зафиксировано поведение коррупции пула базы данных, когда соединение с базой данных открывается статическим методом. –