こんにちはユキトモです。
今回は、OracleのオンラインREDOログファイルを解説していきます。
オンラインREDOログファイル
オンラインREDOファイルは、データベースに対して実施した操作を再実行(REDO)するためのログ(作業履歴情報)です。
REDOログファイルは2種類
種類
・オンラインREDOログファイル(REDOログを保存している)
・アーカイブREDOログファイル(履歴のバックアップを保存している)
 
オンラインREDOログファイル
オンラインREDOファイルがあれば、データベースの任意の過去の状態にリカバリすることができます。
通常、オンラインREDOファイルはOracleをインストールする時に容量サイズが決められてます。
 
オンラインREDOログファイルの構成
・グループ
循環方式でログを書き込むためREDOログのグループは最低2つ以上必要です。
・メンバー
多重化を行う場合は、同じグループ内に同内容をの複数のREDOログファイルを保持します。
グループを確認   --オンラインREDOログのグループを確認 col group# for 999 col member for a39 SELECT group#,member from v$logfile order by group#; GROUP# MEMBER ------ --------------------------------------- 1 /opt/oracle/oradata/ORCLCDB/redo01.log 2 /opt/oracle/oradata/ORCLCDB/redo02.log 3 /opt/oracle/oradata/ORCLCDB/redo03.log
筆者の環境では、グループが3つあり、メンバーはそれぞれ1つずつの構成です。
 
ファイルサイズ確認
ファイルサイズを確認には下記のSQL文で確認できます。
ファイルサイズ確認   --ファイルサイズを確認 SELECT lf.GROUP#,l.BYTES,l.BYTES/1024 as "KB",l.BYTES/1024/1024 as "MB",lf.member FROM v$log l,v$logfile lf WHERE l.GROUP#=lf.GROUP# ORDER BY 1; GROUP# BYTES KB MB MEMBER ------ ---------- ---------- ---------- --------------------------------------- 1 209715200 204800 200 /opt/oracle/oradata/ORCLCDB/redo01.log 2 209715200 204800 200 /opt/oracle/oradata/ORCLCDB/redo02.log 3 209715200 204800 200 /opt/oracle/oradata/ORCLCDB/redo03.log
1ファイル200MBであることが確認できます。
 
カレントファイルを確認
現在、どこのグループにログが書き込まれているか(カレント)確認する
確認 --カレント確認 SELECT GROUP#,status FROM v$log; --実行例 GROUP# STATUS ------ ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE
循環するのでグループ1がファイルサイズいっぱいに書き込まれたら次のグループへ書き込まれます。
グループ1→グループ2→グループ3→グループ1と循環(ログスイッチ)して行きます。
Oracleを業務などで運用して更新、削除などが頻繁に行われるとREDOログが循環してログが書き込まれます。
ログスイッチしたタイミングでアーカイブREDOログファイルへ書き込まれます。
 
補足
・アーカイブREDOログファイルは上書きされず、削除されないファイルです。
・ある一定期間より古いアーカイブREDOログファイルは別媒体へ移動するシェルやバッチ
または削除するシェルやバッチを組み込んでディスク容量が枯渇しないようにする必要があります。
 
ログスイッチを確認する
手動でログスイッチすると現在書き込まれている次のグループがCURRENTになります。
ログスイッチ   --スイッチ前 SELECT GROUP#,status FROM v$log;   --スイッチする alter system switch logfile;   --または alter system archive log current;   --スイッチ後 SELECT GROUP#,status FROM v$log;
 
以上オンラインREDOログの概要です。