2016-10-12 5 views
1

Ich verwende SQLAlchemy CORE (1.0.12) auf Python 3.5, um eine Verbindung mit der Oracle-Datenbank meiner Organisation herzustellen. Meine Datenbankskripte funktionierten ohne Probleme, bis meine Organisation die Oracle-Datenbank von 11g auf 12c aktualisierte. Nach dem Upgrade liefere ich häufig den folgenden Fehler, wenn ich versuche, Daten in vorhandene Tabellen einzufügen.SQLAlchemy und Oracle 12c Verbindungsprobleme

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

Ich habe keine der SQLAlchemy Skripten ändern während der Aktualisierung und der Fehler nicht immer auftreten, in der Regel nur geschieht, wenn ich große Datensätze einzufügen versuche. Ich habe Probleme im Zusammenhang mit dem ORA-03135 Fehlercode untersucht und bestätigt, dass ich keine Firewall-Probleme (ich bin in der Lage, manchmal zu verbinden) oder Timeouts (Fehlermeldung erscheint innerhalb von Sekunden, die viel zu früh für Timeout ist).

Hat jemand anderes dieses Problem und eine Lösung gefunden?

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

Haben Sie Oracle Client-Bibliotheken auf dem laufenden Python-Computer aktualisiert? –

+0

Hoppla, habe ich nicht obwohl ein Update auf SQLAlchemy 1.1 scheint den Trick für jetzt getan. Ich werde versuchen, den Client zu aktualisieren –

+0

Hinweis: Ich habe meine Oracle-Clients aktualisiert, aber immer noch die Probleme, jeder hat eine Lösung? –

Antwort

0

Wir haben in genau dieses Problem führen und die folgende Lösung verhinderte den Fehler:

auf dem Oracle-Datenbankserver Parameter auf die sqlnet.ora Datei hinzufügen (eine große Anzahl mit wie unten an verhindern Timeout):

SQLNET.SEND_TIMEOUT=600000 

auch denselben Parameter auf dem Client-sqlnet.ora fügen der Datenbank über python zu verbinden.

Verwandte Themen