Database Support Blog

Database Support Blog>クラスタウェア(RAC環境)の正常起動を確認するためのコマンド

  • Oracle Database
2016.02.09

クラスタウェア(RAC環境)の正常起動を確認するためのコマンド

クラスタウェア(RAC環境)の正常起動を確認するためのコマンド

RAC環境では、クラスタウェアによってデータベースやリスナーが、リソース管理されているため、メンテナンスの際には、クラスタウェアを含めた再起動が必要なケースがあります。そのため、サポートセンターには、「RAC環境が正常に起動したことを確認する方法を教えてほしい」といったお問い合わせを多くいただきます。今回は、crsctlコマンドを使用してRAC環境が正常に起動したことを判断するポイントについて説明します。

この記事が対象としているバージョンは、Oracle Grid Infrastructure 11gR2/12cR1、対象OSはLinux/UNIXです。なお、Oracle 11gR2よりOracle Clusterwareは、Oracle Grid Infrastructureのコンポーネントの1つです。

RAC環境の正常起動を確認するコマンド(crsctl status resource -t)

RAC環境の正常起動を確認するためにcrsctl status resource -tを実行します。

コマンド構文と説明

クラスタウェアに管理されているリソース(例:データベースやリスナー)の起動状況が確認できます。

crsctl status resource -t

※crsctl stat res -t と省略することも可能です。RACを構成するいずれかのノードで実行します。
 Oracle Grid Infrastructure インストールユーザで実行してください。
 通常gridユーザという名前でインストールされています。


正常時の結果

正常時は、各リソースのTarget列、State列が共にONLINEとなります。以下は各列の説明です。

Target列:クラスタウェアが認識している状態(あるべき状態)を示します。
State列:リソースの現在の状態を示します。


以下の例は、データベースリソースとリスナーリソースを抜粋して記載しています。いずれのリソースもTarget列、State列の値はONLINEであることから、正常に起動していることがわかります。

[grid@node1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
・・・
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
・・・
ora.v1212.db
      1        ONLINE  ONLINE       node1                    Open,STABLE
      2        ONLINE  ONLINE       node2                    Open,STABLE

異常時の結果

異常時は、各リソースのTarget列、State列の値が共にONLINE以外の状態になります。以下の例では、データベースリソースが異常終了している状態を示します。

[grid@node1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
・・・
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
・・・
ora.v1212.db
      1        ONLINE  OFFLINE                               Abnormal Termination
                                                             ,CLEANING
      2        ONLINE  ONLINE       node2                    Open,STABLE

State列がOFFLINEになっている行のName列がora.v1212.dbであることからデータベースに問題が発生していることが分かります。

データベースに問題が発生しているためアラートログを確認しどのようなエラーが出ているかを確認します。今回は、smonプロセスをkillし、試験的に障害を発生させました。そのため、ユーザが明示的にリカバリを実施する必要もなく、クラスタウェアの死活監視機能によって自動的に復旧しました。異常終了から起動までのアラートログの抜粋を以下に記載します。

Wed Oct 21 16:25:45 2015
Instance Critical Process (pid: 24, ospid: 11247, SMON) died unexpectedly ●SMONが停止しデータベースが異常終了
PMON (ospid: 11165): terminating the instance due to error 474  
・・・
Wed Oct 21 16:26:00 2015
Starting ORACLE instance (normal) (OS id: 15687) ●死活監視により停止を検知し、起動を実施
・・・
Wed Oct 21 16:26:35 2015
AQPC started with pid=51, OS id=16032
Starting background process CJQ0
Completed: ALTER DATABASE OPEN /* db agent *//* {0:25:36} */ ●データベースの起動が完了

エラー内容によっては、死活監視による再起動で正常に起動しない可能性があります。アラートログを確認し、対処方法が不明な場合には、サポートセンターにアラートログをご提供ください。

crsctlコマンドがエラーになった場合に実施するコマンド

crsctl stat res -tでは、各リソースの起動状況が確認できますが、クラスタウェアが正常に起動していない場合にはエラーとなります。エラーとなった場合には、クラスタウェアの起動に失敗している可能性があるため、以下のコマンドを実行し、どこに問題があるかを特定する必要があります。

$ su - grid
$ crsctl stat res -t -init
$ ps -edf|grep d.bin
$ ps -edf|grep agent  
$ ps -edf    
※各Nodeで実行する必要があります。

一般的に多い原因は、ローカルディスクの空きが不足しているケースや共有ディスクがOSレベルで参照できないケースがあります。OSやハードウェアに問題がない場合にはソフトウェアが原因である可能性があります。ソフトウェアに問題があり起動できない場合、考えられる原因は多岐に渡るため、上述のコマンドの結果をサポートセンターにご提供ください。

以下では、VMWare上で稼働するRAC環境でよく発生する問題を1つご紹介します。VMWare環境で稼働するRAC環境において、ホストOSを変更する際、OSファイルをコピーし対応しますが、その際NICが起動しないことがよくあります。

【具体例】インターコネクトのNICが起動しないためにcrsctl stat res -tがエラーになるケース

crsctl stat res -tを実行したところCRS-4535とCRS-4000が発生しました。crsctl stat res -t -initを実行し、複数のリソースが起動していないことを確認します。

-initオプションを付与することで、データベースやリスナーのようなユーザ側が扱うリソースではなく、クラスタウェアの稼働に必要なデーモンリソースが確認できます。

[root@node1 grid]# crsctl stat res -t
CRS-4535: Cluster Ready Servicesと通信できません
CRS-4000: コマンドStatusは失敗したか、またはエラーのある状態で完了しました。
[root@node1 grid]# crsctl stat res -t -init
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.asm
      1        ONLINE  OFFLINE                               Instance Shutdown,ST
                                                             ABLE
ora.cluster_interconnect.haip
      1        ONLINE  OFFLINE                               STABLE
ora.crf
      1        ONLINE  OFFLINE                               STABLE
ora.crsd
      1        ONLINE  OFFLINE                               STABLE
ora.cssd
      1        ONLINE  OFFLINE      node1                    STARTING
ora.cssdmonitor
      1        ONLINE  ONLINE       node1                    STABLE
ora.ctssd
      1        ONLINE  OFFLINE                               STABLE
ora.diskmon
      1        OFFLINE OFFLINE                               STABLE
ora.drivers.acfs
      1        ONLINE  ONLINE       node1                    STABLE
ora.evmd
      1        ONLINE  INTERMEDIATE node1                    STABLE
ora.gipcd
      1        ONLINE  ONLINE       node1                    STABLE
ora.gpnpd
      1        ONLINE  ONLINE       node1                    STABLE
ora.mdnsd
      1        ONLINE  ONLINE       node1                    STABLE
ora.storage
      1        ONLINE  OFFLINE                               STABLE
--------------------------------------------------------------------------------
[root@node1 grid]#


上述のコマンドを確認後、クラスタウェアのアラートログを確認し、cssdプロセスが起動しないためにクラスタウェアの起動に失敗していることを確認しました。

2015-10-23 12:21:09.659 [OCSSD(11098)]CRS-1713: CSSDデーモンがhubモードで起動しています
2015-10-23 12:21:16.383 [OCSSD(11098)]CRS-1707: ノードnode1、番号1のリース取得が完了しました
2015-10-23 12:21:17.695 [OCSSD(11098)]CRS-1605: CSSD投票ファイルがオンラインです: /dev/sdb1。詳細は/u01/app/grid/diag/crs/node1/crs/trace/ocssd.trcを参照してください。
2015-10-23 12:21:17.739 [OCSSD(11098)]CRS-1672: 現在使用可能な投票ファイル数1は必要な投票ファイル数の下限1を下回っています。
2015-10-23 12:31:08.317 [CSSDAGENT(11082)]CRS-5818: コマンド'start'を中断しました(リソース'ora.cssd'に対して)。詳細は(:CRSAGF00113:) {0:9:3}(/u01/app/grid/diag/crs/node1/crs/trace/ohasd_cssdagent_root.trc)を参照してください。
2015-10-23 12:31:08.318 [OCSSD(11098)]CRS-1656: 致命的なエラーのためCSSデーモンを停止中です。詳細は(:CSSSC00012:)(/u01/app/grid/diag/crs/node1/crs/trace/ocssd.trc)を参照してください
2015-10-23 12:31:08.320 [OCSSD(11098)]CRS-1603: ノードnode1のCSSDがユーザーによってシャットダウンされました。
Fri Oct 23 12:31:13 2015
Errors in file /u01/app/grid/diag/crs/node1/crs/trace/ocssd.trc  (incident=17):
CRS-8503 [] [] [] [] [] [] [] [] [] [] [] []
Incident details in: /u01/app/grid/diag/crs/node1/crs/incident/incdir_17/ocssd_i17.trc
2015-10-23 12:31:14.338 [OCSSD(11098)]CRS-8503: Oracle Clusterware OCSSDプロセス(オペレーティング・システム・プロセスID 11098)で致命的な信号または例外コード6が発生しました
Sweep [inc][17]: completed
2015-10-23 12:31:18.926 [OHASD(10803)]CRS-2757: コマンド'Start'は、リソース'ora.cssd'からの応答を待機中にタイムアウトしました。詳細は(:CRSPE00163:) {0:9:3}(/u01/app/grid/diag/crs/node1/crs/trace/ohasd.trc)を参照してください。


cssdプロセスはインターコネクトのNICを利用してNode間通信の死活監視を実施しています。そのため、まずはNIC周りの設定や起動有無を確認しましょう。今回は、インターコネクトのNICが起動していないために、cssdプロセスの起動に失敗していることがわかりました。

[root@node1 grid]# ifconfig -a eth1
eth1      Link encap:Ethernet  HWaddr 08:00:27:21:E5:91 
          inet6 addr: fe80::a00:27ff:fe21:e591/64 Scope:Link ●IPアドレスを取得できていません
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5580250 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7031319 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3639319599 (3.3 GiB)  TX bytes:6033603209 (5.6 GiB)
[root@node1 grid]#

最後に

今回、ご紹介したcrsctl status resource -t コマンドはRACを構成する複数のコンポーネントの状態を一括して確認できる便利なコマンドです。スムーズにシステムを運用するために、運用マニュアルや手順書に本コマンドを組み込んでいただくことをおすすめします。

執筆者情報

栗原 章二

2006年にアシストに入社し、2011年よりバックサポートとしてお客様対応を行なっているメンバーのフォローを主に行っています。バックサポートの活動として、メンバーが利用する検証環境を構築しています。このブログでは、検証環境構築の手順や、これまでのサポート業務で蓄積してきたノウハウを提供します。

関連している記事

  • Oracle Database
2016.09.21

再現ケースを簡単に作成!SQLテスト・ケース・ビルダーの使用方法

再現ケースに必要な情報を一括で容易に取得できる「SQLテスト・ケース・ビルダー」の使用方法を紹介します。

  • Oracle Database
2016.08.31

DataGuard構築後に使うSQLコマンドまとめ(逆引き)

DataGuard構築後に使うSQLコマンドを逆引きでまとめました。DataGuardを構築した方、これから構築する方は押さえておきましょう。トラブル発生時に焦らないように。

  • Oracle Database
2016.08.12

仮想列関連エラーORA-54032/ORA-54033の原因と対処方法

仮想列に関するエラー(ORA-54032、ORA-54033等)が発生した際の対処方法をご紹介します。Oracle Database 12cでは仮想列が自動で作成されるため、このようなエラーにつながるケースがあります。

カテゴリ一覧

アシストサポートセンターのご紹介 Oracle Database研修

ページの先頭へ戻る