ここでは、前回バックアップされたアーカイブREDOログファイルのRECIDを、テキストファイルに保持する方法を取っています。このファイルが存在し、値が確認できれば、このRECIDに対応するアーカイブREDOログファイルのバックアップは完了していることになります。もし、初めてのバックアップ取得時などテキストファイルが存在していない場合には、v$archived_logより最大のRECIDを取得し、テキストファイルなどへ出力します。
SQL> select max(recid) from v$archived_log; |
リスト1 現在の最大RECIDの取得 |
データファイルをバックアップモード(begin backup)に変更し、データファイルのバックアップを取得します。バックアップの取得後は、忘れずにバックアップモードの解除(end backup)を実行します。なお、詳細については第6回の「非一貫性バックアップ」のデータファイルのバックアップを参照してください。
(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; |
リスト3 v$archived_logより最大RECIDの取得 |
(3)アーカイブREDOログファイルのバックアップリストの作成
前回(手順1で確認した)のRECID+1から、今回(手順3の(2))取得した最大RECIDまでのアーカイブREDOログファイルについて、v$archived_logより取得したファイル名を基にバックアップリストを作成し、ファイルなどへ出力して保存します。
SQL> select name from v$archived_log |
リスト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/ |
リスト5 アーカイブREDOログファイルのバックアップ |
最後に制御ファイルのバックアップを取得します。
手順1〜4のファイルで、1世代分のバックアップが取得されたことになります。
Copyright © ITmedia, Inc. All Rights Reserved.