OSコマンドを使用して、先ほどバックアップモードへ変更した4つの表領域を構成するデータファイルをバックアップ先(/work/ONLINE_BACKUP)へコピーします。リスト8の例のように、「!」または「host」コマンドを入力することにより、SQL*Plus上からでもOSコマンドを入力することが可能です。
SQL> !cp -p /opt/app/oracle/oradata/system01.dbf /work/ONLINE_BACKUP |
リスト8 OSコマンドでバックアップ先へコピー |
バックアップの完了した表領域のバックアップモードを解除後、バックアップ取得中に書き込まれたオンラインREDOログファイルをアーカイブREDOログファイルに出力します。
SQL> alter tablespace SYSTEM end backup; |
リスト9 表領域のバックアップモードを解除、オンラインREDOログファイルをアーカイブREDOログファイルに出力 |
表領域のバックアップモードが解除されたことを確認します。SYSTEM表領域、SYSAUX表領域、UNDOTBS1表領域、USERS表領域の状態(STATUS列)がバックアップモード解除(NOT ACTIVE)に変更されたことが確認できます。
SQL> select vt.name as tablespace_name,vd.name as file_name, |
リスト10 バックアップモードの解除を確認 |
バックアップ方法については、この後のアーカイブREDOログファイルのバックアップで詳しく説明します。ここではデータファイルのバックアップ取得後、アーカイブREDOログファイルをバックアップすることを覚えておいてください。
制御ファイルのバックアップを取得する場合、バイナリファイルとして取得する方法とcreate controlfile文を含んだトレースファイルとして取得する方法があります。
バイナリファイルとして取得した場合には、アーカイブREDOログファイルの履歴情報、読み取り専用およびオフライン表領域のオフライン範囲などが含まれ、トレースファイルとして取得した場合には制御ファイルの作成に必要なSQL文が含まれています。バックアップした制御ファイルを使用したリカバリを行う場合、データベース構成ファイルの情報が正しいトレースファイルを利用して制御ファイルを作成すると、RESETLOGSオプションを使用せずにデータベースのオープンが可能となります。そのため、両方の方法でバックアップを取得することをお勧めします。
SQL> alter database backup controlfile to '/work/ONLINE_BACKUP/control |
リスト11 制御ファイルのバックアップ 「as ‘ファイル名’」句は、Oracle9i R2から指定可能で、指定がない場合はUSER_DUMP_DEST配下にトレースファイルを出力します |
非一貫性バックアップを取得するときには、データファイルのバックアップ、アーカイブREDOログファイルのバックアップ、そして制御ファイルのバックアップという順に取得していました。毎回この順番でバックアップを取得することで、この組み合わせを1つの世代として見なします。
例として、バックアップを反対に制御ファイル、アーカイブREDOログファイル、データファイルの順に取得し、データベース全体のリストア、リカバリが必要になったと想定します。この際に、ディスク障害などでアーカイブREDOログファイルを含むデータベース構成ファイルがすべて壊れてしまったとします。この状態でリカバリする場合、最新のバックアップのデータファイルをリストアしても適用可能なアーカイブREDOログファイルがなく、もう1世代前のバックアップにあるデータファイルをリストアし、その後で最新バックアップに含まれるアーカイブREDOログファイルを適用することになります。
このため、バックアップの順番についてもリストア、リカバリするときのことを考慮して、決定する必要があります。
バックアップモード中にインスタンス障害などが発生してしまった場合、バックアップモード中のデータファイルはそのままバックアップモードになっています。このような状況でデータベースをオープンしようとするとエラー(ORA-01113)が発生するため、バックアップモードの解除が必要になります。
このような場合、データベースをマウントした状態(startup mount)で各データファイルのバックアップモードを解除する必要がありますが、Oracle9i(9.0.1)からは「alter database end backup」を使用することにより、一括でバックアップモードを解除することが可能です(Oracle 10gでは、データベースがオープン状態でも実行可能です)。
また、Oracle 10g(10.1)からは「alter database begin backup」が追加されたことにより、全データファイルを一括でバックアップモードに設定することも可能となりました。ストレージ機能で全データファイルをバックアップするなど、短時間でバックアップモードを解除できるデータベースでは有効な方法です。Oracleのバージョンによって、実行可能なコマンドや実行する際のデータベースの状態が異なりますので注意してください。
読み取り専用表領域のバックアップでは、データファイルに対する更新が許可されないため、表領域バックアップモードへ変更する必要がありません(変更するとORA-01642が発生します)。そのため、データファイルの状態がオンラインのまま、OSコマンドでそのままバックアップが可能です。また、読み取り専用表領域ではデータは更新しないので、読み取り専用へ変更後の最初の一度だけバックアップを取得し、次回のバックアップ取得時には読み取り専用表領域をバックアップ対象から除外できるので、バックアップの取得時間の短縮が可能です。
Copyright © ITmedia, Inc. All Rights Reserved.