Database Support Blog

  • 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®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Database
2024.04.08

【Oracle Database】FAQで安定運用に貢献!サポートセンターのナレッジ公開の取り組み

アシストオラクルサポートセンターが公開しているFAQは、仕様に関するQAやエラー発生時の対処方法などはもちろん、不具合情報や障害発生時の情報取得方法といった安定運用に役立つ内容も扱っています。そのFAQをどのように作成しているのか、サポートセンターの取り組みをご紹介します。

  • Oracle Cloud
  • Oracle Database
2024.02.02

OCIにおけるOracle Database 11g R2、12g R1、12g R2の新規プロビジョニング終了とその影響

Oracle Databaseのバージョン11g R2、12g.R1、12g.R2は既にすべてのメーカーサポートが終了しています。OCIのBase Database Serviceでも2024年1月中旬ころから11g R2、12g R1、12g R2での新規プロビジョニングができなくなりました。

  • Oracle Database
  • その他
2023.12.21

【Oracle Database】サポートセンターでの生成AI(Glean)活用

アシストでは全社員にAIアシスタントGleanを導入しました。サポートセンターで2ヶ月間使ってみて感じた効果やメリットをお伝えします。

ページの先頭へ戻る