1. ホーム
  2. c#

[解決済み] 大きなファイルを挿入すると、"ORA-03135: connection lost contact" と表示される。

2022-01-26 20:26:40

質問

Entity Framework (ODP.Net) を使って、リモートの Oracle (11g) データベースに大量のバイナリ・データを挿入しようとしています。それは本当に小さなファイル(<5KB)には問題なく動作しますが、大きなファイル(例えば44KB)にはエラーが発生します: "ORA-03135: connection lost contact".

コマンドを実行してから1秒以内に例外が発生するので、タイムアウトではないと思うのですが。

接続文字列に以下の2つを設定してみましたが、効果がありません。

  • 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ファイルのexpire_timeパラメータの値を増やすか、SQL*Plusプロファイルでexpireパラメータをチェックすることです。

ORA-03135 エラーを診断するには、ps -ef|grep 構文を使用して、OS PID がまだ存在するかどうかを確認することから始めます。

クライアントとサーバーの間にネットワークアドレス変換(NAT)があるかどうかを確認する

Windowsの場合、Windowsファイアウォールがローカル接続をチェックしているかどうかを確認します。

Windows XP -> コントロールパネル -> セキュリティ -> タブ "詳細設定"

また、パラメータsqlnet.inbound_connect_timeoutとinbound_connect_timeout_listenernameを0に設定すると、ORA-03135エラーを停止することができます。

また、上記と同様に、データベースのアラートログで、接続が切れると同時に発生するエラーがないか確認してください。ora-600やora-7445などが原因になっていることもあります。このエラーは、ハンドシェイクが完了した後にのみ発生するため、リスナーログには表示されないはずです。