Здесь у нас есть приложение, которое использует компоненты ODAC внутри DLL-библиотек COM+ для подключения к Oracle Server 11g.
В последнее время мы столкнулись с проблемой, которую не можем найти решения.
По какой-то причине, когда параллелизм сервера приложений у некоторых наших клиентов слишком высок, некоторые dll начинают зависать и им приходится убивать процесс, чтобы восстановить юзабилити нашего продукта. Пытаясь воспроизвести ошибку здесь, в нашем офисе, мы создали тестовую среду, чтобы нагрузить сервер приложений. Запускаем 30-50 программ, которые звонят в приложение и через какое-то время появляется проблема.
Отладка нашей DLL после зависания сервера показывает, что любой последующий вызов OCISessionBegin не может завершиться. Ошибка не генерируется. Других симптомов не видно.
Последняя строка, которую мы пытаемся выполнить: Check(OCISessionBegin(...)); на OraClasses.pas
Мы проверили базу данных, нет конфликтов, нет блокировок.
Мы используем ODAC 6 на наших клиентах, но мы обновили его до последней версии, и проблема не устранена. Мы должны использовать Oracle Client 10 для подключения к базе данных 11g, потому что используется версия 6 ODAC.
Большое спасибо