Я использую стандартный оператор cx_Oracle.connect() в python, подобный этому
cnxn = cx_Oracle.connect(user/pwd@connection:port/service)
И я получаю эту ошибку
DatabaseError: ORA-12170: TNS:Connect timeout occurred
Я думаю, это потому, что мы просто переключаемся на базу данных amazon/aws/rds, которая работает очень медленно, а время ожидания соединения истекает слишком быстро. Есть ли простой способ увеличить время ожидания до истечения времени ожидания?
Я пробовал эти решения без успеха до сих пор.
Да, я тоже не могу подключиться к dbeaver. Я собираюсь изучить некоторые другие возможности, но мой вопрос остается в силе, как я думаю.
Вероятно, у вас нет тайм-аута с cx_oracle
, а скорее с вашим клиентом оракула
Вы можете call_timeout
, но обычно для запросов после первоначального подключения.
Вы можете обновить свой файл sqlnet.ora
, как показано ниже.
SQLNET.INBOUND_CONNECT_TIMEOUT = 0
Я попробовал это решение, но я не знаю, как проверить, имеет ли оно значение. Это не решило мою проблему.
Если вы используете Oracle Client 19c или более позднюю версию, вы можете добавить время ожидания подключения к строке Easy Connect. См. База данных Oracle 21c Easy Connect Plus:
cnxn = cx_Oracle.connect(user/pwd@connection:port/service?transport_connect_timeout=15)
Существует также вариант connect_timeout
, разницу см. в краткой технической ссылке выше.
Единицы в секундах или минутах?
Это не решает проблему, с которой я сталкиваюсь, но отвечает на вопрос, который я задавал. Спасибо.
Единицы - секунды.
Ответ ниже, но это может быть что угодно. Убедитесь, что вы можете подключиться к feom dbeaver и т. д. Убедитесь, что синтаксис правильный. Иногда cx пытается подключиться с неправильными данными и по-прежнему выдает ошибку тайм-аута.