ORA-12504: TNS: слушателю не было присвоено имя SERVICE_NAME в CONNECT_DATA - PullRequest
8 голосов
/ 28 января 2011

Я пытаюсь подключить свою локальную базу данных Oracle 11g с помощью обозревателя серверов в Visual Studio 2010. Я попытался настроить все в соответствии с инструкцией, но все еще получаю ошибку ORA-12504.

Здесьэто ошибка:

enter image description here

Вот мое содержимое tnsnames.ora:

# tnsnames.ora Network Configuration File: C:\app\rsahi\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.


VENUS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = SPRPRG020)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = VENUS)
    )
  )

LISTENER_VENUS =
  (ADDRESS = (PROTOCOL = TCP)(HOST = SPRPRG020)(PORT = 1521))

содержимое файла listener.ora,

# listener.ora Network Configuration File: C:\app\rsahi\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = SPRPRG020)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\app\rsahi

Ответы [ 4 ]

18 голосов
/ 06 июня 2012

Попробуйте сделать это на панели подключения данных в проводнике Visual Studio:

Data source name: SPRPRG020/VENUS

т.е. формат имени источника данных: SERVER_NAME_OR_IP / DATABASE_NAME

1 голос
/ 02 февраля 2011

Не имея больших знаний по подключению ODP.NET к БД Oracle, я предлагаю вам начать использовать SERVICE_NAME (например, VENUS) в параметрах подключения.

Oracle заявляет, что:

Начиная с 11g, функция использования имени хоста, предоставленного в файле / etc / hosts, в качестве псевдонима / имени службы была изменена.В результате пользователь должен будет указать имя службы при подключении ИЛИ настроить целевого прослушивателя с именем службы по умолчанию.

Один из способов обойти требование на стороне клиента SERVICE_NAME - заставить слушателя всегдаотправив вам ту же СЕРВИСУ, сказав это сделать в tnsnames.ora

DEFAULT_SERVICE_LISTENER =  VENUS

Но я не советую вам делать это, так как это довольно ограничительно.

0 голосов
/ 27 апреля 2018

В поле «Свойства соединения» -> «Дополнительно» задайте в поле «Источник данных» информацию в формате HOST / SERVICE_NAME. Например. 127.0.0.1/TEST

0 голосов
/ 29 ноября 2011

Я столкнулся с той же проблемой, когда пытался создать LinkedServer с Oracle 11g. Имя моего оракула было: PC-2.my.xgen , а имя моего слушателя было " NB " Последний параметр первого оператора на самом деле является объединением экземпляра сервера Oracle и имени слушателя.

Итак, я записал следующие операторы на SQL-сервере.

--add a linked server into SQL server
--last parameter contains OracleInstance / Listener Name of desired database
EXEC sp_addlinkedserver   'OracleLinkedServer4', 'Oracle',   'MSDAORA', 'PC-2.my.xgen/nb'

--add login information into linked server
EXEC sp_addlinkedsrvlogin 'OracleLinkedServer4', false,  Null, 'system',  '123456'

В базе данных Oracle "NB" у меня есть таблица с именем: CRD_CIL_NOTIFICATION_TYPE. Поэтому я записал следующее утверждение, чтобы получить записи.

select * from OracleLinkedServer4..SYSTEM.CRD_CIL_NOTIFICATION_TYPE
...