cx_Oracle.DatabaseError: ORA-12541: TNS: нет прослушивателя

Я хочу научиться работать с базой данных Oracle с помощью Python. Если я правильно понимаю, вы можете использовать Oracle Instant Client для удаленного подключения к базе данных Oracle, но я не могу подключиться. Я подозреваю, что проблема в том, что я не знаю, какие аргументы использовать для комбинации localhost/instance. Я считаю, что localhost - это просто имя моей машины, или это может быть буквально "localhost", что я пробовал, но я не знаю, как это сделать, и не могу найти помощь, чтобы сказать мне, как найти имя службы для экземпляра базы данных.

В командной строке я открыл python, импортировал cx_Oracle и использовал «Easy Connect String», как указано в этот пример кода, используя либо "(имя моей машины)/orclpdb", либо буквально "localhost/orclpdb" для DEFAULT_CONNECT_STRING.

Пример кода создает переменную MAIN_CONNECT_STRING, которую я использовал в командной строке, чтобы попытаться подключиться к удаленной базе данных:

cnxn = cx_Oracle.connect(MAIN_CONNECT_STRING)
cx_Oracle.DatabaseError: ORA-12541: TNS:no listener

Я нахожу ответы, которые, кажется, основаны на этом или других, ссылающихся на tnsnames.ora, или listener.ora файлов, которых у меня нет. Я также пытался использовать instantclient-sqlplus-nt-12.2.0.1.0.

Задний план:

  • Windows 7
  • Я скачал cx_Oracle-6.1-cp27-cp27m-win32.whl и instantclient-basic-nt-12.2.0.1.0.zip
  • Я поместил .whl в "C:\Python27\Scripts\"
  • Я использовал python -m pip install cx_Oracle --upgrade для установки cx_Oracle.
  • Я разархивировал ZIP-файл мгновенного клиента и поместил сюда дочернюю папку «C:\instantclient;C:\instantclient_12_22».
  • Я добавил ;C:\instantclient_12_2 в конец PATH.

person Digispec    schedule 07.02.2018    source источник
comment
Судя по ошибке, Python и cx_Oracle установлены и работают нормально. Это просто подключение к БД, которое нуждается в настройке. Какую строку подключения вы используете другими инструментами при подключении к БД? Является ли имя службы вашей БД «orclpdb»? Если у вас есть доступ к базе данных, такие инструменты, как «статус lsnrctl», будут отображать имена служб.   -  person Christopher Jones    schedule 08.02.2018
comment
Да, моя установка вроде бы работает, но я не могу подключиться. Как определить имя службы БД? Я думаю, что это проблема. Я никогда не подключался к удаленной БД, поэтому не могу использовать ни одну из этих команд «xxxx status». Я использовал имя службы «orclpdb», потому что оно дано в примере кода, на который я ссылался в своем вопросе, поскольку это похоже на значение по умолчанию, которое следует распознавать — как альтернатива, указанная в том же примере кода: «XE», который < i>Я думаю относится к имени службы по умолчанию для установленной БД, чего я не хочу.   -  person Digispec    schedule 08.02.2018
comment
Вам нужно будет спросить кого-то, кто знает о БД. 'oraclepdb' является обычным значением по умолчанию в новых установках. «XE» используется Oracle Express Edition.   -  person Christopher Jones    schedule 09.02.2018
comment
Я предположил, что «orclpdb» может быть значением по умолчанию, хотя я не смог найти ничего, объясняющего это... так что имя службы по умолчанию должно работать, потому что я пытаюсь подключиться к БД, которую Oracle предоставляет для тех из нас, кто использует cx_Oracle с Instant Client , правильно? Таким образом, «кто-то», кто знает о БД, - это Oracle ... Если я не понимаю, как это должно работать. Я хочу попрактиковаться в работе с БД Oracle, загрузке в нее данных и т. д., и я подумал, что смогу сделать это с удаленной БД Oracle. Это неправильно?   -  person Digispec    schedule 09.02.2018
comment
Человек, который знает о доступе к Oracle DB, — это человек, который установил его и либо выбрал параметры по умолчанию во время установки, либо выбрал пользовательские значения. Этот человек также сможет помочь с именем пользователя и паролем, а также со строкой подключения.   -  person Christopher Jones    schedule 12.02.2018


Ответы (1)


Возможно, вы можете использовать инструкции по установке из документации cx_Oracle для Windows, cx_Oracle для Windows

Сначала удалите используемый вами cx_Oracle, а затем попробуйте следовать инструкциям, приведенным в ссылке выше.

person Delster Tañedo    schedule 07.02.2018
comment
Я уже использовал инструкции в документации CX_Oracle для Windows из предоставленной вами ссылки, чтобы сделать то, что я сделал до сих пор, и, ссылаясь на содержимое этой ссылки, я считаю, что мне следует сделать в 3. (учитывая 5. сделано , и это). - person Digispec; 07.02.2018
comment
Возможно, это может помочь, если ORA-12541 является вашей проблемой ORA-12541 - person Delster Tañedo; 08.02.2018