Oracleの通信ポートを固定したい | ライタス株式会社
WEB/DBサーバー間にファイアウォールを設置して運用しているパターンなのですが、WEBサーバーから突然接続できなくなります。 WEBサーバー側には、ORA-12514(10gで経験)やORA-03135(11gで経験)が発生しているようです。 ここまで説明すれば、ピンと来る人もいるでしょう。 実は、FireWallにSonicwall製のものを使用している場合は、(機種によって違いがあるかも知れませんが)デフォルトで5分の無通信期間が発生すると、セッションを強制的に切断します。 設定値は「TCP 接続無動作時タイムアウト」で設定されているので、コンソールから確認できます。 この機能は、ファイアウォールからすれば、当然の機能なのですが、ポートが固定になっていないアプリケーションにとっては、トラブルの引き金になる可能性があります。 Oracleでは、ポート1521を使用しますが、デフォルトの動作では、ポートがリダイレクトされるされるようです。 そこで設定するのが、「USE_SHARED_SOCKET」というパラメータ Windows版はレジストリに、Unix系は環境変数に設定するものだそうです。 参考 http://kozhouse.homeip.net/TIPS/firewall/ では、私が動かしている、Windows Server 2008 R2 on 11gR2では、どのように設定するのか? 基本は、他のバージョンと同じでよいようです。 [HKEY_LOCAL_ MACHINE \SOFTWARE\ORACLE\HOME0]に USE_SHARED_SOCKET="TRUE"( REG_SZ )を追加すればOKです。 HOME0は、場合によっては、「KEY_OraDb11g_home1」などになっているかも知れません。これは、インストール時の状況によって異なると思われます。 私の場合は、 [HKEY_LOCAL_ MACHINE \SOFTWARE\Wow6432Node\ORACLE\KEY_OraDb11g_home1] でした。 (OSが64ビットだから?) ちゃんと設定できているか、まだ検証していませんが、今のところは大丈夫みたいです。 ※レジストリをいじる場合は、バッ...