У меня есть строка подключения, которая выглядит так:
con_str = "myuser/[email protected]:1521/ora1"
Где ora1
- SID моей базы данных. Использование этой информации в SQL Developer отлично работает, что означает, что я могу подключаться и запрашивать без проблем.
Однако, если я попытаюсь подключиться к Oracle с помощью этой строки, это не сработает.
cx_Oracle.connect(con_str)
DatabaseError: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Этот формат строки соединения работает, если ora1
является именем службы.
Я видел другие вопросы, которые, похоже, обращаются к моей проблеме (он работает с SID, но не с именем службы)
- Использование Oracle Service Names с SQLAlachemy
- Oracle SID и имя службы; проблемы с подключением
- cx_Oracle и подключение к Oracle DB удаленно
Каким образом можно подключиться к Oracle, используя cx_Oracle
, используя SID
а не имя службы? Как это сделать без необходимости корректировки файла TNSNAMES.ORA
? Мое приложение распространено среди многих пользователей внутри страны, и внесение изменений в файл TNSNAMES
является менее идеальным при работе с пользователями без прав администратора на их машинах Windows. Кроме того, когда я использую имя службы, мне не нужно вообще прикасаться к этому файлу и хотелось бы, чтобы он поддерживал его таким образом.