Oracle (0x80004005)ORA-12154: TNS: не удалось разрешить идентификатор подключения

Я пытаюсь подключиться к Oracle db из классического приложения ASP, однако я продолжаю работать с ошибкой ORA-12154.

  1. TNSNAMES.ORA настроен правильно

    DBSOURCE.A.B.com = (ОПИСАНИЕ= (СПИСОК АДРЕСОВ= (Адрес = (протокол = TCP) (хост = C.D.B.com) (порт = 1231)) ) (CONNECT_DATA = (SERVICE_NAME = DBSOURCE) ) )

  2. Я могу TNSPING

    C:Documents и настройкиUSERID.A>tnsping DBSOURCE

    утилита TNS Ping для 32-битных Windows: Версия 10.2.0.4.0-производство 09-MAR-2 011 09:12:31

    Copyright (c) 1997, 2007, Oracle. Все права защищены.

    используемые файлы параметр : C:oracleproduct10.2.0client_1NETWORKADMINsqlnet.Ора!--2-->

    используется адаптер TNSNAMES для разрешения псевдонима Попытка связаться (DESCRIPTION = (ADDRESS_LIST = (адрес = (протокол = TCP) (HOST = C.D.B.com) (PORT = 1231))) (CONNECT_DATA = (SERVIC E_NAME = DBSOURCE))) OK (30 мсек)

  3. Я могу создать соединение ODBC, и я проверил соединение, которое успешно.

  4. Я могу подключиться к oracle db через toad.
  5. Я проверил свой sqlnet.файл Ora

    имена.DEFAULT_DOMAIN = A.B.com

    заменить sqlnet.AUTHENTICATION_SERVICES= (НЕТ)

    имена.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

  6. Я также проверил, что Файл tnsnames.ORA как один из моих системных путей.

  7. Я могу подключиться к БД с помощью SQLPLUS

вот код, который выдает ошибку

dim CnnStr

Set Cnn = Server.CreateObject("ADODB.Connection")

CnnStr="Provider=MSDAORA.1;Password=pass;User ID=user;Data Source=DBSOURCE"

Cnn.Open CnnStr

Я запускаю windows XP Pro 32bit SP3

Я тестировал это на машине коллег, и приложение asp не имеет проблем, я где-то пропустил конфигурацию или я испортил свою конфигурацию?

Спасибо за помощь всем!

7 ответов


кажется, все настройки были проверены, но вот мои предложения для некоторых проблем съемки:

  • как насчет ограничений на учетную запись IIS работает под? Имеет ли он права доступа к файлам для чтения имен TNSNAMES? Вы пытались дать пользователю больше прав. Даже запустить IIS с локальной учетной записью системы? Не забудь вернуть все как было.
  • вы уверены, что нет 3rd party app такого антивируса или брандмауэра, который может повлиять / заблокировать доступ. (Отключите их для тестирования, но не забудьте повторно включить :)

(Что Вы, наконец, сделали, чтобы решить эту проблему?)


" это работает на машине коллеги, но не мой."

ORA-12154 обычно является проблемой конфигурации, и это, безусловно, будет так в вашем случае. Короткий ответ-сравнить вашу машину с машиной вашего коллеги и выяснить, в чем разница.

вещи для проверки включают:

  • в TNANAMES.Ora file
  • на заменить sqlnet.Ora file
  • слушатель.Ora-файл (если вы используете локальный база данных)

У вас есть несколько домов Oracle? Убедитесь, что IIS не указывает на другой ORA_HOME (и, следовательно, не находит ваши имена tnsnames.запись Ора). Я не очень хорошо знаком с конфигурацией IIS, поэтому я бы проверил это, добавив запись TNS ко всем tnsnames.Ора на моем компьютере.


Если вы используете 64-разрядную ОС и oracle 10, попробуйте установить все исправления для oracle. Что-то подобное произошло со мной, SQL plus и все остальное сработало, кроме моей .NET-программы. Я запускал программу .Net из папки" Program files (x86)". Установка патчей исправила это.


вероятной проблемой является отсутствие разрешения на чтение в каталогах Oracle пользователем IIS выполняется как.

Как говорит @ Derick,временно установите широко открытые разрешения в каталоге $ORACLE_HOME (Everyone = Full Control), перезапустите IIS и проверьте. Если это работает, предоставьте пользователю IIS разрешение на чтение для этого каталога.

вы можете подтвердить эту проблему с помощью монитор процессов от Microsoft SysInternals, и увидев сообщение об ошибке во время CreateFile(...) Вызов API для открытия библиотек DLL или чтения имен TNSNAMES.Файл ORA. Учитывая, как временные файлы работают при выборе курсоров, вам также может потребоваться предоставить пользователю IIS разрешения на запись в некоторые каталоги.


попробуйте установить значение переменной среды TNS_ADMIN на машине с проблемой в /network / admin (или где бы ваши tnsnames.ora file lives) и посмотреть, поможет ли это.


У меня была аналогичная проблема и я нашел простое решение. Вам не нужно изменять файлы конфигурации. Надеюсь, это поможет вам:

CREATE DATABASE LINK server2_db
  CONNECT TO dbuser IDENTIFIED BY pwd USING
 '(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = server_2)(PORT = port_num))
   )
   (CONNECT_DATA =
     (SERVICE_NAME = server2_db)
   )
 )';

решение от here:http://oraclequirks.blogspot.com/2008/11/ora-12154-tnscould-not-resolve-service.html