Oracle RAC 構成における ASM 設計の要諦

ASM

Oracle RAC 構成において、ストレージの効率的な管理はシステムの安定性に直結します。本記事では、Oracle RAC のコンポーネントを最適に配置するために、DATA と RECO のように ASM ディスク・グループを分離すべき理由と、その構築手順、運用の注意点をプロの視点で解説します。

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

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


導入(要約)

Oracle RAC 環境を構築する際、すべてのファイルを 1 つのディスク領域に混在させていませんか?Oracle RAC 構成のベストプラクティスは、データ用の「DATA」とリカバリ用の「RECO」に ASM ディスク・グループを分けることです。これにより、I/O パフォーマンスの最適化と、管理性の向上が実現できます。この記事では、なぜ分離が必要なのか、その具体的な実装方法を 19c 環境を例に解説します。


結論:RAC における ASM 設計の最短チェックリスト

  • DATA グループ: データファイル、制御ファイル(コピー1)、オンライン REDO ログ(コピー1)を配置。
  • RECO グループ: アーカイブログ、バックアップ、制御ファイル(コピー2)、オンライン REDO ログ(コピー2)を配置。
  • メリット: リカバリ領域の満杯による DB 停止リスクの低減と、物理的な I/O 分散。
  • 推奨: 最低でも 2 つのディスク・グループに分けることが、Oracle 公式の推奨構成です。

背景と基礎:なぜ ASM ディスク・グループを分けるのか?

用語の定義

  • ASM (Automatic Storage Management): Oracle 専用のボリューム・マネージャ兼ファイルシステム。
  • 高速リカバリ領域 (FRA): アーカイブログやバックアップを自動管理する領域。通常、RECO グループに割り当てます。

分離する理由(仕組み)

Oracle RAC では、全ノードから共有ストレージへのアクセスが発生します。データ更新(Read/Write)とアーカイブ出力(Write)のパスを分離しないと、チェックポイント発生時やバックアップ実行時に I/O 競合が発生し、レスポンス低下を招きます。また、RECO 側を大容量・低速なディスク、DATA 側を高速な SSD にするといったコスト最適化も可能になります。


手順・実装:ASM ディスク・グループの作成方法

前提条件

  • OS: Oracle Linux 7/8
  • 環境: Oracle Grid Infrastructure 19c インストール済み
  • 権限: GRID ユーザー(ASM 管理者)
  • ディスク: /dev/sdb1 (DATA用), /dev/sdc1 (RECO用) などが準備されていること

1. ASM インスタンスへの接続

# 1号機にて、環境変数を設定して接続
export ORACLE_SID=+ASM1
sqlplus / as sysasm

2. DATA および RECO ディスク・グループの作成

実機で動作する標準的な作成 SQL です。冗長性は環境に合わせて EXTERNAL / NORMAL / HIGH を選択してください。

-- DATAディスク・グループの作成(データファイル用)
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY 
DISK '/dev/oracleasm/disks/DISK1' NAME DATA_0001;

-- RECOディスク・グループの作成(リカバリ領域・アーカイブ用)
CREATE DISKGROUP RECO EXTERNAL REDUNDANCY 
DISK '/dev/oracleasm/disks/DISK2' NAME RECO_0001;

補足:EXTERNAL はストレージ側で RAID を組んでいる場合に使用します。

3. データベースでのリカバリ領域設定

DB インスタンス側で、RECO グループを高速リカバリ領域として指定します。

-- 共有パラメータファイル (SPFILE) を更新
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 100G SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '+RECO' SCOPE=BOTH;

解説:これにより、アーカイブログや RMAN バックアップが自動的に +RECO へ格納されます。


トラブルシューティング:代表的な ORA-エラー

エラーコード原因確認・対処方法
ORA-15041ディスク・グループの空き不足V$ASM_DISKGROUP で空きを確認。不要なアーカイブを削除するかディスクを追加。
ORA-15032ディスク・グループの作成失敗パス /dev/... の所有権(grid:asmadmin)とパーミッションを確認。
ORA-19809リカバリ領域の制限超えDB_RECOVERY_FILE_DEST_SIZE を拡張。物理容量だけでなく、論理制限値もチェック。

運用・監視・セキュリティ上の注意

  • リスク: RECO 領域が 100% になると、アーカイブログが書き込めず DB 全体がハング(停止)します。
  • 運用: DATA と RECO の監視閾値は分けるべきです。RECO はバックアップ運用によって増減が激しいため、より頻繁な監視が必要です。
  • 戻し方: 万が一ディスク・グループを削除する場合は DROP DISKGROUP <名> INCLUDING CONTENTS; ですが、データが全消去されるため、実行前に必ずバックアップを確認してください。

FAQ:Oracle RAC 構成に関するよくある質問

Q: DATA と RECO で物理ディスク(LUN)も分けるべきですか?

A: はい。同じ物理ディスク上のパーティション分けだけでは I/O 分散にならないため、ストレージレイヤーから物理的に分けるのが理想です。

Q: 制御ファイルや REDO ログを両方に置く(多重化)のはなぜですか?

A: 片方のディスク・グループ(または物理エンクロージャ)が故障しても、もう片方で運用を継続できるようにするためです。

Q: 19c で PDB ごとにディスク・グループを分けることはできますか?

A: 技術的には可能ですが、管理が非常に複雑になります。通常は CDB レベルで DATA/RECO を共有し、クォータ制限で制御します。


まとめ

  • Oracle RAC 構成では、DATA と RECO の分離がパフォーマンスと可用性の基本。
  • ASM ディスク・グループを分けることで、メンテナンス時の影響範囲を限定できる。
  • +RECO に高速リカバリ領域(FRA)を設定し、アーカイブログ管理を自動化する。
  • 物理 I/O の競合を避けるため、ストレージ階層からの分離を検討する。

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

[参考]
Oracle RACの記憶域の管理

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

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

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

コメント

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