Oracle > Oracleが応答しない(Oracle11g)

2015-02-05 19:43:31 (Thu);

こんな状況が発生したら・・・

  • 1行(数行)の問い合わせは問題ないのに、大量データを問い合わせると応答が無い
  • 同じDBへの接続なのにクライアントによって応答が無くなる場合がある
  • 11g Clientをインストールしたら応答が無くなった
  • DBやクライアントは変わらないのに、とあるネットワーク網で接続すると応答が無い

などなど。
なぜかOracleの応答が無くなる(もしくは遅延する)といった現象。


原因としては
Oracle 11g Client のSDU(セッションデータユニット)のデフォルト値が変わったこと
なのかもしれません。

10g以前のSDUのデフォルトは2048
11gのSDUのデフォルトは8192


上記事例に該当する場合は、
SDUのデフォルトを2048に変えて実行するとうまくいくかもしれません。
変更するには sqlnet.ora か tnsnames.ora にSDUを記述します。

★sqlnet.ora(クライアント全体に設定)
DEFAULT_SDU_SIZE=2048


★tnsnames.ora(特定の接続のみ設定)
xxDB =
  (DESCRIPTION =
   (SDU=2085)
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = xxdb)
    )
  )








(こっそりおまけ) ※注意:未検証です。

私は特定のネットワーク網で接続したときに発生しました。
解決策を教えてくれた人の話では、
原因はMTU(Maximum Transmission Unit)の設定とかファイアーウォールにあるのかもしれない
とのこと。


MTUの設定が小さいため、通信時にパケットが大量に分散され
それをファイアーウォールが危険と判断してブロックする。
なのでいつまでたっても通信中のまま応答が無くなる。

もしくは、ファイアーウォールにブロックされないまでも、
パケットが大量に分散されるため、応答が著しく遅い。

とか。


ここらへん疎いので、
私の解釈が間違ってる可能性大です。
なのであまり気にしないでください。






最終更新:2015年02月05日 19:43