Oracle RAC(Real Application Clusters) とは?仕組みとメリットを初心者向けに解説

ASM

「データベースが止まらない」仕組みとして Oracle RAC に興味をお持ちですか?RAC は複数サーバーで単一DBを稼働させ、可用性と拡張性を高める技術です。この記事では、RAC の基本的な仕組み、メリット、そして自分が接続している環境が RAC かどうかをSQLで簡単に確認する方法までを、初心者向けに解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


この記事でわかること: Oracle RAC 環境かを確認する最短手順

今接続しているデータベースが Oracle RAC 構成かを知りたい場合、SQL*Plus で以下のクエリを実行します。VALUETRUE であれば RAC です。

-- RACオプションが有効かを確認する
SELECT VALUE,INST_ID
FROM GV$OPTION
WHERE PARAMETER = 'Real Application Clusters'
ORDER BY INST_ID;
SQL> SELECT VALUE,INST_ID
2 FROM GV$OPTION
3 WHERE PARAMETER = 'Real Application Clusters'
4 ORDER BY INST_ID;

VALUE INST_ID
-------------------- ----------
TRUE 1
TRUE 2

Oracle RAC (Real Application Clusters) とは?

Oracle RAC は、”Real Application Clusters” の略で、オラクルのデータベース高可用性(HA)およびスケーラビリティ(拡張性)を実現するための、Oracle Database Enterprise Edition (EE) のオプション機能です。

シングルインスタンスとの違い

通常のデータベース(シングルインスタンス)は、「1台のサーバー」が「1つのデータベース(ストレージ上のファイル群)」を管理します。もしそのサーバーが障害で停止すれば、データベースも完全に停止してしまいます。

alt: シングルインスタンス構成(1台のサーバーが1つのDBを管理)と、Oracle RAC 構成(複数サーバーが1つの共有DBを管理)の比較図

一方、RAC は「複数台のサーバー(ノードと呼びます)」が、共有ストレージ上にある「1つのデータベース」を共同で管理します。

【シングルインスタンス構成】
  [ アプリケーション ]
      |
  [ サーバー (インスタンス) ]
      |
  [ DBストレージ ]
 
 
【Oracle RAC 構成】
  [ アプリケーション ]
      |
    (SCAN IP / VIP)
      |
  +-------+-------+
  |               |
 [ サーバー1 ]   [ サーバー2 ]  ... [ サーバーN ]
 (インスタンス1) (インスタンス2)   (インスタンスN)
  |    (インターコネクト)    |
  +-----------+-----------+
        |
   [ 共有DBストレージ (ASMなど) ]

もし RAC 構成ノードの1台が停止しても、他のノードが即座に処理を引き継ぐため、アプリケーションからの接続は(瞬断はするものの)継続できるのが最大の特徴です。

RAC を構成する主要コンポーネント

RAC は、Oracle Database ソフトウェアだけでなく、以下の重要なコンポーネントで成り立っています。

  • Oracle Clusterware (Grid Infrastructure):サーバー群を1つの「クラスタ」として束ねる基盤ソフトウェアです。ノード間の死活監視、仮想IP (VIP) の管理、SCAN (Single Client Access Name) による接続振り分けなど、RAC の頭脳とも言える部分を担います。
  • 共有ストレージ:全てのノードから読み書き可能なストレージ領域です。通常、Oracle のストレージ管理機能である ASM (Automatic Storage Management) が使われます。
  • インターコネクト (Interconnect):ノード間でのデータ転送や、状態の同期(ロック管理)に使われる、専用の高速プライベートネットワークです。この通信速度が RAC の性能を大きく左右します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


SQL*Plus で RAC の状態を確認する

自分が接続しているデータベースが RAC なのか、現在どのノード(インスタンス)で稼働しているのかを確認する方法は、DBAにとっても開発者にとっても重要です。

前提:

  • SELECT ON V_$INSTANCESELECT ON V_$OPTIONSELECT ON GV_$INSTANCE などの権限を持つユーザー(通常、CONNECT ロールや SELECT_CATALOG_ROLE を持つユーザー、または DBA)で接続します。

[参考]

1. RAC が有効か確認する (RAC 確認)

最も簡単な確認方法です。V$OPTION ビューで ‘Real Application Clusters’ オプションが TRUE になっているかを確認します。

-- RACオプションが有効かを確認する
SELECT VALUE,INST_ID
FROM GV$OPTION
WHERE PARAMETER = 'Real Application Clusters'
ORDER BY INST_ID;
SQL> SELECT VALUE,INST_ID
2 FROM GV$OPTION
3 WHERE PARAMETER = 'Real Application Clusters'
4 ORDER BY INST_ID;

VALUE INST_ID
-------------------- ----------
TRUE 1
TRUE 2

実行結果の補足:

VALUE 列に TRUE と表示されれば、そのデータベースは RAC として構成・運用されています。FALSE ならシングルインスタンスです。

2. クラスタ内の全インスタンスの状態を確認する

GV$ ビュー(Global V$)は、RAC クラスタ内の 全インスタンス の情報をまとめて表示します。

-- 全インスタンスのID、ホスト名、状態を確認する
SELECT INST_ID,INSTANCE_NAME,STATUS
FROM GV$INSTANCE
ORDER BY INST_ID;
SQL> SELECT INST_ID,INSTANCE_NAME,STATUS
2 FROM GV$INSTANCE
3 ORDER BY INST_ID;

INST_ID INSTANCE_NAME STATUS
---------- -------------------- --------------------
1 v19rac1 OPEN
2 v19rac2 OPEN

実行結果の補足:

  • INST_ID: インスタンス番号です(通常 1, 2, 3… と連番)。
  • STATUS: OPEN であれば正常に稼働中です。
  • このクエリで複数行が返ってくれば、RAC 環境であることの強い証拠になります。シングルインスタンス環境では1行だけが返ります。

3. 自分が今接続しているインスタンスを確認する

RAC 環境では、自分が今どのノードに接続しているかを知ることも重要です。

-- 現在のインスタンス名とホスト名を確認
SELECT INSTANCE_NAME,
       HOST_NAME
FROM V$INSTANCE;
-- (GV$ ではなく V$ を使うのがポイント)
SQL> SELECT INSTANCE_NAME,
2 HOST_NAME
3 FROM V$INSTANCE;

INSTANCE_NAME HOST_NAME
-------------------- --------------------
v19rac1 v19rac1

実行結果の補足:

V$ ビューは、自分が今接続しているインスタンスの情報のみを表示します。ロードバランサ経由で接続した場合、実行するたびに接続先インスタンスが変わる(INSTANCE_NAME が変わる)可能性があります。


トラブルシューティング: RAC への接続

RAC 特有の接続トラブルとして、SCAN リスナーやノードリスナーへの接続失敗があります。開発者が ORA-12541ORA-12514 エラーに遭遇した場合、以下の可能性があります。

ORA-エラー例原因の推測確認・対処法(主にDBA向け)
ORA-12541: TNS:no listenerSCAN リスナー、または VIP (仮想IP) が停止している。(Gridユーザーで)lsnrctl status LISTENER_SCAN<n>srvctl status scan_listener で状態を確認する。
ORA-12514: TNS:listener does not currently know of serviceサービスがリスナーに登録されていない。またはインスタンスが停止中。lsnrctl service でサービス登録状態を確認する。GV$INSTANCE で全インスタンスの STATUS を確認する。
ORA-12545: Connect failed because target host...クライアント側の tnsnames.ora の記述ミス、または DNS が SCAN 名を解決できない。nslookup <scan-name> で名前解決できるか確認する。tnsnames.oraHOSTSERVICE_NAME を見直す。

運用上のメリットと注意点

メリット (高可用性と拡張性)

  • 高可用性 (HA):1台のノード(サーバー)がOS障害やハードウェア故障で停止しても、他のノードが即座に処理を引き継ぎます(フェイルオーバー)。これにより、データベースサービス全体が停止することを防ぎます。
  • 拡張性 (Scalability):処理能力が不足してきた場合、サーバー(ノード)を追加する「スケールアウト」によって、システム全体の性能をリニアに(理論上は)向上させることができます。

デメリットと注意点 (複雑さとコスト)

  • ライセンスコスト:Oracle RAC は有償のオプション機能です。Enterprise Edition (EE) に加えて、RAC オプションのライセンスが必要となり、一般的に高額になります。
  • 構築・運用の複雑さ:シングルインスタンスに比べ、Clusterware、共有ストレージ、Interconnect など、管理すべきコンポーネントが格段に増えます。障害時の切り分けも難易度が上がります。
  • パフォーマンス問題:Interconnect を経由するノード間の同期処理(キャッシュフュージョン)がボトルネックとなる場合があります。特定のデータブロックにアクセスが集中するようなアプリケーション(例: 逐次的な採番処理など)は、RAC 環境でかえって性能が劣化することもあり、設計上の考慮が必要です。

Oracle RAC に関する FAQ

Q. RAC と Data Guard はどう違いますか?

A. どちらも高可用性技術ですが、目的が異なります。RAC はノード障害から「瞬時」に復旧する「サーバー単位の冗長化」(アクティブ・アクティブ)です。Data Guard はデータベース全体の複製(スタンバイDB)を遠隔地(別サイト)に作成する「災害対策」(DR)や「DB単位の冗長化」(アクティブ・スタンバイ)です。この2つは併用されることも多いです。

Q. RAC を使うのに Standard Edition 2 (SE2) ではダメですか?

A. はい、Oracle Database 19c 時点では、RAC は Enterprise Edition (EE) の有償オプションです。SE2 では「Standard Edition High Availability (SEHA)」という機能が 18c から提供されていましたが、これは RAC とは異なり、クラスタ内でアクティブなインスタンスは1つだけの構成(アクティブ・パッシブ)でした。

Q. 接続先のインスタンスを固定したい場合はどうすればよいですか?

A. 推奨されませんが、クライアント側の tnsnames.ora の接続文字列で、SCAN名 (SERVICE_NAME) ではなく、特定のノードの VIP と INSTANCE_NAME を指定することで、接続先インスタンスを固定(ロードバランスを無効に)できます。トラブルシューティング時などに使われることがあります。


まとめ

Oracle RAC は、データベースの「止まらない」運用を実現する強力なソリューションです。

  • RAC は複数ノードで単一の共有データベースを管理する技術です。
  • 主な目的は「高可用性(HA)」と「拡張性(スケールアウト)」です。
  • Clusterware, 共有ストレージ (ASM), Interconnect が主要コンポーネントです。
  • RAC 環境かは V$OPTIONGV$INSTANCE ビューで SQL で確認できます。
  • Enterprise Edition の有償オプションであり、構築・運用の難易度は高いですが、ミッションクリティカルなシステムで広く採用されています。

本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

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