Oracleを新しくインストールした時に、中々接続できなかったので、その時に確認しておくべき事項のまとめ。
少なくとも、これは先にやっておいた方がいいこととか。
前提条件
前提と書くとものものしいけど、今回試した環境は以下。
VMWarePlayer 12 上にWindows7をゲストOSとしてインストール。
以降、ゲストOSと呼称します。
ゲストOS上に新規でOracleをインストール。
それ以外のソフトは特に無し。
最初にやること
サーバー管理者がいて、環境構築をしてくれるなら全然いいんですが、自分で環境構築する必要があるときも多々ある訳です。
PINGの確認
ということで、その後も何かと確認に使うPingを使えるか確認。
その後も、ネット環境の疎通確認とか、なんやかんやで最初に確認することだったりするので、割と必須。
もちろん、セキュリティの関係上で、Ping応答させないなら話は別ですが。
ping サーバー名
正常に動作していれば、こんな感じで応答が返ってきます。
サーバー名が間違っているとこんな感じに。
IPが存在しなかったり、Pingを返せる状況でないときはこんな感じ。
まぁ、Pingはとりあえず、相手先PCが起動してるかの確認に使うぐらいではあるけど、割とよく使うので、とりあえず確認は必須。
Pingの許可設定
上記の確認でPingが確認できない場合は、Pingの許可設定をします。
Pingの許可設定の仕方は、ネットで探せば出てきますが、なんかページごとに内容が違ったりするので、設定するサーバーの環境に合せてお好みで。
というか、セキュリティの絡みも出てくると思うので、WindowsFireWallの設定は本番環境を設定するなら、色々検討が必要ですが・・・
今回は、ローカル環境でしかないので、割と適当だったりしますw
コントロールパネルでWIndowsファイアウォールをクリック。
左側の「詳細設定」をクリック。
左側の「受信の規則」をクリック。
右側の「新しい規則」をクリック。
「カスタム」を選択して次へ。
「全てのプログラム」を選択して次へ。
プロトコルの種類を「ICMPv4」を選択して次へ。
そのまま次へ。
「接続を許可する」を選択して次へ。
ネットワークの種類を使用する環境に応じて選択します。
今回は、ローカル環境なので、そのまま。
最後に、名前に「Ping」(別に分かりやすければなんでもいい。)と入力し、完了をクリック。
真ん中の一覧に「Ping」が出来ていればOKです。
Windowsファイアウォールの許可設定は、Oracleインストール後に、ポート開放したりで使うので、頭の片隅においておくといいです。
リスナーの起動・接続確認
今回は、これが原因だったんですが、リスナーの動作確認をします。
今回、ゲストOS上にOracleをインストールして、DB環境を構築したんだけど、ホストOSからの接続が全くできない状態でした。
先の確認でPingが問題なければ、少なくともサーバー(ゲストOS)には接続できる状態ではあるので、次に考えられるのはOracleのサーバーとしての状態です。
まぁ、ゲストOS上でOracleへの接続ができるかを確認してからの話にはなるけど、今回はSQLPlusで接続することは出来ている状態なので、その辺はすっ飛ばしてます。
というか、大体、Oracleをインストールした時点で、SQLPlusでの接続はできるので。
これが無理なら、そもそもが大問題w
サービスの確認
- OracleServiceXXXXっていうサービスが開始になっているか
- OracleOraDb11g_home1TNSListnerっていうサービスがかいしになっているか
少なくともこの2点は確認必須。
1つ目は、まぁ、ローカルでの接続すらできないので、すぐ分かるかと。
2つ目は、ローカル確認だけでは分からなかった・・・
で、確認するには、tnsPingコマンドを使う。
tnsping サーバー名
Pingでの確認時に、サーバー名での名前解決が出来ていないなら、IPを直接入力になる。
成功するとこんな感じ。
失敗するとこんな感じ。
リスナーとは何ぞや?って話になるけど、Oracleサーバーでは先にリスナーがクライアントからの接続要求を受けるため、リスナーが正しく動いてないと、クライアントからの接続に失敗します。
今回はこれが原因。
サービスはスタートアップが自動になっていたので、まさかそんなところで・・・って感じでした。
慣れというか、普段、Oracle11g XEをローカル端末に入れなおしぐらいしかしないので、そこまで頭が回らなかった・・・
その他
リスナーが起動している場合は、他の確認をしていきます。
リスナーのサービス名があっているか?
その他、定義が正しいか?
%ORACLE_HOME%\NETWORK\ADMIN 以下にある
- listener.ora
- sqlnet.ora
- tnsnames.ora
ファイルを確認してみる。
例えば、接続時のサービスネームが実は設定されているものと違っていたりすると、接続できないのでw
まとめ
こちらのページが参考になりました。
https://www.ilovex.co.jp/Division/ITD/archives/2008/05/oracle.html
もちろん、Oracleに接続できない場合は、別の原因も多分に考えられるけど、構築時であれば、まずこの辺をかくにんすれば、高確率で解消できるはず。