【図解】Oracle RACとは?仕組み・Clusterware・ASMを徹底解説

イントロ

今回は、Oracle RAC(Oracle Real Application Clusters)の仕組みを解説します。

Oracle RACは、複数のサーバでOracle Databaseを稼働させることで、可用性の向上やスケールアウトを実現するクラスタ技術です。ただし、単に複数台のサーバを並べるだけではなく、Oracle Clusterware、Private Interconnect、Shared Storage、Oracle ASMなど、複数の仕組みが連携して動作しています。

それぞれの役割を理解すると、Oracle RACの設計だけでなく、障害発生時に「どこで問題が起きているのか」を切り分けやすくなります。本記事では、Oracle RACの全体像から主要コンポーネントまで順番に解説します。

Oracle RACとは

Oracle RAC(ラック)とは、Oracle Real Application Clustersの略です。

Oracle RACでは、複数のサーバ上でOracle Databaseインスタンスを稼働させ、それぞれのインスタンスから1つのデータベースへアクセスします。

Single Instance構成では、基本的に1つのOracle Databaseインスタンスからデータベースへアクセスします。一方、Oracle RACでは複数のインスタンスが同じデータベースへ同時にアクセスできる点が大きな特徴です。

Oracle RACでは複数のインスタンスを同時に稼働させるActive/Active型の構成が可能で、高い可用性や拡張性が求められるミッションクリティカルシステムなどで利用されています。

Oracle RACの全体構成

まずはOracle RAC全体の構成を確認します。ApplicationからDatabase Service、複数のDatabase Instance、Private Interconnect、Shared Storageまでを大きく整理すると、以下のようになります。

これらのDatabase、Instance、Service、Listener、VIPなどは、Oracle Clusterwareによって監視・管理されます。

Oracle RACは、単純に「複数のDatabase ServerからShared Storageへアクセスする仕組み」ではありません。

Oracle Clusterwareによるクラスタ管理、Private InterconnectによるInstance間通信、Cache FusionによるData Block転送、ASMによるStorage管理などが連携することで、RAC全体が成立しています。

Oracle RACの主要コンポーネント

Oracle RACは、データベース・インスタンスだけで構成されているわけではありません。Clusterware、Private Interconnect、Shared Storage、ASMなど、複数のコンポーネントが連携して動作します。

構成要素説明
Oracle Grid InfrastructureOracle RAC環境の基盤となるソフトウェアです。Oracle ClusterwareとOracle ASMなどで構成されています。
Oracle ClusterwareOracle Database、Instance、Service、Listener、VIPなどのリソースを監視・管理し、障害時の再起動やServiceの再配置などを行います。
Oracle ASMOracle Database向けのストレージ管理機能です。複数のディスクをDisk Groupとしてまとめ、Database Fileの配置、ストライピング、ミラーリング、リバランスなどを行います。
Shared Storage(共有ストレージ)Data File、Control File、Online Redo Logなどを配置するストレージです。RACを構成する複数のインスタンスからアクセスできます。
Private InterconnectRACノード間の内部通信に使用するネットワークです。Cache Fusionなどのインスタンス間通信に利用されるため、低Latencyかつ十分なBandwidthが重要です。
Public NetworkApplicationやClientからOracle Databaseへ接続するためのネットワークです。SCAN、VIP、Listenerなどもこのネットワークに関連します。
Storage NetworkDatabase ServerとShared Storageを接続するネットワークです。Fibre Channel(FC)などが利用されますが、RACでFCが必須というわけではありません。

Oracle RAC導入の目的

Oracle RACを導入する代表的な目的は、可用性の向上とスケールアウトです。

可用性の向上

Oracle RACでは、複数のOracle Databaseインスタンスが同じデータベースへアクセスしています。そのため、1つのインスタンスやサーバで障害が発生しても、正常なインスタンスでデータベースサービスを継続できます。

Active/Standby型のHA構成では、障害発生後にStandby側へ切り替える処理が必要になります。一方、Oracle RACでは他のインスタンスがすでに稼働しているため、障害ノード以外で処理を継続できる点が特徴です。

ただし、障害が発生してもすべての処理が無停止で継続できるわけではありません。障害インスタンスに接続していたSessionや実行中のTransactionは影響を受ける場合があります。

アプリケーションへの障害影響をさらに小さくするには、Service、Fast Application Notification(FAN)、Application Continuityなどの仕組みも組み合わせて設計する必要があります。

下図は障害発生時のイメージです。Database Server #1が停止しても、Server #2やServer #3が正常であれば、そちらでDatabase Serviceを継続できます。

スケールアウト

Oracle RACでは、ノードを追加することでデータベースの処理能力を拡張するスケールアウトが可能です。

Single Instance構成では、処理能力を増やす方法としてCPUやMemoryを増設するスケールアップが中心となります。サーバの拡張上限に達した場合には、より高性能なサーバへのリプレースが必要になる場合もあります。

一方、Oracle RACではRACノードを追加して、複数のDatabase Instanceへ処理を分散できます。

ただし、ノードを追加すれば性能が単純に台数分向上するわけではありません。SQL、Applicationの接続方式、Service配置、Interconnect通信量、Storage性能などによってスケーラビリティは変化します。

また、実際のノード追加では、Oracle Grid Infrastructure、Network、Storage、Serviceなどの構成変更や確認も必要です。

Oracle Clusterwareの機能

Oracle Clusterwareは、Oracle RAC環境を構成・監視・制御するためのクラスタソフトウェアです。

Oracle Clusterwareでは、Database、Instance、Service、Listener、VIPなどをResourceとして管理します。

例えば、InstanceやServiceで障害が発生すると、Oracle Clusterwareが状態を検知し、設定に応じてResourceの再起動やServiceの再配置などを行います。

イメージとしては、以下のような流れです。

Oracle Clusterwareの構成情報は、OCR(Oracle Cluster Registry)などで管理されています。

Private Interconnectとは

Oracle RACを理解するうえで重要なのが、Private Interconnectです。

Private Interconnectは、RACを構成するノード間の内部通信に使用する専用ネットワークです。

Oracle RACでは複数のDatabase Instanceが同じDatabaseへアクセスするため、各Instanceが持つBuffer Cacheの状態を連携する必要があります。そのため、Instance間では頻繁に通信が発生します。

特に、あるInstanceが保持しているData Blockを別のInstanceが必要とした場合には、Private Interconnectを使用してBlockを転送します。この仕組みがCache Fusionです。

そのため、Private InterconnectではBandwidthだけでなく、LatencyやNetwork障害への耐性も重要になります。

Cache Fusionとは

Oracle RACでは、複数のDatabase Instanceがそれぞれ独立したSGAとBuffer Cacheを持っています。

例えば、Instance #1のBuffer Cacheに必要なData Blockが存在し、Instance #2が同じBlockを必要とした場合を考えます。

このとき、必ずShared Storageから再度Blockを読み込むわけではありません。条件に応じて、Instance #1のBuffer CacheからInstance #2へPrivate Interconnect経由でBlockを直接転送します。

この仕組みをCache Fusionと呼びます。

Cache Fusionによって、複数のInstanceから同じDatabaseへアクセスしながら、Data Blockの一貫性を維持できます。

Cache Fusionの詳細については、以下の記事で解説しています。
Oracle RACの仕組みを理解しよう ~キャッシュフュージョンによるブロック転送~

Oracle Databaseのストレージ構成|File SystemとASMの違い

Oracle ASMを理解する前に、Oracle DatabaseがData FileなどをどのようにStorageへ配置するのかを整理しておきます。

Oracle Databaseの代表的なStorage構成として、File Systemを使用する構成とOracle ASMを使用する構成があります。

File Systemを使用する構成

File System構成では、Oracle DatabaseのData File、Control File、Online Redo LogなどをOSから見えるFileとして配置します。

Single Instance環境では、XFSなどのFile System上にDatabase Fileを配置する構成が利用できます。File Systemを利用するため、OS標準のFile管理や運用方法を利用しやすい点が特徴です。

Oracle Databaseでは、OSのPage CacheとOracle DatabaseのBuffer Cacheによる二重キャッシュを避けるため、環境や設定に応じてDirect I/Oが利用されます。Direct I/OはFile System自体を使わないRaw Deviceとは異なり、File Systemを利用しながらPage Cacheを迂回してI/Oする方式です。

Oracle ASMを使用する構成

ASM構成では、OSの一般的なFile SystemへDatabase Fileを配置するのではなく、Oracle ASMがBlock DeviceをASM Diskとして管理し、それらをASM Disk Groupとしてまとめます。

Database FileはASM Disk Group上に配置され、ASMがFile配置、Striping、Mirroring、Disk追加・削除時のRebalanceなどを管理します。

つまり、File System構成ではOSのFile Systemを通してDatabase Fileを管理するのに対し、ASM構成ではOracle ASMがDatabase向けのStorage管理を担当する点が大きな違いです。

項目File System構成ASM構成
Database Fileの管理OSのFile SystemOracle ASM
配置先File System上のFileASM Disk Group
I/OFile System経由。環境に応じてDirect I/Oを利用ASM経由でASM Diskへアクセス
Storage管理OSやStorage側で管理ASMがDisk Groupとして管理
StripingFile System / LVM / Storageなどの構成に依存ASMで実施可能
MirroringStorageなどの構成に依存ASMで実施可能
Disk追加・削除OS / Storage側で構成変更ASM RebalanceでDataを再配置

Oracle RACではShared Storageへのアクセスが必要

Oracle RACでは、複数のDatabase Instanceが同じDatabaseへアクセスするため、各RAC NodeからDatabase Fileへ共有アクセスできるStorage構成が必要です。

そのため、RACでFile Systemを利用する場合は、複数Nodeから安全に共有できるCluster File SystemやNFSなど、RACで利用可能な共有File Systemを選択する必要があります。通常のLocal File Systemを複数Nodeから単純に共有する構成にはできません。

一方、ASMはOracle Database向けにStorageを管理でき、RACを構成する複数のDatabase Instanceから同じASM Disk Groupを利用できます。このため、Oracle RACのStorage構成を理解するうえでASMは重要なコンポーネントです。

Oracle ASMの機能

Oracle ASM(Automatic Storage Management)は、Oracle Database向けのストレージ管理機能です。

複数のディスクをASM Disk Groupとしてまとめ、Database Fileの配置や管理を行います。

ASMを使用する環境では、Database Instanceとは別にASM Instanceが動作します。ASM InstanceはDisk GroupやASM FileなどのMetadataを管理し、Database InstanceからASM上のFileへアクセスできるようにします。

ASMの主な機能には、以下があります。

  • StripingによるI/O分散
  • Mirroringによる冗長化
  • Disk追加・削除時のRebalance
  • Database Fileの管理

Oracle ASMの構成

Oracle ASMでは、Oracle DatabaseのDatabase FileをASM Disk Group上で管理します。OSから認識されるDeviceの下にはStorage側のLUNやPhysical Diskがあり、ASMはそれらをDisk GroupとしてまとめてDatabaseから利用できるようにします。

ストライピングによるI/O分散

ASMでは、FileをAllocation Unit(AU)と呼ばれる単位で管理し、Disk Groupを構成する複数のDiskへDataを分散配置します。

これにより、I/Oを複数のDiskへ分散し、Storage Resourceを並列に利用できます。

ASMによるStripingと、Storage装置内部で行われるRAIDによるStripingは異なるLayerの機能です。そのため、両者は分けて理解する必要があります。

また、ASMを使用したからといって必ずDisk I/O性能が大幅に向上するわけではありません。実際の性能はPhysical Storage構成、RAID、Cache、I/O Patternなどにも依存します。

ミラーリングによる可用性向上

Oracle ASMでは、Dataを複数のDiskへMirroringすることで可用性を高めることができます。

ASMではFailure Groupという単位を使用して、同じDataのCopyを異なる障害範囲へ配置します。

これにより、一部のDiskや障害グループで障害が発生した場合でも、別のCopyを使用してDataへアクセスできます。

ASM Disk Groupでは、構成に応じてExternal Redundancy、Normal Redundancy、High Redundancyなどを選択できます。

ディスク追加・削除とリバランス

Oracle ASMでは、Disk GroupへDiskを追加または削除した際にRebalanceを実行できます。

Rebalanceによって、Disk Group内のDataが各Diskへ再配置されます。

これにより、Databaseを停止せずにStorage容量を拡張したり、Disk構成を変更したりできる点がASMの大きなメリットです。

Oracle RACで障害が発生するとどうなるのか

Oracle RACでは、障害の種類によって動作が異なります。

例えば、1つのDatabase Instanceが停止した場合、Oracle Clusterwareが障害を検知し、必要に応じてInstanceの再起動やServiceの再配置を行います。

一方、正常な他のInstanceは引き続きDatabaseへアクセスできるため、Database全体が必ず停止するわけではありません。

ただし、障害Instanceに接続していたSessionやTransactionは影響を受ける可能性があります。

そのため、Oracle RACによる可用性を最大限に活かすには、Database Serverだけではなく、Application Connection、Service、Listener、Network、Storageまで含めた設計が重要です。

まとめ

本記事では、Oracle RACの仕組みと主要コンポーネントについて解説しました。

  • Oracle RAC:複数のDatabase Instanceから1つのDatabaseへアクセスするクラスタ技術です。
  • 可用性:1つのInstanceやServerで障害が発生しても、正常なInstanceでDatabase Serviceを継続できます。ただし、障害Instanceに接続していたSessionやTransactionは影響を受ける可能性があります。
  • スケールアウト:RAC Nodeを追加することで処理能力を拡張できます。ただし、性能向上の程度はWorkloadやInterconnect、Storageなどにも依存します。
  • Private Interconnect:RAC Node間の内部通信に使用するNetworkで、Cache Fusionなどに利用されます。
  • Cache Fusion:Database Instance間でData Blockを転送し、複数Instance間でCacheの一貫性を維持する仕組みです。
  • Oracle Clusterware:Database、Instance、Service、Listener、VIPなどのResourceを監視・管理します。
  • Storage構成:Oracle DatabaseではFile System構成とASM構成があり、RACでは複数NodeからDatabase Fileへ共有アクセスできる構成が必要です。
  • Oracle ASM:Oracle Database向けのStorage管理機能で、Striping、Mirroring、Rebalanceなどを提供します。

Oracle RACを理解するときは、「複数台のDatabase Serverで動く」という部分だけでなく、各Instanceがどのように連携し、障害時にどのComponentがどのように動くのかまで理解することが重要です。

この全体像を押さえておくことで、RACの設計、性能問題、Interconnect障害、Instance障害などのトラブルシューティングも理解しやすくなります。

Oracle RACのCache Fusionについては、以下の記事で詳しく解説しています。
Oracle RACの仕組みを理解しよう ~キャッシュフュージョンによるブロック転送~

その他のOracle関連の記事も公開しています。
Oracle GoldenGate入門|データレプリケーションの基礎をわかりやすく解説

参考文献

Oracle Real Application Clusters関連ドキュメント
Oracle Database Documentation

実践!!高可用性システム構築 ~RAC基本編~
Oracle RAC関連資料

Oracle Grid Infrastructure関連資料
Oracle Grid Infrastructureを理解する

データベースを革新する「RAC」─論理層の仮想化が拡張性や可用性をどう高めるか | IT Leaders

だから安心!「Oracle ASM」の内部動作を理解しよう | Oracle 日本

コメント