В чем разница между «ORA-12571: сбой модуля записи пакетов TNS» и «ORA-03135: потерян соединение»? - PullRequest
2 голосов
/ 16 апреля 2010

Я работаю в среде, в которой время от времени возникают производственные проблемы, связанные с соединениями Oracle. Мы используем ODP.NET из приложений ASP.NET и подозреваем, что брандмауэр закрывает соединения, которые слишком долго находились в пуле соединений.

Иногда мы получаем ошибку «ORA-12571: сбой программы записи пакетов TNS», а иногда мы получаем «ORA-03135: соединение потеряно».

Мне было интересно, сталкивался ли кто-то с этим и / или понимал разницу между двумя ошибками.

Ответы [ 2 ]

5 голосов
/ 17 апреля 2010

Использование аналогии с мобильным телефоном:

  • ORA-12571 (сбой) означает, что вызов сброшен.
  • ORA-03135 (соединение потеряно). Другая сторона повесила трубку.
3 голосов
/ 17 апреля 2010

Насколько я понимаю, 3135 происходит, когда соединение теряется. Это не говорит вам, почему связь была потеряна, хотя. Возможно, он был прерван сервером, поскольку серверу не удалось получить ответ на запрос в течение определенного периода времени, и он предположил, что соединение было разорвано. Или (я не уверен в этом) полная противоположность этому: клиенту не удалось получить пробный ответ от сервера в течение определенного времени, поэтому он предположил, что соединение было потеряно. «Определенное количество времени» обрабатывается SQLNET.EXPIRE_TIME = [минуты] в sqlnet.ora.

Что касается 12571, мое (опять-таки смутное) понимание состоит в том, что произошла внезапная ошибка при отправке пакета во время связи с сервером, и что это, как правило, вызвано тем, что какое-то программное или аппаратное обеспечение мешает соединению (либо по замыслу или по ошибке). Например, если вы извлечете кабель Ethernet и попытаетесь выполнить запрос, вы, вероятно, получите это. Или, если брандмауэр или антивирусное приложение решит заблокировать трафик.

...