Oracle RACの基盤ソフトウェアはGrid Infrastructure?Clusterware・ASM・各ノードのインスタンス管理を整理

Oracle

Oracle Real Application Clusters(Oracle RAC)を学んでいると、「各ノードのOracleインスタンスを管理し、クラスタ全体を制御する基盤ソフトウェアは何か」という点で、Oracle Grid Infrastructure、Oracle Clusterware、Oracle ASMの関係が分かりにくくなることがあります。

整理すると、Oracle RAC環境のクラスタ基盤として導入されるのがOracle Grid Infrastructureであり、その中にOracle ClusterwareとOracle ASMが含まれます。そして、ノードやネットワーク、データベース、インスタンス、リスナー、サービスなどのクラスタリソースを監視・制御する中心的な役割を担うのがOracle Clusterwareです。

したがって「RAC環境の基盤ソフトウェアはOracle Grid Infrastructure」という理解は概ね正しいものの、より正確には「Grid Infrastructureという基盤の中で、Clusterwareがクラスタ制御を、ASMが共有ストレージ管理を担当する」と整理すると理解しやすくなります。

Oracle Grid Infrastructureとは何か

Oracle Grid Infrastructureは、Oracle Databaseのクラスタ環境を支えるための基盤ソフトウェア群です。Oracle RACを構築するときには、通常Oracle Databaseソフトウェアとは別にGrid Infrastructureをインストールします。

Grid Infrastructureには大きく分けて、クラスタを管理するOracle Clusterwareと、Oracle Database向けのストレージを管理するOracle Automatic Storage Management(Oracle ASM)が含まれます。

構成要素 主な役割
Oracle Grid Infrastructure RACやクラスタ環境を支える基盤ソフトウェア全体
Oracle Clusterware ノード、データベース、インスタンス、サービスなどのクラスタリソースを監視・制御
Oracle ASM Oracle Databaseで利用する共有ストレージを管理

Grid Infrastructureは製品・基盤全体の名称であり、クラスタ制御の実働部分を担うのがOracle Clusterwareです。

Oracle RACでは各ノードにインスタンスが存在する

Oracle RACでは、複数のサーバー、つまり複数ノードから同じOracle Databaseへアクセスします。一般的には各ノード上でそれぞれOracleインスタンスが稼働し、複数のインスタンスが同一データベースを共有します。

例えば2ノードRACであれば、概念的には次のような構成になります。

ノード1
  └─ Oracleインスタンス1

ノード2
  └─ Oracleインスタンス2

        ↓
  同一のOracle Database
        ↓
    共有ストレージ

単一インスタンス構成と違い、RACでは「どのノードが稼働しているか」「どのインスタンスが正常か」「障害時にどのリソースを再起動するか」といったクラスタ全体の管理が必要です。そこでOracle Clusterwareが重要になります。

各ノードのインスタンス管理を担うのはOracle Clusterware

Oracle Clusterwareは、RAC環境でOracle Databaseやインスタンスなどをクラスタリソースとして認識し、状態を監視します。必要に応じて起動、停止、再起動などを制御します。

例えばあるノード上のRACインスタンスが停止した場合、Clusterwareはその状態を検知し、構成やポリシーに従ってリソースを再起動するなどの処理を行います。

そのため「各ノードのインスタンスを管理するソフトウェアは何か」と聞かれた場合、厳密にはOracle Grid Infrastructureに含まれるOracle Clusterwareと答えるとより正確です。

Grid InfrastructureとClusterwareをどう区別すればよい?

この2つは包含関係で考えると分かりやすくなります。Oracle Grid Infrastructureという大きな枠組みの中にOracle ClusterwareとOracle ASMがあります。

Oracle Grid Infrastructure
├─ Oracle Clusterware
│   ├─ ノード管理
│   ├─ インスタンス管理
│   ├─ データベース管理
│   ├─ リスナー管理
│   └─ サービス管理
└─ Oracle ASM
    └─ 共有ストレージ管理

したがって、「RACの基盤ソフトウェアは何か」という質問ならGrid Infrastructure、「クラスタリソースの監視・制御を担当するものは何か」という質問ならClusterwareという切り分けができます。

Oracle ASMはクラスタ制御ではなくストレージ管理を担当する

Grid Infrastructureに含まれるもう一つの重要な構成要素がOracle ASMです。ASMはAutomatic Storage Managementの略で、Oracle Databaseが使用するストレージを管理します。

RACでは複数ノードから同じデータベースファイルへアクセスするため、共有ストレージが重要になります。ASMを利用すると、複数のディスクをディスクグループとしてまとめ、Oracle Databaseから利用できます。

ただしASMは、RACインスタンスの死活監視やノード障害時のクラスタ制御を主目的とするものではありません。その役割はClusterwareです。Clusterwareはクラスタ制御、ASMはストレージ管理と覚えると整理しやすくなります。

RACでGrid Infrastructureが必要な理由

単純に複数台のサーバーへOracle Databaseをインストールしただけでは、RACにはなりません。複数ノードを一つのクラスタとして認識し、相互監視しながらデータベースやインスタンスを適切に管理する仕組みが必要です。

Grid Infrastructureは、このクラスタ運用を支えるための基盤を提供します。ノードの参加状態やクラスタリソースの状態を管理し、Oracle RACが高可用性を実現するための土台になります。

つまり、Oracle Databaseソフトウェアが「データベースそのものを動かす」のに対し、Grid Infrastructureは「複数ノードを協調して動かすための基盤」と考えると分かりやすくなります。

Oracle Databaseソフトウェアとの違い

Oracle RAC環境では、Grid InfrastructureとOracle Databaseソフトウェアを混同しないことも重要です。Grid InfrastructureがクラスタやASMを担当する一方、実際のSQL処理やデータベースインスタンスそのものはOracle Databaseソフトウェアによって提供されます。

ソフトウェア 主な役割
Oracle Grid Infrastructure クラスタ・共有ストレージの基盤
Oracle Clusterware クラスタリソースの監視・制御
Oracle ASM データベース用ストレージ管理
Oracle Database SQL処理、データ管理、各RACインスタンスの実体

例えばSQL文を解析してSELECTやUPDATEを実行するのはOracle Database側です。ClusterwareがSQLを実行するわけではありません。

Clusterwareはデータベース以外のリソースも管理する

Oracle Clusterwareが管理する対象は、RACインスタンスだけではありません。データベース、サービス、リスナー、SCAN関連リソース、VIPなど、RAC運用に必要な複数のリソースを管理します。

そのため「Clusterware=インスタンスを起動するだけの仕組み」と考えると役割を狭く捉えすぎています。実際にはクラスタ全体の可用性を支えるリソース管理基盤です。

各リソースには依存関係があるため、「あるリソースが利用可能になってから別のリソースを起動する」といった制御もクラスタ管理では重要になります。

CRSという言葉は何を意味する?

Oracle RACの資料やコマンドを調べると、CRS という言葉が頻繁に登場します。CRSはCluster Ready Servicesに由来する名称で、Oracle Clusterware関連のサービスやコマンド名などに現在も使われています。

例えばクラスタリソースの状態確認では、次のようなコマンドを見かけます。

crsctl status resource -t

このコマンドでは、Clusterwareが管理しているクラスタリソースの状態を確認できます。RACを運用するうえでは、Grid Infrastructureという製品名だけでなく、CRSやClusterwareという用語にも慣れておくと理解しやすくなります。

srvctlは何をするコマンド?

Oracle RACでは srvctl も頻繁に利用されます。これはServer Control Utilityで、Oracle Database、インスタンス、サービス、リスナーなどのOracleリソースを管理するときに利用します。

例えばデータベースの状態確認では、環境やバージョンに応じた形で srvctl status database などのコマンドを使用します。

一方、crsctl はClusterwareそのものやクラスタリソースを管理する低レベル寄りの管理コマンドです。試験や実務では、Oracle Database関連リソースの管理にはsrvctl、Clusterware全般の管理にはcrsctlという大まかな役割の違いを理解しておくと便利です。

ノード障害時には何が起こる?

RACの価値を理解するには、ノード障害を考えると分かりやすくなります。例えば2ノード構成で、ノード1が停止したとします。

Clusterwareはクラスタ内の状態を監視しているため、ノード障害を認識します。残っているノード上のインスタンスは引き続き共有データベースへアクセスでき、構成されたサービスも利用可能なインスタンス側へ提供されるよう管理されます。

ただし「RACならどんな障害でもユーザーが一切気付かない」という意味ではありません。既存セッションの切断、アプリケーション側の再接続、サービス設定なども関係するため、高可用性はRACだけで完成するものではありません。

Oracle RACとActive-Standbyクラスタの違い

RACを理解するときは、一般的なActive-Standby構成との違いも重要です。Active-Standbyでは通常、片方のノードが稼働し、もう片方が待機する構成があります。

一方RACでは、複数ノード上の複数インスタンスが同一データベースへ同時にアクセスできます。そのため、複数インスタンス間でデータブロックの整合性を保つ仕組みも必要になります。

Grid Infrastructureはクラスタ基盤を担当しますが、RAC特有のインスタンス間キャッシュ連携などはOracle RACおよびOracle Database側の仕組みとして理解する必要があります。

Grid InfrastructureをインストールするORACLE_HOMEはDatabaseとは別

Oracle環境では、Grid InfrastructureをインストールするGrid homeと、Oracle DatabaseソフトウェアをインストールするOracle homeは通常分けて管理されます。

そのため、同じOracle製品群でも「Grid Infrastructure側のバイナリ」と「Database側のバイナリ」が別に存在します。パッチ適用やアップグレードでも、どちらを対象にしているのかを区別する必要があります。

RACの学習で「Grid InfrastructureとOracle Databaseは同じソフトなのか」と混乱した場合は、クラスタ基盤とデータベース本体を別レイヤーとして考えると整理できます。

試験問題ではどの表現を選べばよい?

Oracle関連資格の問題では、質問文がどの粒度で聞いているかを見ることが重要です。

例えば「Oracle RACのクラスタ基盤を提供するソフトウェアは何か」であれば、Oracle Grid Infrastructureが適切です。一方、「ノードおよびクラスタリソースを監視・制御するコンポーネントは何か」であればOracle Clusterwareがより直接的な答えになります。

質問の内容 対応する用語
RACを支える基盤ソフトウェア全体 Oracle Grid Infrastructure
クラスタ制御・リソース管理 Oracle Clusterware
共有ストレージ管理 Oracle ASM
SQL・データベース処理 Oracle Database

「Grid InfrastructureかClusterwareか」で迷った場合は、全体を聞いているのか、クラスタ制御機能そのものを聞いているのかを確認しましょう。

「各ノードのインスタンスをGrid Infrastructureが動かしている」と言ってよい?

入門的な会話では、「Grid InfrastructureがRACインスタンスを管理する」という表現で問題ない場面もあります。実際、Grid Infrastructureとして導入されるClusterwareがDatabaseやInstanceリソースを管理するためです。

ただし技術的に正確に説明するなら、「Oracle Grid Infrastructureに含まれるOracle Clusterwareが、RACインスタンスをクラスタリソースとして管理する」と表現すると役割が明確になります。

また、OracleインスタンスそのものはOracle Databaseソフトウェアのプロセスとメモリ構造であり、ClusterwareそのものがOracleインスタンスの実体になるわけではありません。

初心者向けに一枚で整理すると

Oracle RACの構成を単純化すると、次のように整理できます。

Oracle RAC環境

Oracle Grid Infrastructure
├─ Oracle Clusterware
│   ├─ ノード監視
│   ├─ RACインスタンス管理
│   ├─ Database管理
│   ├─ Service管理
│   ├─ Listener管理
│   └─ VIP・SCANなどの管理
│
└─ Oracle ASM
    └─ 共有ストレージ管理

Oracle Database Software
├─ ノード1:RACインスタンス1
└─ ノード2:RACインスタンス2

        ↓
   同一Database

この階層を覚えておくと、Grid Infrastructure、Clusterware、ASM、RAC、Databaseの関係を混同しにくくなります。

まとめ|RACの基盤はGrid Infrastructure、クラスタ制御の中心はClusterware

Oracle RAC環境では、複数ノードをクラスタとして管理するための基盤としてOracle Grid Infrastructureが利用されます。Grid InfrastructureにはOracle ClusterwareとOracle ASMが含まれます。

各ノードの状態やOracle Database、RACインスタンス、サービス、リスナーなどをクラスタリソースとして監視・制御する中心的な役割を担うのはOracle Clusterwareです。一方、ASMはOracle Database向けの共有ストレージ管理を担当します。

最も分かりやすく覚えるなら「Grid Infrastructure=RACの基盤全体」「Clusterware=クラスタ制御」「ASM=ストレージ管理」と整理するとよいでしょう。

したがって、RAC環境の基盤ソフトウェアを尋ねる文脈ではOracle Grid Infrastructureという理解でよく、さらに厳密に「各ノードのインスタンスやクラスタリソースを管理しているもの」を答える場合は、Grid Infrastructureに含まれるOracle Clusterwareと説明するのが正確です。

コメント

タイトルとURLをコピーしました