2008.05.15

Oracleのデータベースに接続できないときの調査手順

Oracleのデータベースに接続できない、といったトラブルが発生した時に
原因を調査する手順についてまとめてみました。
例えば、SvOrclというマシン名のOracleサーバがあるとします。

1.Oracleサーバとの接続を確認
ネットワーク自体に問題はないか、Oracleサーバが見えているか、をpingを使って確認します。

> ping SvOrcl

Pinging SvOrcl [XXX.XXX.XXX.XXX] with 32 bytes of data:

Reply from XXX.XXX.XXX.XXX: bytes=32 time<1ms TTL=128
Reply from XXX.XXX.XXX.XXX: bytes=32 time<1ms TTL=128
Reply from XXX.XXX.XXX.XXX: bytes=32 time<1ms TTL=128
Reply from XXX.XXX.XXX.XXX: bytes=32 time<1ms TTL=128

Ping statistics for XXX.XXX.XXX.XXX:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms


コマンドを実行したときに、上記のような結果が返ってくればOKです。
返ってこない場合は、
・ネットワーク接続に問題はないか
・Oracleサーバのマシン名は間違っていないか
など、ネットワーク管理者に確認しましょう。


2.リスナーとの接続・動作を確認
次にリスナーに関する情報を確認することになりますが、その前にリスナーについて簡単に説明します。

クライアントから接続要求をだすと、Oracleサーバではまずリスナーがその要求を受け取ります。
リスナーはその要求によりOracleデータベースにサーバープロセスを生成します。
以後はそのサーバープロセスがクライアントの要求を受け付けます。

このようにOracleデータベースが応答する前の段階でリスナーが呼ばれることになります。
したがって、ネットワークとの接続を確認できた後は、リスナーが正常に動作しているか確認することになります。
リスナーが正常に動作しているかの確認には、tnspingのコマンドを使います。

> tnsping SvOrcl

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-5月 -
2008 13:09:34

Copyright (c) 1997, 2005, Oracle. All rights reserved.

パラメータ・ファイルを使用しました:
C:\oracle\product\10.2.0\Client_2\network\admin\sqlnet.ora

エイリアスを解決するためにEZCONNECTアダプタを使用しました。
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=SvOrcl))(ADDRESS=(PROTOCOL=TCP)(HOST=XXX.XXX.XXX.XXX)(PORT=1521)))
OK (20ミリ秒)


このような結果が返ってくればOKです。
エラーが出た場合は下記の点を確認します。
-----------------------------------------------------------------------
・リスナーが起動されているか
 → Oracleサーバでリスナーが起動されているか確認します。

・リスナーアドレスは正しいか
・リスナーで設定しているサービス名は正しいか
 → Oracleサーバのリスナー定義が正しくない可能性があります。
  リスナー定義は下記のファイルに設定されています。
  %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
-----------------------------------------------------------------------


3.Oracleデータベースとの接続・動作確認
リスナーまで接続できていることを確認できたら、
最後にOracleデータベースが正しく動作しているか確認します。
Enterprise Managerなどでログインできるか確認します。
もしここで正常に接続できない場合、下記のようなことが考えられます。
-----------------------------------------------------------------------
・ネットサービス名は正しいか
 → クライアント側で設定しているネットサービス名が正しいか確認します。
  ネットサービス名は下記のファイルに設定されています。
  %ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora
 
・データベースは起動しているか
 → リスナーは動作していてもデータベースが起動していない場合があります。
 
・ユーザー名、パスワードは正しいか
 → 入力ミス、記憶ミスなどがないか確認します。
-----------------------------------------------------------------------


このような、データベースに接続できないといったトラブルは
とくに新しくデータベースサーバを構築した場合などに起きやすいと思います。
以上のような手順を踏めば、どこにトラブルの原因があるか突き止めやすくなります。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
yamaoka