テスト環境用等で WindowsXP(SP2)マシンに Oracle9i(サーバ:Personal)をインストールすることが
あるかと思うが、この場合 Oracleは WindowsXP-SP2の『Windowsファイアウォール』の影響もあって、
そのマシンの外部からはそのままでは使用できなくなってしまう。
どうすれば使えるようになるかというと、以下の3つの設定を見直さなくてはいけない。
1.コントロールパネル → Windowsファイアウォール
→ 『例外』タブ → 『ポートの追加』ボタン
TCP-1521 を追加する。(名前は自由に付けてよい)
これでマシン自体がOracleプロトコルの開始の通信を受け付けるようになる。
通常は Windowsファイアウォールで、受信パケットを全く受け付けなくなっているので、
例外を設ける必要があるということ。
2.以下のレジストリを追加する
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
USE_SHARED_SOCKET(文字列値) = TRUE
サーバー側の通信ポートを共有する設定にする。
詳しくは省くが『リダイレクション』を抑えてサーバー側のポートを共有化するのだそう。
ただ、これが合点がいかないのだが、試しに使っていた 9.2.0.1 では自分が見渡す限り
この操作に相当する管理インターフェイスを探しても見つけることはできなかった。
レジストリを直接いじる操作になる。
なお、Windowsではレジストリだが、Unixの場合は環境変数に設定する値だそう。
3.OracleHome\NETWORK\Admin\tnsnames.ora ファイルを編集する。
PROTOCOL / SERVICE_NAME を見て、メインで使用しているサービス名を見つけ出し、
SERVERを DEDICATED にする。
ILOVEXxx.ILOVEX.CO.JP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ilovexXX)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ilovexXX)
)
)
クライアントから接続するサーバーのタイプを『共有サーバー(SHARED)』ではなく
『専用サーバー(DEDICATED)』にしなくてはいけない。
(デフォルトがいずれになっているのかは環境に依存するようだが)
『共有サーバー』にした場合は、デフォルトの TCP-1521も使いながら、
それ以外の通信用ポートも必要になるため。
ここまで設定してようやく通常の接続が可能となる。
なお、Oracleに付属している TNSPING.exe という設定確認ツールがあるが、
これはあくまでもTCP/IPでの ping相当のものであって複雑な複雑な往復通信をするわけではない。
よって、TNSPINGで接続が確認できたからといって通信が全くうまくいくとは限らない。
少なくとも上記設定は SQL/plusで接続できるかどうか試してみる必要があるようだ。
上記は Windowsファイアウォールによる制限を避けるための設定だが、一般的に Firewallや
NAT(NAPT)/BOXを越えたような場所に Oracleがある場合は、同様の設定が必要になる。
コメント (3)
早速試しました。
私のXPSP2端末のORACLEも、
ばっちり繋がるようになりました。
この点だけ見ると、1433を開けるだけで済む
SQLServerのほうが楽でいいですね。
投稿者: きり | 2004年10月20日 19:37
もともとの発想(想定規模など)が違うからでしょうから、設定の仕方さえちゃんと明記されていれば、いずれが良いとか悪いとかではないと思いますが、
ただ、レジストリの操作というのがどうも腑に落ちないんですよねぇ・・・。
投稿者: 市川 | 2004年10月20日 20:28
参考になりました。
ありがとうございました。
投稿者: 北村 | 2005年3月 1日 13:38