2016-10-12 6 views
1

Я использую SQLAlchemy CORE (1.0.12) на Python 3.5 для подключения к базе данных Oracle моей организации. Мои сценарии базы данных работали без проблем, пока моя организация не обновила базу данных Oracle с 11 до 12c. После обновления я обычно сталкиваюсь с ошибкой ниже при попытке ввода данных INSERT в существующие таблицы.SQLAlchemy и Oracle 12c Проблемы с подключением

sqlalchemy.exc.OperationalError: (cx_Oracle.OperationalError) ORA-03135: connection lost contact 
Process ID: 10355 
Session ID: 184 Serial number: 60376 

я не изменил какие-либо из сценариев SQLAlchemy в процессе обновления и ошибки не всегда происходит, как правило, происходит только когда я пытаюсь вставить большие наборы данных. Я исследовал проблемы, связанные с кодом ошибки ORA-03135, и подтвердил, что у меня нет проблем с брандмауэром (иногда я могу подключиться) или таймаутами (появляется сообщение об ошибке в течение нескольких секунд, что слишком рано для таймаута).

У кого-нибудь еще была эта проблема и нашли решение?

Traceback (most recent call last): 
    File "C:\ross\repository\Analytics\OptTekSQL\run.py", line 5, in <module> 
'Demand Analysis 8/17/16') 
    File "C:\ross\repository\Analytics\OptTekSQL\optsql\data_load.py", line 43, in demand_output_load 
s.insert_df(df, 'ACCDC_DEMAND_OUTPUTS') 
    File "C:\ross\repository\Analytics\OptTekSQL\optsql\base.py", line 38, in insert_df 
self.eng.connect().execute(ins, data) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 914, in execute 
return meth(self, multiparams, params) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\sql\elements.py", line 323, in _execute_on_connection 
return connection._execute_clauseelement(self, multiparams, params) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1010, in _execute_clauseelement 
compiled_sql, distilled_params 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1146, in _execute_context 
context) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1341, in _handle_dbapi_exception 
exc_info 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\util\compat.py", line 200, in raise_from_cause 
reraise(type(exception), exception, tb=exc_tb, cause=cause) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\util\compat.py", line 183, in reraise 
raise value.with_traceback(tb) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\engine\base.py", line 1116, in _execute_context 
context) 
    File "C:\Users\palmer\AppData\Local\Continuum\Anaconda2\envs\py3\lib\site-packages\sqlalchemy\dialects\oracle\cx_oracle.py", line 964, in do_executemany 
cursor.executemany(statement, parameters) 
+0

Вы обновили библиотеки Oracle Client на запущенной машине python? –

+0

К сожалению, я не обновлял SQLAlchemy 1.1, похоже, уже сделал трюк. Я сделаю некоторые попытки по обновлению клиента. –

+0

Примечание. Я обновил мои клиенты Oracle, но у меня все еще есть проблемы, у кого есть решение? –

ответ

0

Мы столкнулись с этим точным вопросом и следующий обходной путь предотвратить ошибку:

На сервере базы данных оракула, добавьте параметр в файл sqlnet.ora (с использованием большого количества таких как ниже предотвратить тайм-аут):

SQLNET.SEND_TIMEOUT=600000 

Кроме того, добавьте тот же параметр на sqlnet.ora клиента с подключением к базе данных с помощью питона.

Смежные вопросы