Ноя 292011
 

Иногда в процессе работы клиентская сессия неожиданно выдаёт ошибку вида «ORA-03114: not connected to ORACLE». Помимо очевидных причин вроде отключения питания сервера или сетевых проблем весьма часто встречается неожиданная гибель серверного процесса, обслуживающего нашу сессию. Что-то подобное я уже описывал тут и тут, и вот ещё один типичный пример.
Подключение проходит вроде бы нормально, но при попытке выполнить первый же запрос, пользователь получает пресловутую ORA-03114. Смотрим в alert log и находим причину:

Tue Nov 29 14:05:01 2011
Errors in file /oracle/coredump/testdb_ora_22532.trc:
ORA-00600: код внутр. ошибки, аргументы: [12333], [0], [0], [0], [], [], [], []
Tue Nov 29 14:05:01 2011
Errors in file /oracle/coredump/testdb_ora_22551.trc:
ORA-00600: код внутр. ошибки, аргументы: [12333], [0], [0], [0], [], [], [], []

Ошибка ORA-00600 [12333] возникает, когда сервер по каким-то причинам не может правильно обработать данные, полученные от клиента. В нашем случае у пользователя был установлен старый клиент 8-й версии (Гусары, молчать!), а база была 10.2.0.5, что является неподдерживаемой конфигурацией. Вот как возникла такая ситуация:

  1. Клиент обращается к серверу, создаётся серверный процесс
  2. Серверный процесс продолжает процедуру соединения, но получает от клиента данные, которые обработать не в состоянии
  3. Возникает исключение, серверный процесс погибает, ничего не успев передать клиенту
  4. Клиент считает, что соединение установлено, но при первой же попытке выполнить запрос, вдруг понимает, что на стороне сервера его никто не слушает и выдаёт нам ORA-03114

Мораль такова: Увидел ORA-03114 - сразу смотри alert log на предмет ORA-00600 или ORA-07445.

  2 комментария to “Внезапный разрыв соединения с БД”

  1. О! У меня недавно была такая проблема, тестеры мне даже дефект зарегили. :-) Потом нагуглила, что ошибка может быть из-за использования старых версий клиентских приложений.

    • Насчёт ORA-00600 [12333] - да, эта ошибка всегда связана с чем-то неправильным на клиенте. А пост немножко не про то, я хотел сказать, что внезапная гибель серверного процесса (по разным причинам) для клиента почти всегда выглядит как ORA-03114, что не слишком информативно.

      P.S. Кстати, а почему OpenID не пользуешься? У тебя же аккаунт есть.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)