Oracleのデータベースに接続できない、といったトラブルが発生した時に
原因を調査する手順についてまとめてみました。
例えば、SvOrclというマシン名のOracleサーバがあるとします。
1.Oracleサーバとの接続を確認
ネットワーク自体に問題はないか、Oracleサーバが見えているか、をpingを使って確認します。
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のコマンドを使います。
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
・データベースは起動しているか
→ リスナーは動作していてもデータベースが起動していない場合があります。
・ユーザー名、パスワードは正しいか
→ 入力ミス、記憶ミスなどがないか確認します。
-----------------------------------------------------------------------
このような、データベースに接続できないといったトラブルは
とくに新しくデータベースサーバを構築した場合などに起きやすいと思います。
以上のような手順を踏めば、どこにトラブルの原因があるか突き止めやすくなります。