連載
» 2017年05月02日 05時00分 公開

データベースサポート最前線の現場から(11):【Oracle Database】Oracle RAC環境の正常起動を確認する「crsctl status resource -t」の使いこなしTips (1/2)

データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、クラスタウェア「Oracle RAC」の動作状態を確認する「crsctl status resource -t」の使いこなしTipsを紹介します。

[栗原章二,株式会社アシスト]
※本連載は、アシストのデータベースサポートスペシャリストによる「Database Support Blog」より、提供社の許可の下、一部修正して転載するものです。

連載バックナンバー

 複数のサーバで1つのデータベースを構成するOracle Databaseのクラスタリング機能「Oracle RAC(Real Application Clusters)」は、クラスタウェア(Oracle Clusterware)によってデータベースやリスナーがリソース管理される仕組みとなっています。そのため、メンテナンスの際にはクラスタウェアを含めた再起動が必要となるケースがあります。

 今回は、このメンテナンス体制を的確に構築することを目的に、「crsctl」コマンドを使ってOracle RAC環境が正しく起動したことを判断するTipsを紹介します。

 本稿の対象は、Linux/UNIXシステム上で動作する「Oracle Grid Infrastructure 11gR2/12cR1」以降となります。ちなみにOracle Clusterwareは、Oracle Database 11gR2から「Oracle Grid Infrastructure」のコンポーネントの1つとなっています。

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

 Oracle RAC環境が正しく起動したかどうかは、「crsctl status resource -t」コマンドで確認します。具体的には、このコマンドを実行することで、クラスタウェアに管理されているデータベースやリスナーなどの「リソース」の起動状況を確認できます。なお、「crsctl stat res -t」と少し略すことも可能です。

crsctl status resource -t
crsctl stat res -t
(コマンドは少し略すことも可能)

 コマンドは、Oracle RACを構成するいずれかのノードで、「Oracle Grid Infrastructureのインストールユーザー名で実行します。通常は、「grid」というユーザー名でインストールされています。

正常時の結果

 正常に起動されていれば、各リソースのTarget列、State列が共に「ONLINE」の結果が返されます。ちなみに、Target列にはクラスタウェアが認識している状態(あるべき状態)、State列にはリソースの現在の状態が示されます。

[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
異常時の出力例

 上記の例では、データベース名「ora.v1212.db」が「OFFLINE」となっています。データベースに問題が発生しており、Oracle RACも正しく起動できていないことを示しています。データベースにどんな問題が発生したのかについては、アラートログを確認して状況を把握します。

 今回はテストのために、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} */ /* データベースの起動が完了 */
異常時のアラートログ内容(抜粋)

 なお今回のテストでは単純なデータベースの異常終了を模したことから自動復旧されましたが、エラーの内容によっては、死活監視機能による再起動でも正しく起動されない可能性があります。バックナンバー『忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン』と『Oracleトラブル解決の基礎 「ログ」を理解して「初動対応」を早くする』を参照いただき、しかるべき対処ができるように「ただしいログ採取の体制」はあらかじめ整えておくようにしてください。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。