Entity Framework(ODP.Net)を使用して、リモートのOracle(11g)データベースに大量のバイナリデータを挿入しようとしています。非常に小さいファイル(<5 KB)の場合は正常に機能しますが、大きいファイル(44 KBなど)の場合は、「ORA-03135:接続が失われました」というエラーが表示されます。
コマンドを実行してから1秒以内に例外が発生するため、タイムアウトになるとは思いません。
接続文字列に次の両方を設定しようとしましたが、役に立ちませんでした。
Validate Connection=true
Pooling=false
リモートマシンのlistener.log
ファイルも調べました。確立されている接続が表示されますが、例外や接続の終了の兆候はありません。
提案された修正またはトラブルシューティング方法を探しています。
編集:
ローカルネットワーク上のOracleインスタンスにアクセスする場合も、同じSQL操作が機能します。
これは、考えられるさまざまな原因と解決策を伴う複雑な問題になる可能性があります。ここから始める:
http://www.dba-Oracle.com/t_ora_03135_connection_lost_contact.htm
回答:oerrユーティリティは、ORA-03135エラーに対してこれを示しています。
ORA-03135:接続が失われました
原因:1)サーバーが予期せず終了したか、強制終了しました。または2)サーバーが接続をタイムアウトしました。
処置:1)サーバー・セッションが終了したかどうかを確認してください。 2)sqlnet.oraでタイムアウトパラメータが正しく設定されているかどうかを確認します。
ORA-03135エラーは、ファイアウォールが接続を終了したときにリモート接続する場合によく発生します。
ORA-03135エラーの解決策の1つは、sqlnet.oraファイルのsqlnet.ora expire_timeパラメータの値を増やすか、SQL * Plusプロファイルのexpireパラメータを確認することです。
ORA-03135エラーを診断するには、ps –ef | grep構文を使用して、OSPIDがまだ存在するかどうかを確認することから始めます。
クライアントとサーバーの間にネットワークアドレス変換(NAT)があるかどうかを確認します
Windowsでは、Windowsファイアウォールがローカル接続をチェックしているかどうかを確認します。
Windows XP->コントロールパネル->セキュリティ->タブ「詳細」
また、パラメータsqlnet.inbound_connect_timeoutおよびinbound_connect_timeout_listenernameを0に設定すると、ORA-03135エラーを停止できます。
また、上記のように、接続の切断と同時に発生するエラーがないか、データベースのアラートログを確認してください。たとえば、ora-600またはora-7445が原因である場合もあります。このエラーはハンドシェイクが完了した後にのみ発生するため、リスナーログには表示されません。
一般に切断された/古い接続によって引き起こされるこの状況は、接続プールから取得されます。 Pooling = falseの後にこの例外が発生した場合は、おそらくファイアウォールが次の理由で接続をブロックしていますtcpアイドルタイムアウト tcpアイドルタイムアウト値が予想されるコマンド実行時間よりも大きいことを確認してください