[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]regexp_replaceで、改行コード・タブとかのCSV出力時に邪魔になるものを消す

通常、スペースを消したい時とかなら、replaceとかtrimとかで一括で処理してたんだけど、CSVに出力したい時に、複数の処理を纏めるのがスゲェ面倒くさかった。 それがregexp_replaceで …

ORACLEで他のスキーマでSQLを実行した時に、権限不足で「ORA-01031: 権限が不足しています。」のエラーになる

A5Mk2 http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/ 普段、SQL関連は、A5Mk2っていうソフトを使用しています。 今回のエラーは、自 …

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …

ORACLEでDELETEとTRUNCATEのどちらを使うか。

未だに迷う。 例えば、テーブル全件削除をしたいときは delete * from tableA; delete文なら、こうだし。 truncate tableA; truncate文なら、こう。

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

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


カテゴリー