Назад | Перейти на главную страницу

Приложения .NET 4.0 внезапно перестают работать с ошибкой TNS (клиент IIS 7.5, Oracle 11.2.0)

Я поддерживаю веб-сервер IIS 7.5, и у меня возникли небольшие проблемы с моими пулами приложений. Я часто вижу, что приложения, использующие подключения к базам данных Oracle, перестают работать и выдают ошибку «ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения». Что бесит, так это то, что ничего не изменилось на сервере базы данных, веб-сервере или внутри приложения. Я пробовал TNS Ping к базе данных, и он отлично подключается. Приложения в том же пуле приложений, использующие базы данных SQL Server, похоже, не имеют проблем.

ВАЖНО: Если я изменю приложение, чтобы оно принадлежало другому пулу приложений, оно снова начнет работать. Если я верну его к исходному пулу приложений, ошибка не исчезнет.

Что здесь могло происходить? Я не понимаю, почему проблема возникает неожиданно и затрагивает только определенные пулы.

Спасибо!

Попробуйте проверить связь со слушателем TNS, чтобы узнать, работает ли он в Linux примерно так:

tnsping oracle
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle)))
...
OK (2311770 msec)

Если он включен, но вы не можете получить статус от слушателя TNS следующим образом:

lsnrctl status
TNS-01153: Failed to process string: �9M0

Попробуйте заставить прослушиватель обновляться без ошибок с помощью следующей команды (опять же, Linux ищет эквивалентную команду Windows Server):

lsnrctl start oracle
TNS-01106: Listener using listener name LISTENER has already been started

Это может быть связано с аппаратной / и / или / плохой настройкой оракула / и / или / плохой конфигурацией оракула. ​​У меня точно такая же ошибка, как и у вас, за исключением того, что я запускаю Apache-Tomcat в качестве веб-сервера, и сразу после запуска веб-сервера моя служба оракула останавливается (TNS: ошибка прослушивателя, и в моем веб-приложении я вижу исключение Socket Time Out), это не похоже на то, что у вас есть шанс действительно запустить свои приложения на некоторое время до остановки службы TNS, я думаю, это часть ОС.

Я использую виртуальную машину, VM Fusion с установленным CentOS 6.6, эта виртуальная машина отлично работает только на 1 из 3 разных ноутбуков, я могу подтвердить, что это может быть связано с оперативной памятью, как выглядит оперативная память вашего сервера, когда это происходит? Я увеличил это несколько раз, и проблема была исправлена, но затем вернулась, и единственный способ избавиться от этого - контролировать оперативную память и автоматически очищать ее при достижении максимума, а затем заставлять ее работать с:

lsnrctl start oracle