Приложения.NET 4.0 внезапно перестают работать с ошибкой TNS (IIS 7.5, клиент Oracle 11.2.0)
Я поддерживаю веб-сервер IIS 7.5, и у меня возникли небольшие проблемы с пулами приложений. Я часто вижу, что приложения, использующие соединения с базами данных Oracle, перестают работать и выдают ошибку "ORA-12154: TNS: не удалось разрешить указанный идентификатор соединения". Что сводит с ума то, что ничего не изменилось на сервере БД, веб-сервере или внутри приложения. Я пробовал TNS Ping к базе данных, и он просто отлично подключается. Приложения в одном пуле приложений, использующие базы данных SQL Server, похоже, не имеют проблем.
ВАЖНО: если я изменю приложение на принадлежащий другому пулу приложений, оно снова начнет работать. Если я верну исходный пул приложений, ошибка не исчезнет.
Что здесь может происходить? Я в недоумении относительно того, почему проблема просто возникнет внезапно и затронет только определенные пулы.
Спасибо!
1 ответ
Попробуйте проверить связь с слушателем 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