2015年12月14日月曜日

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ビットだから?)

ちゃんと設定できているか、まだ検証していませんが、今のところは大丈夫みたいです。

※レジストリをいじる場合は、バックアップを取ろう! くれぐれも自己責任で!



本記事は、弊社代表のブログ記事なんでもIT屋の宿命から転載し、加筆訂正したものです。

0 件のコメント:

コメントを投稿