У меня есть строка подключения, которая выглядит так
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 с SQLAlachemy
- Oracle SID и имя службы; проблемы с подключением
- cx_Oracle и удаленное подключение к базе данных Oracle
Как правильно подключиться к Oracle, используя cx_Oracle
, используя SID
, а не имя службы? Как мне это сделать, не изменяя файл TNSNAMES.ORA
? Мое приложение распространяется среди многих пользователей внутри компании, и внесение изменений в файл TNSNAMES
далеко не идеально при работе с пользователями без прав администратора на их машинах с Windows. Кроме того, когда я использую имя службы, мне вообще не нужно трогать этот файл, и я бы хотел, чтобы он оставался таким.