こんにちは、わたあめです。一週間前くらいに、突然停電が起きてしまいました。データベースサーバのパソコンもブチッと電源が急に落ちてしまいました(汗)。
Oracleデータベースがちゃんと起動しているかどうか確認するにはどうしたらいいか、考えてみました。それでは、いってみましょう!
確認方法
Oracleのデータベースがちゃんと起動しているかどうか、段階的に確認して行こうと思います。
- サーバへ疎通確認
- Oracle自体が起動しているかどうか
- Oracleリスナーが起動しているか
- クライアントからOracleリスナーに接続確認
1.サーバへ疎通確認:pingコマンド
まずは、パソコン(サーバ)に疎通確認できるかを確認していきます。同じネットワークにある別パソコンから(DBを利用するパソコン)、パソコンに対してpingコマンドを発行します。
実行結果は以下のようになります。
C:\Users\*****>ping コンピュータ名
410-mj26e.center.zttc.or.jp [192.168.4.14]に ping を送信しています 32 バイトのデータ:
192.168.*.* からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.*.* からの応答: バイト数 =32 時間 =1ms TTL=128
192.168.*.* からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.*.* からの応答: バイト数 =32 時間 =1ms TTL=128
192.168.*.* の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 1ms、平均 = 0ms
応答があるようなのでOKみたいですここで応答がない場合は、ネットワークの状況を確認する必要があります。
2.サーバでOracle自体が起動しているかどうか
Oracleサービス自体が起動しているかどうかを確認します。手順は以下です。
- [コントロールパネル]を開く
- [管理ツール]>[サービス]をクリック
- 以下サービスの状態が[開始]になっているか確認する
OracleService**** | Oracleのサービス。 |
---|---|
Oracle****TNSListener | Oracleリスナーのサービス。Oracleを利用する人の接続を待ち構えているサービスのイメージです。 |
OracleDBConsole**** | Oracle Enterprise Managerのサービス。監視などを行う管理ツール。使っている場合は、起動する必要がある。 |
Oracle****iSQL*Plus | SQL*Plusでの接続を行っている場合は起動する必要がある。 |
※****部分はSIDだったり、Oracleのバージョン名だったりで環境によって異なる部分になります。
これらが動いていない場合、Oracleのサービスが動いていないので、右クリックでサービスを[開始]する必要があります。
3.サーバでOracleリスナーが起動しているか:lsnrctl statusコマンド
Oracleのサービスをクライアント(OracleDBを利用する他パソコン)から利用するためのリスナーが起動されているか確認します。
サービス一覧で"Oracle****TNSListener"が起動していれば起動していると思うのですが、コマンドでも状態を確認してみました。詳細なリスナーの状態が得られるので。手順は、コマンドプロンプトで以下を実行します。
実行結果は以下のようになります。
C:\*****>lsnrctl status
(中略)
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for 32-bit Windows: Version X.X.X.X.X - Production
開始日 28-5月 -2021 02:15:29
稼働時間 0 日 7 時間 13 分 33 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル C:\*****\******\listener.ora
ログ・ファイル C:\*******\******.log
こんな感じで、開始した日時や稼働時間等の情報が得られます。もし、リスナーが停止している場合は、"adapter errorn"などのメッセージが出るようです。そういう場合は、lsnrctl startコマンドで起動を行うなど対処しましょう。
4.クライアントからOracleリスナーに接続確認:tnspingコマンド
同じネットワークにある別PCから(OracleDBを利用する他パソコン)から、Oracleのリスナーが動いているかどうか確認します。手順は、コマンドプロンプトで以下のコマンドを実行します。
実行結果は以下のようになります。
C:\Users\****>tnsping 192.168.*.*:1521
TNS Ping Utility for 32-bit Windows: Version X.X.X.X.X - Production on 28-5月 -2021 10:29:10
Copyright (c) 1997, 2010, Oracle. All rights reserved.
パラメータ・ファイルを使用しました:
C:\****\sqlnet.ora
エイリアスを解決するためにHOSTNAMEアダプタを使用しました。
(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.*.*)(PORT=1521)))に接続の試行中OK (20ミリ秒)
パソコンのホスト名を指定したところ、「TNS-03505: 名前の解決に失敗しました。」が出ました。名前解決できない原因を探るのはまた今度にして、IPアドレスで指定したらうまく疎通確認できました。
起動後に問題がないかどうかログファイルも確認
起動時にエラーが発生していないかなどをアラートログで確認しておきましょう。"alert_****.log"の場所は以下です。Oracleのバージョンによって、フォルダの場所が変わります。
10.2以前 | ****/admin/DB/bdump/alert_****.log |
---|---|
11.1以降 | ****/diag/rdbms/DB/SID/trace/alert_****.log |
確認は、ログメッセージを問題のあった時刻周辺や起動前後のログを見ます。もし障害などが発生していた場合は、ログにエラー番号が記載されますので"ORA-"という文字列で検索しても良いかもです。アラートログに現れるのは、"ORA-00600","ORA-01578","ORA-00060"らへんだそうです。
さいごに
お疲れさまでした。無事に起動していましたでしょうか?停電前まではきちんと接続できていた(listener.oraやtnsnames.oraなどの設定もOK)な状態という前提はあるし、環境によって原因は異なるかもしれず、この記事でスッキリ解決という事にはならないかもしれませんが、参考になれば幸いです。
今回、「データベース大丈夫なんだよね?」と聞かれて、「大丈夫です」と答えるためにはどういう確認をしていけばいいか、考えてみたという次第です。確認しても確認しても漏れはあるし100%絶対大丈夫と言い切るのがどれだけ難しいことか。(嘆き)
それでは、また!