前述した通り、「crsctl stat res -t」コマンドで各リソースの起動状況を確認できますが、「クラスタウェアが正常に起動していない」場合にはエラーとなります。つまり、「crsctl stat res -t」コマンドを実行してエラーとなったら、クラスタウェアがそもそも起動に失敗しているということになります。
この場合には、以下のコマンドを実行してどこに問題があるかを特定します。これらは各ノードで実行します。
$ su - grid $ crsctl stat res -t -init $ ps -edf|grep d.bin $ ps -edf|grep agent $ ps -edf
よくある原因としては、「ローカルディスクの空きが不足している」や「共有ディスクがOSレベルで参照できない」といったハードウェアやOS上の障害が挙げられます。ハードウェアやOSに問題がなければ、ソフトウェア上の原因を探ります。ソフトウェア上の原因によって起動できない場合には、考えられる原因は多岐にわたります。上記コマンドの出力結果を採取しておくことで、早期解決の調査に役立ちます。
VMware上で稼働するOracle RAC環境の事例を紹介します。この環境では、ホストOSを変更する際にOSファイルをコピーして対応するのですが、NICが正しく認識されなくなるトラブルがよく発生するようです。
「crsctl stat res -t」コマンドを実行したところ、CRS-4535とCRS-4000のエラーが発生していました。
[root@node1 grid]# crsctl stat res -t CRS-4535: Cluster Ready Servicesと通信できません CRS-4000: コマンドStatusは失敗したか、またはエラーのある状態で完了しました。
トラブルシューティングを行っていきます。
まず、「crsctl stat res -t -init」を実行し、複数のリソースが起動していないことを確認します。「-init」オプションを付けることで、データベースやリスナーのようなユーザー側が扱うリソースではなく、「クラスタウェアの稼働に必要なデーモンリソースを確認」できます。
[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
--------------------------------------------------------------------------------
続いて、クラスタウェアのアラートログを確認します。
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(Cluster Syncronization Service Daemon)」プロセスが起動しないのでクラスタウェアの起動も失敗していることが分かりました。
cssdは、インターコネクトのNICを利用してノード間通信の死活監視を実施するプロセスです。そのため、cssdが起動しない根本の原因はNIC周りとなると推測できます。
[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)
NICの設定を確認したところ、インターコネクトのNICでIPアドレスを取得できていないことが分かりました。そもそもは、「インターコネクトのNICが起動していなかった」のが原因でした。NICを正しく起動したら、トラブルは解消されました。IPアドレスを取得できず、cssdプロセスの起動に失敗。結果として、クラスタウェアの起動も失敗したということになります。
「crsctl status resource -t」コマンドは、Oracle RACを構成する複数のコンポーネントの状態を一括して確認できる便利なコマンドです。クラスタ環境を構築しているならば、今後のスムーズな運用のため、本コマンドの使い方を運用マニュアルや手順書に組み込んでおくことをお勧めします。
2006年アシストに入社。2011年よりバックサポートとして、お客さま対応メンバーのフォローを行っている。サポートメンバーが利用する多種多様な検証環境を構築する活動も行う
「新機能」「廃止機能」「サポート状況」から見たユーザーにとってのOracle Database 12c
オラクルが確約した「クラウド6箇条」と「Database 12c R2」の気になるトコロ
オラクルのエリソン会長、「Oracle Database」最新版や多数のクラウドイノベーションを発表
【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
Oracle運用の基本「ログ」を理解しよう
カーソル・エラーとオブジェクトの問題切り分け
IF文のネスト地獄から抜け出せるMERGE文Copyright © ITmedia, Inc. All Rights Reserved.