TOADSoft クライアントとOracleサーバーとの通信のロングアイドルセッションが、中間状態のフルファイアウォールでタイムアウトしたために切断されたように見えるシナリオがあります。
これらのセッションは数時間アイドル状態になる可能性があります。
ファイアウォールのタイムアウトをグローバルに増やして、
もちろん、特定のフローのより長いタイムアウトはサポートされていません。
PuTTYアイドル接続のこの問題を修正しました。
これにより、 構成可能なキープアライブ が可能になります。
しかし、TOADソフトウェアでそのようなサポートをまだ特定していません。
システム全体の構成を少し調べて、 システム全体のキープアライブの構成 に関するこのMicrosoft TechNetの詳細を思いつきました。これには、 KeepAliveTime および関連するレジストリ変数の操作が含まれます。
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime
これは システム全体のキープアライブを使用するためのLinuxシステム全体の構成 のようです。
しかし、それにはプログラムがsetsockopt()
を使用し、キープアライブを要求する必要があります(右?)。
キープアライブのサポートは、カーネルで構成されている場合でも、Linuxのデフォルトの動作ではないことに注意してください。プログラムは、setsockoptインターフェイスを使用してソケットのキープアライブ制御を要求する必要があります。キープアライブを実装するプログラムは比較的少ないです...
デルのサイトでこれを見つけ、動作することを確認しました(Toad 11.5.0.56の下で): ネットワークがタイムアウトしないように、Toadにはキープアライブ/インターバル時間/ ping設定がありますか?(49507)
要約すると、DBMS出力メニューバーの左側にある赤いボタンアイコンをクリックして、DBMS出力ウィンドウで出力をオンにします(緑色に変わります)。これには、[データグリッド]タブの横にある[DBMS出力]タブで、または[表示]-> [DBMS出力]からアクセスできます。
これにより、自動的にポーリングもオンになります。私の経験では、接続を維持するには、DBMS出力とポーリングの両方を有効にする必要があります。
Sqlnet.oraでSQLNET.EXPIRE_TIMEの値を設定します。
これが Oracleマニュアル がこの主題について言っていることです:
目的
パラメータSQLNET.EXPIRE_TIME
を使用して、クライアント/サーバー接続がアクティブであることを確認するためのプローブを送信する時間間隔を分単位で指定します。 0より大きい値を設定すると、クライアントの異常終了が原因で接続が無期限に開いたままになることがなくなります。プローブが終了した接続、または使用されなくなった接続を検出すると、エラーを返し、サーバープロセスを終了させます。このパラメータは主に、一度に複数の接続を処理するデータベースサーバーを対象としています。
この終了した接続検出機能の使用に関する制限は次のとおりです。
デフォルト:0
最小値:0
推奨値:10
例
SQLNET.EXPIRE_TIME=10
SSHアクセスはありますか? SSHトンネルを設定し、それを介してSQL通信を送信できます。
TOAD:サーバー(またはtnsnames)はローカルホストになります。リスニングポートは12346などのランダムなポートです。
PuTTY:ポートフォワーディング。送信元ポート:12346、宛先:$ REMOTE_IP:1521。ローカルポートのままにしておきます。
接続セクションを介して、PuTTYでTCPキープアライブを有効にしていることを確認してください。