連載
» 2006年08月01日 00時00分 公開

物理バックアップの失敗を根絶するノウハウOracleバックアップ/リカバリ講座(7)(2/4 ページ)

[森谷聡,株式会社アゲハ]

手順1 前回のバックアップ時に取得したRECIDが格納されたテキストファイルの存在確認

 ここでは、前回バックアップされたアーカイブREDOログファイルのRECIDを、テキストファイルに保持する方法を取っています。このファイルが存在し、値が確認できれば、このRECIDに対応するアーカイブREDOログファイルのバックアップは完了していることになります。もし、初めてのバックアップ取得時などテキストファイルが存在していない場合には、v$archived_logより最大のRECIDを取得し、テキストファイルなどへ出力します。

SQL> select max(recid) from v$archived_log;

MAX(RECID)
----------
       154
リスト1 現在の最大RECIDの取得

手順2 データファイルのバックアップ

 データファイルをバックアップモード(begin backup)に変更し、データファイルのバックアップを取得します。バックアップの取得後は、忘れずにバックアップモードの解除(end backup)を実行します。なお、詳細については第6回の「非一貫性バックアップ」のデータファイルのバックアップを参照してください。

手順3 アーカイブREDOログファイルのバックアップと削除

(1)オンラインREDOログファイルのアーカイブ
 バックアップモード実行中に書き込まれたオンラインREDOログファイルのアーカイブを実行します。

SQL> alter system archive log current;

システムが変更されました。
リスト2 オンラインREDOログファイルのアーカイブ

(2)v$archived_logより最大RECIDの取得
 リスト1と同じSQLでv$archived_logより最大RECIDを取得します。この際に取得した最大RECIDをテキストファイルなどに出力し保存します。

SQL>  select max(recid) from v$archived_log;

MAX(RECID)
----------
       158
リスト3 v$archived_logより最大RECIDの取得

(3)アーカイブREDOログファイルのバックアップリストの作成
 前回(手順1で確認した)のRECID+1から、今回(手順3の(2))取得した最大RECIDまでのアーカイブREDOログファイルについて、v$archived_logより取得したファイル名を基にバックアップリストを作成し、ファイルなどへ出力して保存します。

SQL> select name from v$archived_log
  2  where recid between 155 and 158;

NAME
---------------------------------------------
/opt/app/oracle/archive/1_176_582520372.dbf
/opt/app/oracle/archive/1_177_582520372.dbf
/opt/app/oracle/archive/1_178_582520372.dbf
/opt/app/oracle/archive/1_179_582520372.dbf
リスト4 アーカイブREDOログファイルのバックアップリストの作成

(4)アーカイブREDOログファイルのバックアップと削除
 先ほど取得したバックアップリストを基に、アーカイブREDOログファイルをバックアップします(今回の例では/work/ONLINE_BACKUP/ARCHIVELOG_BK/)。エラーなくバックアップを取得できた場合には、バックアップ対象となったアーカイブREDOログファイルを削除してしまっても問題ありません。しかし、実際の運用では直近のバックアップが使用不可能(テープメディアに障害が発生したなど)となってしまった場合や、アーカイブREDOログファイルのリストア時間を短縮することなども考慮して、何世代分かのアーカイブREDOログファイルをディスク上に残すなど、削除タイミングを検討します。

cp -p /opt/app/oracle/archive/1_176_582520372.dbf /work/ONLINE_BACKUP/
ARCHIVELOG_BK/
cp -p /opt/app/oracle/archive/1_177_582520372.dbf /work/ONLINE_BACKUP/
ARCHIVELOG_BK/
cp -p /opt/app/oracle/archive/1_178_582520372.dbf /work/ONLINE_BACKUP/
ARCHIVELOG_BK/
cp -p /opt/app/oracle/archive/1_179_582520372.dbf /work/ONLINE_BACKUP/
ARCHIVELOG_BK/
リスト5 アーカイブREDOログファイルのバックアップ

手順4 制御ファイルのバックアップ

 最後に制御ファイルのバックアップを取得します。

 手順1〜4のファイルで、1世代分のバックアップが取得されたことになります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。