ODP .NET TNS: нет слушателя - PullRequest
       59

ODP .NET TNS: нет слушателя

3 голосов
/ 27 октября 2010

Я сейчас пытаюсь подключиться к базе данных Oracle.Я могу нормально подключиться к своей машине разработки, но при развертывании на моем сервере Win2k3 sp2 я получаю следующую ошибку:

Не удалось открыть соединение ... Oracle.DataAccess.Client.OracleException ORA-12541: TNS:в Oracle.DataAccess.Client.OracleException.HandleErrorHelper нет поддержки (Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, объектный scr, процедура String *, полезные * инструкции, любые булл * идеи, 100 благих мыслей * 4, полезные идеи, любые 100 идей, 4),Я использую Oracle.DataAccess.dll версии 4.112.1.2.

Спасибо

Ответы [ 4 ]

3 голосов
/ 01 ноября 2010

Фактической проблемой был брандмауэр.

Очевидно, что моя локальная машина разработки имела доступ к серверу, на котором размещался Oracle, но мой сервер разработки - нет. После того, как между серверами было открытое соединение, TNS: ошибка слушателя не исчезла.

Похоже, это было поддельное сообщение об ошибке, возвращенное клиентом Oracle. Слушатель был там, и моя конфигурация (строка подключения) была действительной, но между двумя компьютерами не было доступного соединения.

2 голосов
/ 24 августа 2015

У меня была точно такая же проблема. Почему-то кажется, что использование «псевдонима» не работало.

Мой tnsnames.ora файл имел что-то вроде этого:

oracle =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = myoracleserver.mydomain.com)(PORT = 1525))
    )
    (CONNECT_DATA =
      (SID = MYORACLESERVER)
    )
  )

Затем я изменил строку подключения Data Source с (используя псевдоним):

User Id=scott;Password=tiger;Data Source=oracle

Кому (не используя псевдоним):

User Id=scott;Password=tiger;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=myoracleserver.mydomain.com)(PORT=1525)))CONNECT_DATA = (SID = MYORACLESERVER)))

Теперь все работает безупречно с ODP.NET . Это было и все еще работает с псевдонимом, когда я использую старое соединение ADODB.

UPDATE:

ODP.NET не может прочитать ваш tnsnames.ora файл напрямую из вашего приложения. Вам нужно настроить, как я сказал в своем ответе, или вы также можете указать, где находится ваш файл tnsnames.ora в вашем файле Web.Config или App.Config.

См. мой другой ответ для получения более подробной информации обо всех имеющихся вариантах.

0 голосов
/ 08 мая 2012

Я тоже научился другому. в файле TNSNAMES.ora внутри папки Network \ admin в начале экземпляров есть пробелы.

пример:

MYORACLESERVER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = myoracleserver.mydomain.com)(PORT = 1525))
    )
    (CONNECT_DATA =
      (SID = MYORACLESERVER)
    )
  )
0 голосов
/ 28 октября 2010

Может показаться, что на машине, на которую указывает ваша запись TNSNames, не работает прослушиватель.Я вижу три разных варианта ... (1) запись указывает на разные машины в tnsnames.ora (разные на обеих машинах), (2) разрешение DNS на этих двух машинах разное или (3) слушательпрослушивание другого порта, возможно, если на нем работает один.

...