前述した通り、「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年よりバックサポートとして、お客さま対応メンバーのフォローを行っている。サポートメンバーが利用する多種多様な検証環境を構築する活動も行う
Copyright © ITmedia, Inc. All Rights Reserved.