RAC (Oracle Real Application Clusters) は Shared Disk、Active/Active 構成のクラスタ。構成するには 2 台以上のノード、アプリケーションとの通信用のパブリック、ノード間通信用のプライベート(インターコネクト)、共有ディスクが必要。RAC 上の各インスタンスは独立した SGA を持つが、データファイル、制御ファイル、SPファイルは共有される。
Oracle RAC 10g からの標準クラスタウェアは Oracle Clusterware で、ノード・サービス・コンポーネントを監視し、障害発生時にはフェイルオーバーする。Oracle Clusterware を構成する CRS スタックと呼ばれるプロセス中で、CSS (Cluster Synchronization Services) がノードの情報を管理している。インターコネクト上のハートビートで異常があれば、そのノードを切り離す。
Active/Active 構成である以上、複数インスタンスが同一のデータブロックを更新して不整合が発生することを防がなければならない。これを実施するのに RAC では GRD (Global Resource Directory) を用いる。GRD では当該ブロックに更新をかけているインスタンスの情報を持っており、そのブロックに対してさらに更新をかけようとするインスタンスは、GRD を見て当該インスタンスからデータブロックを転送する(キャッシュフュージョン)。
Fail over
tnsnames.ora にて FAIL_OVER=on を指定すると、クライアントは最初のリスナーへの接続に失敗したとき別のリスナーへの接続を試行する(クライアントサイドの接続時フェイルオーバ)。FAIOOVER_MODE 句を指定すると、データベースとのセッションが確立している段階でファイルオーバーが起こっても、SELECT 文は再開することができる(CUD はロールバックされる)。