Ошибка Oracle: истекло время ожидания запроса на соединение - PullRequest
2 голосов
/ 13 марта 2019

Я использую Oracle12c с приложением, написанным на C #, и использую Oracle.ManagedDataAccess.dll для обработки соединения с БД.

Продукт, который мы начали время от времени выдавать это исключение, после нескольких лет безупречной работы:

Oracle.ManagedDataAccess.Client.OracleException (0xFFFFFC0C): Pooled connection request timed out
   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()

Я знаю причину этой ошибки.Глядя на код, ни объекты OracleConnection, ни OracleCommand не располагаются.Таким образом, эти связи накапливаются до тех пор, пока в конечном итоге не возникнет это исключение.

Исправление прямо вперед.Оберните это в Using заявлениях.Мне не нужна помощь с этим.

Однако меня интересует, почему эта проблема началась сейчас.Это программное обеспечение работало годами без проблем.Они провели некоторое обслуживание базы данных, обновили другое программное обеспечение на том же сервере, и эта проблема началась.Я не знаю, какое обслуживание Db они сделали.

Строка подключения в приложении не задает никаких атрибутов пула.

Существует ли параметр oracle db, который может привести к меньшему количеству одновременных подключений в базе данных, что могло привести к его запускупроисходит?

UPATE

Я написал небольшое тестовое приложение для проверки предела.Он просто зацикливается и открывает соединение, выполняет базовый запрос и не удаляет соединение.В моей тестовой системе он начинает выдавать это исключение после 640 циклов.Каждый раз, когда я запускаю его, он меняет 10 или 5 циклов.

Что такое ограничение?

...