соединение cx_oracle потеряно при перезапуске БД - PullRequest
0 голосов
/ 01 июня 2018

Я подключаю свой уровень API к базе данных Oracle с помощью коннектора cx_oracle, проблема здесь в том, что мой компьютер БД продолжает перезагружаться по ряду других причин.

Я хочу, чтобы мой уровень API не восстанавливался для восстановлениясоединение или попытаться переподключиться, какое решение для этого лучше?

Пожалуйста, не предлагайте попробовать и поймать.

Мой код подключения:

import cx_Oracle
connection_string = "{user}/{password}@{server}:{port}/{sid}".format(
    user=config.DB_USER,
    password=config.DB_PASSWORD,
    server=config.DB_HOST,
    port=config.DB_PORT,
    sid=config.DB_SID)
db_conn = cx_Oracle.connect(connection_string)

cursor = db_conn.cursor()

Iне знаю много об этом, но поможет ли здесь пул сеансов / подключений?

1 Ответ

0 голосов
/ 03 июня 2018

Если вы используете пул сеансов (cx_Oracle.SessionPool), то мертвые сеансы будут заменяться всякий раз, когда они запрашиваются из пула.Это не поможет вам с существующими сеансами, которые были получены из пула.Но если вы получаете сообщение об ошибке, и вы возвращаете сеанс обратно в пул, а затем снова получаете сеанс из пула, вы получите сеанс, который можно использовать.Если вам нужна более продвинутая защита от сбоя базы данных, вам необходимо изучить некоторые из более продвинутых методов, которые Oracle Database предлагает, например RAC (Real Application Clusters).

...