У меня есть сбалансированное по нагрузке (не использующее состояние сеанса) приложение ASP.Net 2.0 на IIS5, работающее на одном сервере Oracle 10g, используя версию 10.1.0.301 драйверов ODAC/ODP.Net. После длительного периода бездействия (несколько часов) приложение, казалось бы, случайным образом выбросит исключение Oracle:
Исключение: ORA-03113: конец файла на канале связи в Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, соединение OracleConnection, IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, Object src, String procedure) при Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, поведение CommandBehavior) при Oracle.DataAccess.Client.OracleCommand.System.Data.IDbCommand.ExecuteReader()
... Часть экземпляра Oracle заканчивается здесь...
Мы создаем новые подключения по каждому запросу, открываем и закрываем, завернутые в try/catch/finally, чтобы обеспечить правильное закрытие соединения, и все это завернуто в блок (OracleConnection yadayada) {...}, Эта проблема не связана с перезапуском приложения ASP.Net после того, как она была отключена для бездействия.
Нам еще предстоит воспроизвести проблему самостоятельно. Мысли, молитвы, помощь?
Дополнительно: Проверено с помощью ИТ, брандмауэр не настроен на то, чтобы убивать соединения между этими серверами.