Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

Oracleリドログとは何か、なぜ重要なのか

Oracleリドログはデータベースに対するすべての変更履歴を記録します。ユーザーがINSERTUPDATEDELETEを実行した際、Oracleは変更内容を直接ディスクに書き込まず、まずログに記録した後、リドログファイルへ書き出します。

インスタンスがクラッシュした場合、次回起動時にOracleは記録されたログ変更を再実行し、コミット済みのトランザクションをすべて復旧します。これはACID準拠における持続性の基盤となる機構です。

Oracleリドログの仕組み

Oracleは2種類のリドログを管理します。

  • オンラインリドログ — Oracleが循環的に書き込みを行うアクティブなファイル
  • アーカイブリドログ — 書き込み完了したオンラインログのオフライン複製ファイル、長期的な復旧に使用

詳細に入る前に、本ガイドで頻出する4つの用語を解説します。

  • ロググループ:同一内容のリドログファイルを1つ以上まとめた単位。Oracleはグループ内のすべてのメンバーに同時に書き込みを実施します。
  • ログメンバー:グループ内の個々の物理ファイルを指します。
  • ログスイッチ:現在のロググループへの書き込みが完了し、次の空きグループへ切り替わるタイミングのこと。
  • SCN(システム変更番号):すべてのトランザクションに割り当てられる一意の単調増加番号。復旧処理時にデータの整合性を保つために使用されます。

Oracleリドログファイルの構造と多重化

リドログファイルは事前に確保された固定サイズのディスクファイルです。データファイルと異なり循環利用される仕組みで、最後のグループが満杯になると最初のグループへ戻って上書きします。ただし、対象グループのアーカイブ完了、かつ変更内容がデータファイルにチェックポイント反映された後に限り上書きが実行されます。

Oracleはリドログファイルを「グループ」と「メンバー」の2階層構造で管理します。グループは1つ以上の同一メンバーファイルで構成される論理単位で、ログライタープロセス(LGWR)は現在のグループ内のすべてのメンバーに同一のリドエントリを同時書き込みします。

多重化(マルチプレキシング)とは同一グループの複数メンバーを別々の物理ディスクに配置する構成を指します。一方のディスク障害でメンバーファイルが破損しても、グループ内に読み取り可能なメンバーが1つでも残っていればOracleは稼働を継続できます。多重化を実施していない場合、単一のリドログファイル損失だけでデータベース全体が停止する恐れがあります。

ログファイルのステータス解説

V$LOGビューを照会すると、各グループは4種類のステータスのいずれかを表示します。

ステータス 意味
CURRENT LGWRが現在書き込み中のグループ
ACTIVE ログスイッチは発生済みだが、変更内容がデータファイルに完全にチェックポイント反映されていない状態。インスタンス復旧に必要なログ
INACTIVE 変更内容のチェックポイント反映完了。このグループは再利用可能
UNUSED 新規追加されたばかりで一度も書き込みが行われていないグループ

リドログ構成の確認方法

グループ、メンバー、ファイルサイズ、現在のステータスを確認するクエリは以下の通りです。

sql
SELECT 
    a.GROUP#, 
    a.STATUS, 
    b.MEMBER, 
    a.BYTES/1024/1024 AS SIZE_MB
FROM V$LOG a 
JOIN V$LOGFILE b ON a.GROUP# = b.GROUP#
ORDER BY a.GROUP#;

リドロググループ・メンバーの追加・削除手順

新規グループ追加(多重化のため2つのメンバーを別ディスクに配置):

sql
ALTER DATABASE ADD LOGFILE GROUP 4
('/u01/app/oracle/oradata/REDO/log4a.rdo',
 '/u02/app/oracle/oradata/REDO/log4b.rdo') SIZE 512M;

既存グループへメンバー追加:

sql
ALTER DATABASE ADD LOGFILE MEMBER
'/u02/app/oracle/oradata/REDO/log1b.rdo' TO GROUP 1;

グループ削除:

sql
ALTER DATABASE DROP LOGFILE GROUP 4;
ヒント:CURRENTまたはACTIVEステータスのグループは絶対に削除しないでください。現在のグループを削除したい場合は事前にALTER SYSTEM SWITCH LOGFILEを実行し、ステータスがINACTIVEに変わるのを待ってから削除します。

Oracleリドログファイルの配置場所確認と管理方法

リドログの配置先を決定する際は「パフォーマンス」と「冗長性」の2点を最優先に考慮します。

Oracle Managed Files(OMF)を使用している場合、DB_CREATE_ONLINE_LOG_DEST_nパラメータに基づきOracleがファイル名と配置先を自動管理します。いずれの配置方法でも共通の鉄則が存在します。同一グループのメンバーを同じ物理ディスクに配置してはならないという点です。同一ボリュームに両方のメンバーを置くと、ディスク障害発生時に多重化による保護効果が失われます。必ずメンバーを別マウントポイント、ストレージコントローラー、またはASMディスクグループに分散配置してください。

リドログファイル配置先の確認方法

V$LOGFILEビューを照会することで各メンバーの保存先、ファイルシステムかASMかを確認できます。

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

リドログファイルの移行手順

高速ストレージへログを移行する、または配置不備を修正する際に本手順を使用します。以下のリネーム方式は全Oracleバージョンで対応可能です。

1. データベースを正常シャットダウンし、すべてのリドデータをディスクにフラッシュします。

sql
SHUTDOWN IMMEDIATE;

2. OSレベルでファイルを新規配置先へコピーします(Linuxはcp、Windowsはcopyコマンド)。Oracle側でファイル移動は実施できないため、この手順は手動で実行する必要があります。

3. データベースをマウント状態で起動します。

sql
STARTUP MOUNT;

4. 制御ファイル内のパスを新しい配置先に更新します。

sql
ALTER DATABASE RENAME FILE '/old_disk/log1a.rdo' TO '/new_disk/log1a.rdo';
ALTER DATABASE RENAME FILE '/old_disk/log1b.rdo' TO '/new_disk/log1b.rdo';

5. データベースをオープンする前に、パスが正しく更新されたか確認します。

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

6. データベースをオープンします。

sql
ALTER DATABASE OPEN;
ヒント:手順4のSQL実行前にすべてのパスを二重確認してください。SQL内のパスが手順2でコピーしたファイルの場所と不一致すると、手順6でデータベースがオープン失敗します。

リドログのサイズとログスイッチ頻度を完全解説

ログサイズとスイッチ頻度は密接に連携しています。リドログの容量によって、次のグループへ切り替えるまでに記録可能な変更データ量が決まります。ログスイッチが発生するたびにチェックポイントが起動し、データライタープロセス(DBWn)がメモリ上の変更データをディスクへ書き出します。

ログサイズが小さすぎるとスイッチが頻発し、定常的なチェックポイント処理によりI/Oボトルネックが発生し、待機イベントに「log file switch (checkpoint incomplete)」が頻出する特徴があります。

負荷ピーク時の目標は15~30分に1回のログスイッチです。これより頻繁にスイッチが発生する場合はログサイズが不足している明確な兆候となります。

現在のログスイッチ頻度確認方法

V$LOG_HISTORYビューを照会し、過去7日間の1時間ごとのスイッチ回数を確認できます。

bash
SELECT 
    TRUNC(FIRST_TIME, 'HH') AS HOUR,
    COUNT(*) AS SWITCHES
FROM V$LOG_HISTORY
WHERE FIRST_TIME > SYSDATE - 7
GROUP BY TRUNC(FIRST_TIME, 'HH')
ORDER BY 1;

スイッチ回数が多い時間帯が負荷ピークとなり、ログサイズ設計の基準となります。

業務負荷に適したリドログサイズの設計方法

設計の基準となる計算式は以下の通りです。

ピーク時リド生成速度(MB/分) × 30分 = 適正ログサイズ

標準的なOLTP業務の場合、500MB~1GBを基準値とします。バッチ処理や日次締め処理が多いデータベースは、平時平均ではなくピーク負荷に合わせてサイズを設定してください。平均負荷に合わせると、パフォーマンスが最も重要なタイミングでデータベースが停滞する恐れがあります。

実例:200MBのログを使用していたデータベースは夜間バッチ実行時に1時間あたり456回のログスイッチが発生していました。ログサイズを22GBに拡張後、AWR上位待機イベントから「log file switch (checkpoint incomplete)」が完全に消滅し、バッチ処理時間が40%短縮されました。

リドログファイルのサイズ変更手順

既存のログファイルのサイズを直接変更することはできません。手順は「大容量の新規グループ追加→ログスイッチを実行→旧グループ削除」となります。

1. 目標サイズの新規グループを追加します。

sql
ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/redo04.log') SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 5 ('/u01/app/oracle/oradata/redo05.log') SIZE 2G;
ALTER DATABASE ADD LOGFILE GROUP 6 ('/u01/app/oracle/oradata/redo06.log') SIZE 2G;

2. 強制的にログスイッチを実行し、Oracleが新規グループへ切り替わるようにします。

sql
ALTER SYSTEM SWITCH LOGFILE;

3. 旧グループのステータスがINACTIVEになったら削除します。

sql
ALTER DATABASE DROP LOGFILE GROUP 1;

4. 残りの旧グループに対して手順3を繰り返し実行します。

ヒント:すべての旧グループを循環させるため、ALTER SYSTEM SWITCH LOGFILEを複数回実行する必要がある場合があります。グループを削除する前に必ずV$LOGビューでステータスがINACTIVEであることを確認してください。

ARCHIVELOGモード、復旧、リドログがデータベースを救う場面

OracleデータベースはNOARCHIVELOGまたはARCHIVELOGの2つのモードのいずれかで稼働します。

NOARCHIVELOGモードでは、書き込み完了したリドログはそのまま上書きされます。最後のフルバックアップ時点までしか復旧できず、それ以降のデータは失われます。

ARCHIVELOGモードでは、リドログを再利用する前に恒久的な複製ファイルを保存します。古いバックアップにアーカイブログを適用することで障害発生直前までデータを復旧可能となるため、本番データベースではARCHIVELOGモードは必須の設定です。

クラッシュ復旧の仕組み

インスタンスがクラッシュし再起動する際、Oracleは自動的に2段階の復旧処理を実行します。

  1. ロールフォワード:リドログに記録されたすべての変更をデータファイルに適用し、クラッシュ時のメモリ状態とデータファイルを同期させます。
  2. ロールバック:実行中だがコミットされていないトランザクションを特定し、処理を取り消してデータの整合性を回復します。

人手による操作は不要で、この処理が完了した後にデータベースがオープンします。

稼働モードの確認とARCHIVELOG有効化手順

現在のアーカイブ状況を確認するコマンド:

bash
ARCHIVE LOG LIST;

出力結果に「No Archive Mode」と表示される場合は、以下の手順でARCHIVELOGモードを有効化します。

1. データベースをシャットダウンします。

sql
SHUTDOWN IMMEDIATE;

2. データベースをマウント状態で起動します。

sql
STARTUP MOUNT;

3. ARCHIVELOGモードを有効化します。

sql
ALTER DATABASE ARCHIVELOG;

4. データベースをオープンします。

sql
ALTER DATABASE OPEN;

リドログの一般的な障害と解決策

症状 考えられる原因 解決策
1~2分ごとにログスイッチが発生 ログファイルのサイズが小さすぎる グループ追加・削除方式でログサイズを拡張
log file sync 待機イベントが多発 ログ用ディスクのI/Oボトルネック SSDまたはNVMeなど高速ストレージへログを移行
log file switch (checkpoint incomplete) が発生 ロググループの数が不足 DBWnがチェックポイント処理を完了する時間を確保するため、グループを追加
アーカイブ先の容量枯渇によりデータベースが停止 アーカイブ領域の監視不足 ストレージ容量拡張、アーカイブファイルの移設、またはRMANによる古いアーカイブ削除

Oracleリドログだけでは不十分な場合:i2Backupによるエンタープライズバックアップ

リドログはOracleの最初の防衛線です。インスタンスが予期せず停止した際、クラッシュリカバリを自動実行し、コミット済みトランザクションの損失を防止します。

しかしリドログには限界があります。誤ったデータ削除、永久的なディスク障害、チェックポイントを経てデータファイルに反映済みの破損からの復旧には対応できません。また、複数データベースのバックアップポリシーを一箇所で統合管理する機能も備えていません。

こうしたケースには専用のバックアップソリューションが必要です。i2Backupは、リドログのカバーできない領域を補完するために開発されたエンタープライズ向けバックアップ基盤です。

i2Backupの主な機能

  • リアルタイム/スケジュール型データベースバックアップ:スタンドアロンOracleインスタンスに加え、RAC・ADGを含むクラスタ環境に対応。リドログとアーカイブログを常時取得し、RPOをゼロに近づけます。任意の時点までデータベースを復元するポイントインタイムリカバリにより、直近のバックアップチェックポイントだけでなく任意の瞬間に復旧可能です。
  • テーブル単位リストア:データベース全体の復元に加え、テーブル単位のバックアップ・リストアに対応。データの一部のみが誤削除または破損した際の復旧に役立ちます。
  • 柔軟なバックアップ保存先:ローカルストレージ、NAS、クラウド保存先へ同時にバックアップを出力可能で、バックアップ基盤の単一障害点を排除します。
  • 集中管理機能:Webコンソールから複数のデータベースホストのバックアップタスクをスケジューリング・監視・管理でき、複数ツールを切り替える必要がありません。

完全なデータ保護スタック

高可用性またはリアルタイムレプリケーションを必要とするOracle環境向けに、Info2softは相補的な2製品を提供しています。

  • i2Availabilityは本番サーバーと待機サーバー間でリアルタイムデータレプリケーションと自動フェイルオーバーを実現し、ハードウェア障害時もサービスを継続させます。
  • i2Streamは異種プラットフォーム間のデータベースレプリケーション・同期を処理し、Oracle、MySQL、PostgreSQLなど複数DBに対応します。

i2Backupと組み合わせることで、インスタンスレベルのクラッシュリカバリから異種環境間の災害復旧まで、あらゆるデータ保護ニーズに対応します。

ボタンをクリックするとInfo2softの災害復旧ソリューションの無料トライアルを申し込めます。

60日間無料トライアル

まとめ

Oracleリドログはデータ永続性の基盤です。すべてのコミット済み変更を記録し、自動クラッシュリカバリを有効にし、適切なサイズと設定によりパフォーマンスボトルネックなしでデータベースを稼働させ続けます。

本ガイドの要点は以下の通りです。

  • リドログメンバーを別々のディスクに多重化し、単一障害点をなくす
  • 高負荷時のログ切り替え間隔を15~30分に設定。頻繁に切り替わる場合はログサイズが不足している
  • 本番データベースは常にARCHIVELOGモードで運用する
  • ログサイズは日間平均負荷ではなく、ピーク時の負荷に合わせて設定する

とはいえ、リドログはバックアップ戦略にはなりません。インスタンスクラッシュからは保護できても、誤削除、ハードウェア障害、複数DB横断の復旧管理には対応できません。これらの課題に対しては、Info2softのi2Backupといった専用ソリューションが補完します。常時Oracleバックアップ、任意時点リカバリ、環境全体の集中管理機能を備えています。

概要は準備中です

関連記事

[解決済み] VMware「ホストを同期できない」エラーの解決方法
vCenter と ESXi 管理エージェント間の通信断の箇所を特定し、VMware「ホストを同期できない」エラーを解消します。本ガイドでは、サービスのハング、ポート 902 の接続性、ゲスト OS‑ホスト間の時刻ずれといった項目をトラブルシューティングし、vCenter のホスト同期障害を解決する実績のある手順を紹介します。
記事を読む
MySQL対Oracle:パフォーマンス、構文、コスト、利用事例の比較
MySQLとOracleの選択にお悩みですか。本ガイドではパフォーマンス、構文、コスト、利用事例における主要な違いを解説し、ニーズに最適なデータベースを選定するお手伝いをします。
記事を読む
OracleにおけるALTER SYSTEM ARCHIVE LOG:CURRENT、ALL、STOP
誤ったアーカイブログコマンドを使用すると、バックアップ失敗、リカバリ障害、最悪の場合データベースがハングする原因となります。本ガイドではOracleのCURRENT、ALL、STOPオプションの動作、適切な使用タイミング、管理者が把握すべきリスクについて解説します。
記事を読む
Linux、Windows、Proxmox上でOVAをQCOW2に変換する方法
VMwareまたはVirtualBoxの仮想アプライアンスをKVM基盤環境に移行したいですか?本ガイドではLinux、Windows、ProxmoxにおけるOVAからQCOW2への変換手順、コマンド、インポート方法、変換時の一般的なトラブル解決策を解説します。
記事を読む
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}