Oracle ORA-12154: TNS: Не удалось разрешить имя службы Ошибка?

Я являюсь пользователем SQL Server.

Я работаю над проектом, в котором используется oracle (который я редко использую). Мне нужно создать ODBC-соединение, чтобы я мог получить доступ к некоторым данным через MS Access. У меня есть приложение на моей машине под названием oraHome90. Кажется, оно позволяет настроить что-то, называемое слушателем, в "утилите конфигурации сети", я думаю, что необходимо также настроить "конфигурацию имени локальной службы сети". ИТ-поддержка дала мне эту информацию для настройки ODBC-соединения. Я перепробовал все комбинации, которые только можно придумать. Я могу пройти тест, который успешно проходит тест на "вход" в базу данных сервера oracle. Когда я пытаюсь создать ODBC-соединение, я получаю следующую ошибку: ORA-12154: TNS: Could not resolve service name.

Предполагается, что я хочу начать с нуля и следующая информация должна позволить мне подключиться к базе данных...... Любые предложения или комментарии? Примечание: в конечном итоге проект будет иметь веб-сайт .ASP страница запрос данных, но я должен сначала доказать, что я могу видеть данные с помощью ODBC соединения через MS Access

Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'Oracle Connection
Dim ocst
Dim oconn

ocst = "Provider=OraOLEDB.Oracle;" & _ 
        "Data Source=DATASOURCE;" & _ 
        "User ID=CHIJXL;" & _ 
        "Password=password;" 

set oconn = CreateObject("ADODB.Connection")

с сайта http://ora-12154.ora-code.com

ORA-12154: TNS:не удалось разрешить указанный идентификатор подключения Причина: Соединение с базой данных или другой службой было запрошено с использованием идентификатора соединения, но указанный идентификатор соединения не может быть преобразован в дескриптор соединения с помощью одного из настроенных методов именования. Например, если тип используемого идентификатора подключения - имя сетевой службы, то имя сетевой службы не может быть найдено в хранилище метода именования, или хранилище не может быть найдено или достигнуто.
Действие:

  • Если вы используете локальное именование (файл TNSNAMES.ORA):

  • Убедитесь, что "TNSNAMES" указан как одно из значений параметра NAMES.DIRECTORY_PATH в профиле Oracle Net (SQLNET.ORA).

  • Убедитесь, что файл TNSNAMES.ORA существует, находится в нужном каталоге и доступен.

  • Убедитесь, что имя службы net, используемое в качестве идентификатора подключения, существует в файле TNSNAMES.ORA.

  • Убедитесь, что в файле TNSNAMES.ORA нет синтаксических ошибок. Ищите несопоставленные круглые скобки или лишние символы. Ошибки в файле TNSNAMES.ORA могут сделать его непригодным для использования.

  • Если вы используете именование каталогов:

  • Убедитесь, что "LDAP" указан как одно из значений параметра NAMES.DIRETORY_PATH в профиле Oracle Net (SQLNET.ORA).

  • Убедитесь, что сервер каталогов LDAP запущен и что он доступен.

  • Убедитесь, что имя службы net или имя базы данных, используемое в качестве идентификатора подключения, настроено в каталоге.

  • Убедитесь, что используемый по умолчанию контекст корректен, указав в качестве идентификатора подключения полное имя сетевой службы или полный LDAP DN.

  • Если вы используете простое именование подключений:

  • Убедитесь, что "EZCONNECT" указан как одно из значений параметра NAMES.DIRETORY_PATH в профиле Oracle Net (SQLNET.ORA).

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

  • Попробуйте заключить идентификатор подключения в кавычки. Более подробную информацию об именовании см. в Руководстве администраторов служб Oracle Net или в руководстве по конкретной операционной системе Oracle.

Комментарии (2)

Исходя из предположения, что вы используете именование TNSNAMES, вот несколько вещей, которые необходимо сделать:

  • Создайте/измените файл tnsnames.ora в подкаталоге network/admin, связанном с OraHome90, чтобы включить в него запись для вашей базы данных oracle:

SERVICENAME_alias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))

Это при условии, что вы используете стандартный порт Oracle 1521. Обратите внимание, что servicename_alias может быть любым именем, которое вы хотите использовать в локальной системе. Вы также можете обнаружить, что вам нужно указать (SID = SERVICENAME) вместо (SERVICENAME=SERVICENAME).

  • Выполните команду tnsping servicename_alias для проверки подключения. Прежде чем продолжить, проверьте работоспособность. Это покажет вам, прошли ли вы через ошибку 12154.
  • Предполагая хорошее соединение, создайте ODBC DSN с помощью панели управления, указав ODBC драйвер для Oracle по вашему выбору (обычно есть ODBC драйвер Microsoft, по крайней мере, и он должен работать адекватно в качестве доказательства концепции). Я'предположу, что вы указали имя DATASOURCE. Используйте servicename_alias в качестве имени сервера в конфигурации ODBC.
  • На этом этапе вы должны иметь возможность подключиться к вашей базе данных через Access. Я не программист VB, но я знаю, что вы должны иметь возможность перейти к File->Get External Data->Link Tables и подключиться к вашему источнику ODBC. Я предполагаю, что ваш код также будет работать.
Комментарии (1)

@Warren и @DCookie рассказали о решении, единственное, что следует подчеркнуть, это использование tnsping. Вы можете использовать его для проверки правильности ваших TNSNames перед попыткой подключения.

После правильной настройки tnsnames вы можете использовать ODBC или попробовать TOra, который будет использовать ваше родное соединение с oracle. TOra или что-то подобное (TOAD, SQL*Plus и т.д.) окажет неоценимую помощь в отладке и улучшении вашего SQL.

И последнее, но не менее важное: когда вы в конце концов подключитесь с помощью ASP.net, помните, что вы можете использовать библиотеки подключения к данным Oracle. Множество ресурсов можно найти на Oracle.com.

Комментарии (0)