Соединение должно быть действительным и открытым в Ddtek.Oracle.OracleConnection - PullRequest
0 голосов
/ 14 марта 2012

Нужна помощь от разработчиков приложений Oracle:

У меня есть приложение на C # .NET 4.0, которое обновляет и вставляет в таблицу, используя библиотеку DDTek.Oracle.Мое приложение работает каждый день в течение примерно 12 часов, и это исключение возникло ровно дважды и с разницей в 15 дней, и никогда раньше.В эти дни он работал нормально в течение нескольких часов (он делал и вставки и обновления в течение этого периода).И тогда приходит это исключение.Я читал, что это исключение может быть из-за плохой строки подключения, но, как я уже говорил, приложение уже давно работает нормально.Может ли это быть проблема БД или сети, или это может быть что-то еще?

System.InvalidOperationException: Connection must be valid and open
at DDTek.Oracle.OracleConnection.get_Session()
at DDTek.Oracle.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel)
at DDTek.Oracle.OracleConnection.BeginTransaction()

К вашему сведению (если это может быть причиной), у меня есть два соединения в двух потоках.Каждый поток обновляет свою таблицу.PS: если кто-нибудь знает хорошую документацию для DDTek.Пожалуйста, ответьте со ссылкой.

1 Ответ

1 голос
/ 14 марта 2012

Из того, что вы описываете, я могу только догадываться - есть несколько возможностей:

  • большинство провайдеров предлагают встроенный пул, иногда соединение в пуле становится недействительным, и вы получаете странное поведение
  • иногда сетевые настройки / брандмауэры / IDS ... ограничивают время, в течение которого TCP-соединение может оставаться открытым
  • иногда незначительная ошибка (доступ к одному и тому же соединению из 2 разных потоков) приводит к странным проблемам
  • иногда сервер БД (или брандмауэр БД) ограничивает продолжительность сеанса связи
  • иногда проблемы с памятью вызывают такое поведение, почти каждый поставщик Oracle использует OCI под капотом, который требует использования неуправляемой кучи и т. Д.
    У меня был один провайдер с утечкой неуправляемой памяти (диагностика производилась с помощью профилировщика памяти и исправления от поставщика довольно быстро)
  • иногда при подключении к RAC один слушатель / узел выходит из строя и / или происходит некоторое аварийное переключение, в результате чего текущие соединения становятся недействительными

Что касается ссылки на полную документацию DDTek.Oracle, см. здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...