Oracle (0x80004005) ORA-12154: TNS: не удалось разрешить идентификатор соединения - PullRequest
8 голосов
/ 13 августа 2010

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

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

    DBSOURCE.A.B.com = (ОПИСАНИЕ = (ADDRESS_LIST = (АДРЕС = (ПРОТОКОЛ = TCP) (ХОСТ = C.D.B.com) (ПОРТ = 1231)) ) (CONNECT_DATA = (SERVICE_NAME = DBSOURCE) ) )

  2. Я могу TNSPING

    C: \ Documents and Settings \ USERID.A> tnsping DBSOURCE

    Утилита TNS Ping для 32-битных Windows: версия 10.2.0.4.0 - выпуск 09-МАР-2 011 09: 12: 31

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

    Используемые файлы параметров: C: \ оракул \ продукт \ 10.2.0 \ client_1 \ NETWORK \ ADMIN \ sqlnet.ora

    Использовал адаптер TNSNAMES для разрешения псевдонима. Попытка связаться (ОПИСАНИЕ = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = C.D.B.com) (PORT = 1231))) (CONNECT_DATA = (SERVIC) E_NAME = DBSOURCE))) ОК (30 мсек)

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

  4. Я могу подключиться к оракулу через жабу.
  5. Я проверил свой файл sqlnet.ora

    NAMES.DEFAULT_DOMAIN = A.B.com

    SQLNET.AUTHENTICATION_SERVICES = (НЕТ)

    NAMES.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 ]

4 голосов
/ 14 марта 2011

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

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

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

2 голосов
/ 10 марта 2011

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

2 голосов
/ 13 августа 2010

"это работает на компьютере сотрудника, но не на моем."

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

Что нужно проверить:

  • файл TNANAMES.ORA
  • файл SQLNET.ORA
  • файл LISTENER.ORAВы используете локальную базу данных)
1 голос
/ 14 марта 2011

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

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

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

1 голос
/ 19 августа 2010

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

0 голосов
/ 05 сентября 2014

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

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)
   )
 )';

Решение здесь: http://oraclequirks.blogspot.com/2008/11/ora-12154-tnscould-not-resolve-service.html

0 голосов
/ 13 августа 2010

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

...