[ORACLE]Oracleに接続できない時に確認すること

投稿日:


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に接続できない場合は、別の原因も多分に考えられるけど、構築時であれば、まずこの辺をかくにんすれば、高確率で解消できるはず。







-ORACLE

関連記事

[Oracle]破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。

破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。 破棄されたオブジェクトかどうかの判断(MSDK) MSDNでも破棄さ …

続) 何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

この土日は休日出勤でした・・・ そして、昨日・・・新しい現象が発生しました。 日本の中心付近で仕様変更と闘うSE日記日本の中心付近で仕様変更と闘うSE日記http://ht-jp.net/blog/p …

ORACLEでTO_CHARを使用し、カンマ区切りデータを出力する

帳票出力を行うPGで困った。 数値形式のデータのため、カンマ区切りで表示したいんだけど、テンプレートの制約のせいで上手く行かなくて時の解決方法。 帳票のテンプレートとなるファイルのセルは文字列形式。 …

[Oracle]長文SQLをWITH句を使って、SQLの繰り返しをまとめる

自分、WITH句アレルギーです\(^o^)/ 今でこそ、使うようになりましたが、最初は拒否反応バリバリでした。 だって、WITH句で何ができるのか良く分からなかったからです。 VIEWのように使えるか …

OracleでLISTAGG関数を使ったけど、世界を変えられなかった話・・・

OracleでLISTAGG関数を使ったら、世界が変わった話。 はい、休日出勤でした。 そして、休日出勤の結果、以下のことが分かりました(泣 日本の中心付近で仕様変更と闘うSE日記OracleでLIS …


カテゴリー