ORA-12545: Не удалось подключиться, поскольку целевой хост или объект не существует

Кто-нибудь сталкивался с этой ошибкой раньше? Я попытался сослаться на эту ссылку: http://www.ardentperf.com/2007/04/02/local_listener-and-ora-12545/

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

Я включил трассировку sqlnet на стороне клиента, но не могу интерпретировать точную причину проблемы.

Любые идеи?

Спасибо


person eece    schedule 26.01.2011    source источник
comment
Разве представление не включает ссылку на базу данных? Можно ли выбрать из обычной таблицы? от 1_?   -  person 9000    schedule 26.01.2011
comment
Похоже, проблема с TNSNAMES.ora: google.ca/   -  person OMG Ponies    schedule 26.01.2011
comment
Опубликуйте определение представления (и любые синонимы или другие представления, которые оно использует)   -  person Gary Myers    schedule 26.01.2011
comment
Вы должны поделиться более подробной информацией, по этой ссылке проблема была связана с подключением через VPN.   -  person Andre Araujo    schedule 28.09.2016


Ответы (3)


Для меня проблема заключалась в том, что HOST не определялся по имени в TNSNAMES.ora, вместо этого использовалось IP-адрес (я думаю, это связано с проблемой контроллера домена):

XYZD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 123.45.67.89)(PORT = 1521))
    (CONNECT_DATA = (SERVICE_NAME = XYZD))
  )

Выполните команду: «ping HOST», чтобы узнать IP-адрес сервера.

  • ПИН-ХОСТ
  • ХОСТ-ПОРТ TELNET
  • TNSPING TNS_ALIAS

Редактировать:

Просто снова столкнулся с этим, на этот раз это был брандмауэр, блокирующий TCP через порт.

person Jeremy Thompson    schedule 28.09.2016
comment
Порт по умолчанию 1521, а не 1522. - person Elmue; 20.04.2017

Эта проблема может заключаться в нескольких вещах:

<сильный>1. Ваш TNSNAMES.ora не обновлен

Исправление: найдите свой каталог поиска Oracle Home: /network/ADMIN/

TNSNAMES.ora должен быть там, если вы столкнулись с этой проблемой на локальном компьютере.

<сильный>2. Создать переменную среды TNS_ADMIN

В моем случае:

Имя переменной: TNS_ADMIN

Значение: C:\Programs\Ora10g\network\ADMIN.

В целях тестирования попробуйте подключиться к базе данных Oracle с помощью sqlplus (возможно, вы уже пытаетесь это сделать).

person Roberto Navarro    schedule 30.05.2012

У меня также была эта проблема, и, поскольку я не использовал файл tnsnames.ora, я почти потерял надежду, когда наступил на этот ссылка.
Итак, теперь мой код выглядит так:

import cx_Oracle 
connection_string = '''username/password@(DESCRIPTION=
                                            (ADDRESS_LIST=
                                                (ADDRESS=
                                                    (PROTOCOL=TCP)
                                                    (HOST=<host_name>)
                                                    (PORT=<port_numer>)
                                                )
                                            )
                                            (CONNECT_DATA=
                                                (SID=<your_SID>)
                                            )
                                        )'''
db = cx_Oracle.connect(connection_String)

Теперь вы можете создать курсор и написать свой запрос.
Примечание. Это не рекомендуемая практика, но я использовал ее только для тестирования.

person Ashwin A.Vardhan    schedule 13.03.2019