OracleでREDOログを冗長化する方法とその設計思想・実務運用のベストプラクティス

Redo/アーカイブログ

REDOログはOracleデータベースの生命線とも言えるファイル群です。
このREDOログが1ファイルでも破損すると、クラッシュリカバリが不可能になり、データベースが起動できない致命的事態に陥ります。

本記事では、単なる構成手順にとどまらず、なぜ冗長化が必要なのか、どこに配置すべきか、どんな障害に備えるべきかといった運用設計レベルまで踏み込んで、OracleのREDOログ冗長化を徹底解説します。

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

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


✅ REDOログ冗長化とは何か?なぜ必要か?

Oracleでは、1つのロググループ(GROUP)に対し、複数のログメンバー(MEMBER)を構成することで、ミラーリングによる冗長性を確保できます。

✅ テキスト図:冗長構成のイメージ

┌──────────────┐
│ GROUP 1 │
│ ┌──────────┐ │
│ │ redo01a.log │ ← /u01/oradata
│ │ redo01b.log │ ← /u02/redo
│ └──────────┘ │
└──────────────┘

この構成により、片方のログファイルが破損してももう一方でトランザクション記録を維持できます。


🔥 冗長化がなぜ必要か?3つの観点で解説

観点説明
可用性REDOログ破損時でもDBが停止せず、業務継続可能。システムの安定稼働を保証。
リカバリ耐性クラッシュ後の自動リカバリ(インスタンスリカバリ)が成功する確率が上がる。
ストレージ障害対策ディスク障害やパス不良に備え、別ディスクに配置することで保護が強化される。

🔍 現在のREDOログ構成を確認する方法

SELECT GROUP#, MEMBER FROM V$LOGFILE ORDER BY GROUP#;

出力例:

GROUP#  MEMBER
------- ---------------------------------------------
1 /u01/app/oracle/oradata/ORCL/redo01.log
2 /u01/app/oracle/oradata/ORCL/redo02.log
3 /u01/app/oracle/oradata/ORCL/redo03.log

このように、1グループ1ファイルしかない場合は、冗長化されていません。


🛠 REDOログを冗長化する構成手順

Step 1:冗長ファイル用ディレクトリを別マウントポイントに準備

例:

  • 既存 → /u01/app/oracle/oradata/ORCL/redo01.log
  • ミラー → /u02/oracle/redo/redo01_mirror.log

別ディスク、別マウントポイントが基本です。同じディスクだと同時障害リスクがあるため意味がありません。


Step 2:ALTER DATABASEでメンバー追加

ALTER DATABASE ADD LOGFILE MEMBER '/u02/oracle/redo/redo01_mirror.log' TO GROUP 1;
ALTER DATABASE ADD LOGFILE MEMBER '/u02/oracle/redo/redo02_mirror.log' TO GROUP 2;
ALTER DATABASE ADD LOGFILE MEMBER '/u02/oracle/redo/redo03_mirror.log' TO GROUP 3;

Step 3:構成が反映されたか確認

SELECT GROUP#, MEMBER FROM V$LOGFILE ORDER BY GROUP#;
GROUP#  MEMBER
------- ---------------------------------------------
1 /u01/app/oracle/oradata/ORCL/redo01.log
1 /u02/oracle/redo/redo01_mirror.log
...

🧠 プロ運用者向けTips:ファイル名とパスのルール

  • 冗長構成のファイル名は「グループ番号」や「_mirror」を入れると後から分かりやすい
  • LVMなどでパーティションを分けている場合、/redo専用パーティションを割り当てるのも有効

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

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


🛡 トラブル対応:片方のメンバーが壊れたら?

Oracleは正常なメンバーが1つでもあれば処理を継続し、アラートログに以下のようなエラーを出力します。

ORA-00313: open failed for members of log group 1

障害に気づかないとロググループ全体が壊れるリスクもあるため、定期的なV$LOGFILEチェックや監視が重要です。


🗑 冗長メンバーの削除(入れ替えなどで不要になった場合)

ALTER DATABASE DROP LOGFILE MEMBER '/u02/oracle/redo/redo01_mirror.log';

🔸ただし、そのグループに少なくとも1つの正常なメンバーが残っている必要があります。


⚠️ よくある誤解・注意点まとめ

誤解 or ミス実際の挙動・注意点
「ミラーだから同じディスクでOK」→ NG。障害時に同時に壊れたら意味がない
「DROP MEMBERしてもすぐ反映される」→ 実は物理ファイルは手動で削除が必要
「冗長化はアーカイブログに関係ない」→ 関係ある。ロググループ破損時はアーカイブ不能になることも

🏁 実務でのおすすめ構成例

環境グループ数メンバー数/グループ配置戦略
単一構成32/u01/oradata + /u02/redo
RAC構成ノード数×22各ノードにローカル+共有ディスク配置
高可用性構成43(冗長性強化)/u01, /u02, /u03に分散

✅ まとめ

項目内容
冗長化方法ALTER DATABASE ADD LOGFILE MEMBERでメンバー追加
推奨配置別ディスク、別マウントポイントに配置するのが鉄則
可用性の効果ログ破損時の障害回避、クラッシュリカバリの成功率向上
削除時の注意点GROUPに1つ以上残す、DROP後にOSレベルでファイル削除も必要
定期確認項目V$LOGFILEのメンバー数、ALERT.LOGのREDO関連エラーの有無


[参考]
9 REDOログの管理

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

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

コメント

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