[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]ora-12638 資格証明の取出しに失敗しましたと表示される原因と対処法

客先で起こった内容。 状況 客先のdumpを取得するために、用意されているバッチファイルを実行した時に発生 ora-12638 資格情報の取出しに失敗しました バッチファイルの黒い画面で一瞬だけエラー …

partition by を使って、ORACLEで、グループ毎に1行だけ取得する。

グループ単位で一番小さいとか、一番大きいとかだけなら、MinやMaxを使って外部結合で対応できるんだけど、1番目2番目3番目を1列で取得しなきゃいけない状態になったので、調べて解決。 「partiti …

ORACLEでCASE文を使用した時にORA-00932のエラーが出る

割と悩んだ・・・ 原因は、CASE文で使用している項目のデータ型が異なるのが原因みたいだけど、正直、ぴんと来てない現実w select case name when ‘A’ then ‘あ’ when …

[ORACLE]指定日付の月末を取得する

LAST_DAYで月末を取得する LAST_DAYを使います。 実際、仕様で、ある項目には月末を入力させるとか、翌月1日を指定するとかいうのが指定されたりします。 細かく計算してると正直面倒くさいです …

SQL文中で全角文字を使うなと言われたので、ORACLEでJOIN句の条件式をCASE文で分岐させる

JOINの条件式にCase文を入れる http://blog.goo.ne.jp/ilikehobby/e/80b471f96f6d693b6c5df75f18591c0e SQL文中で全角文字を使う …


カテゴリー