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

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

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

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

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

Спасибо!

решение1

Попробуйте выполнить команду ping на прослушивателе 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

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

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

lsnrctl start oracle

Связанный контент