Я использую 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 циклов.
Что такое ограничение?