【Oracle Database】Oracle RAC環境の正常起動を確認する「crsctl status resource -t」の使いこなしTips:データベースサポート最前線の現場から(11)(2/2 ページ)
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、クラスタウェア「Oracle RAC」の動作状態を確認する「crsctl status resource -t」の使いこなしTipsを紹介します。
「crsctl」コマンドがエラーになった場合に実施するコマンド
前述した通り、「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環境で「crsctl stat res -t」がエラーになる
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.
関連記事
- 「新機能」「廃止機能」「サポート状況」から見たユーザーにとってのOracle Database 12c
Oracle Database導入を実施ならびに支援するサービスプロバイダという筆者の立場から、ユーザーにとっての新バージョンの意義を考えながら、新機能や廃止された機能などを紹介します。 - オラクルが確約した「クラウド6箇条」と「Database 12c R2」の気になるトコロ
米オラクルのラリー・エリソンCTOが、同社の年次イベントで今後のクラウド事業の行方を確約する「Oracle Cloud、6つの設計目標」を掲げました。同時に発表された基幹製品「Oracle Database 12c」の次期バージョンのポイントと共に、そこにどんな狙いがあるかを振り返ります。 - オラクルのエリソン会長、「Oracle Database」最新版や多数のクラウドイノベーションを発表
米オラクルのラリー・エリソン氏は「Oracle OpenWorld 2016」の開幕基調講演を行い、同社のクラウドコンピューティングプラットフォーム全般にわたる多くのイノベーションを披露した。 - 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】 - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。 - カーソル・エラーとオブジェクトの問題切り分け
Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局) - IF文のネスト地獄から抜け出せるMERGE文