ORACLE MASTER資格の上級に位置付けられる「ORACLE MASTER Gold Oracle Database 11g」。本連載では、Gold試験の頻出ポイントを解説する。確認問題付き。
前回までは、データファイルが壊れた場合を想定してのお話でした。また、制御ファイルのバックアップとリカバリについても解説しました。いずれも、Recovery Manager(RMAN)を使用したバックアップとリカバリのお話です。
しかし、バックアップするだけならRMANのほかにも手段はあります。そして、RMANでは対処できない損失もあります。今回はRMANでは対処できない損失を回復する方法、具体的には、REDOログファイルが壊れたときに回復する方法について解説します。
REDOログファイルはサイズと数が決まっており(設定で変更可)、決まった領域を使い切ったら、最初に戻って上書きしていきます。データベースをARCHIVELOGモードで稼働させると、REDOログファイルをアーカイブログファイルとして保存できますが、これは、REDOログファイルのバックアップとは呼べません。REDOログファイルには常に書き込みがあるので、最新の状態のバックアップは取れないのです。
そこで、REDOログファイル自身の障害対策として「多重化」機能が備わっています。REDOログファイルの内容を2つ以上のファイルに同時に書き込んでいくことを可能にする機能です。同じ内容のログファイルの集まりを「グループ」と呼びます。ログを書き込む対象を切り替える「ログスイッチ」が発生したときは、別のグループにログを書き込むようになるわけです。
多重化すれば、書き込み中のREDOログファイルのグループが全滅さえしなければ、データベースは止まりません。また、復旧も容易です。以下はREDOロググループのメンバーを損失した時にそれを復旧する方法をまとめたものです。
まず、壊れたREDOログメンバーの代わりになる新たなREDOログメンバーを追加します。
SQL> ALTER DATABASE ADD LOGFILE MEMBER 'ファイル名' TO GROUP n;
続いて、壊れたREDOログメンバーを削除します。
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'ファイル名';
OSのファイルシステム上のファイルはこの操作だけでは削除できません。最後はOSを操作して削除してください。
では、あるREDOロググループのメンバーが全滅したらどうなるのでしょうか。この事態に対処するには、REDOロググループのステータスを理解しておく必要があります。
REDOロググループのステータスには、以下の3種類があります。
現在、LGWR(ログライター)がログを書き込んでいるREDOロググループを指します。
インスタンスクラッシュが発生したとき、回復に必要となるログが記録されているグループです。このグループに記録されたログのすべては、まだデータファイルに反映されていません。すなわち、最終チェックポイント処理が済んでいないログが入っています。
チェックポイントが済んでいるログです。このグループをインスタンスクラッシュの回復に使うことはありません。
チェックポイントとは、インスタンスクラッシュに備え、バッファキャッシュの内容をデータファイルに反映させる処理を指す言葉でした。言い方を変えると、インスタンスクラッシュが発生したとき、Oracleは再起動時にチェックポイント処理以降のログを使って自動的に回復します。
Copyright © ITmedia, Inc. All Rights Reserved.