oracledb==2.5.0
Приложение подключается к базе данных Oracle 19.16. и через DB-link берет данные из других баз. Приложение работает корректно, за исключением случая, когда какая-либо из баз данных, указанных в DB-link, перезагружена или недоступна.
В таких случаях я получаю сообщение об ошибке:
Код: Выделить всё
File "/application/project/kafka_loader/database.py", line 12, in execute_in_oracle
cursor.execute(sql)
File "/application/project/kafka_loader/kafka_env/lib/python3.11/site-packages/oracledb/cursor.py", line 710, in execute
impl.execute(self)
File "src/oracledb/impl/thin/cursor.pyx", line 196, in oracledb.thin_impl.ThinCursorImpl.execute
File "src/oracledb/impl/thin/protocol.pyx", line 440, in oracledb.thin_impl.Protocol._process_single_message
File "src/oracledb/impl/thin/protocol.pyx", line 441, in oracledb.thin_impl.Protocol._process_single_message
File "src/oracledb/impl/thin/protocol.pyx", line 433, in oracledb.thin_impl.Protocol._process_message
File "src/oracledb/impl/thin/messages.pyx", line 74, in oracledb.thin_impl.Message._check_and_raise_exception
oracledb.exceptions.DatabaseError: ORA-03150: end-of-file on communication channel for database link
ORA-02063: preceding line from CURRENCY
Help: https://docs.oracle.com/error-help/db/ora-03150/
Код: Выделить всё
import oracledb
connection_curr = oracledb.connect(
user="user",
password="password",
dsn="ip_address/db_name")
class DB:
def execute_in_oracle(sql):
with connection_curr.cursor() as cursor:
cursor.execute(sql)
oracle_data = cursor.fetchone()
return oracle_data
Подробнее здесь: https://stackoverflow.com/questions/793 ... -ora-03150