ORA-12504: TNS: прослушивателю не было дано имя службы в данных CONNECT
Я пытаюсь подключить локальную базу данных Oracle 11g с помощью обозревателя серверов в Visual Studio 2010. Я попытался настроить все в соответствии с инструкцией, но я все еще получаю ошибку ORA-12504.
здесь ошибка:
вот мои 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/тест