ORA-12504: TNS: прослушивателю не было дано имя службы в данных CONNECT

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

здесь ошибка:

enter image description here

вот мои tnsnames.Ора содержание:

# tnsnames.ora Network Configuration File: C:apprsahiproduct.2.0dbhome_1networkadmintnsnames.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 Network Configuration File: C:apprsahiproduct.2.0dbhome_1networkadminlistener.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:apprsahi

4 ответов


Я испытал ту же проблему, когда пытался создать LinkedServer с Oracle 11g. Мое имя экземпляра oracle было:ПК-2.мой.xgen и имя моего слушателя было"NB". Последний параметр первого оператора фактически является конкатенацией экземпляра сервера Oracle и имени прослушивателя.

поэтому я записал следующие инструкции в SQL server.

--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

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

Data source name: SPRPRG020/VENUS

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


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

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

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

один из способов обойти требование SERVICE_NAME на стороне клиента-заставить слушателя всегда отправлять вас на одну и ту же службу, сказав ему сделать это в tnsnames.Ора!--2-->

DEFAULT_SERVICE_LISTENER =  VENUS

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


в поле" свойства подключения "- > " дополнительно "задайте в поле" Источник данных " информацию в формате HOST/SERVICE_NAME. Е. Г. 127.0.0.1/тест