2016-10-12 20 views
1

Python 3.5でSQLAlchemy CORE(1.0.12)を使用して、組織のOracleデータベースに接続しています。私の組織がOracleデータベースを11gから12cにアップグレードするまで、私のデータベーススクリプトは問題なく動作しました。アップグレード後、私は通常、既存のテーブルにデータを挿入しようとすると、以下のエラーに遭遇します。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

Python実行マシンでOracle Clientのlibsを更新しましたか? –

+0

私は、SQLAlchemy 1.1のアップデートが今のところトリックを行ったように見えますが、私はしませんでした。クライアントを更新する際にいくつか試行します。 –

+0

注:私はOracleクライアントを更新しましたが、問題はまだ解決していますか? –

答えて

0

は、我々はこの正確な問題に遭遇してきたし、次の回避策は、エラー防止:そのように以下のように大規模な番号を使用して(sqlnet.oraファイルにパラメータを追加し、Oracleデータベース・サーバー上で

をタイムアウトを防ぐ):

SQLNET.SEND_TIMEOUT=600000 

また、クライアントのsqlnet.oraに同じパラメータを追加して、Python経由でデータベースに接続します。

関連する問題