Попытка использовать любую строку подключения для обхода tnsnames.ora (полная строка подключения и EZCONNECT) возвращает следующую ошибку при попытке подключения к базе данных:
pyodbc.Error: ('HY00', '[HY00] [Oracle] [ODBC] [Ora] ORA-12560: TNS: ошибка адаптера протокола \ n (12560) (SQLDriverConnect); [Oracle] [ODBC] [ Ora] ORA-12560: TNS: ошибка адаптера протокола \ n (12560) ')
Я пытался использовать следующие строки подключения из https://www.connectionstrings.com/oracle/:
Driver={Oracle in OraClient11g_home1}; Data Source=uid/pwd@//host:port/service_name;
Driver={Oracle in OraClient11g_home1};
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=port)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)));
User Id=uid;Password=pwd;'
Я могу подключиться к базе данных, используя sqlplus и EZCONNECT:
PS: C:\>sqlplus uid/pwd@//host:port/service_name
SQL*PLUS: Release 11.2.0.1.0 Production on Thu Aug 30 11:56:22 2018
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
SQL>
Я сомневаюсь, что это проблема с драйвером, потому что использование другого драйвера возвращает другую ошибку:
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft] [ODBC Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию (0) (SQLDriverConnect)')
Почему строка подключения работает для sqlplus, но не для ODBC?