プライマリ・コンテンツに移動
Oracle® Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
12c リリース1 (12.1)
B71297-08
目次へ移動
目次
索引へ移動
索引

前
次

29 ユーザー管理データベース・バックアップの作成

この章では、ユーザー管理バックアップおよびリカバリ計画(Recovery Manager (RMAN)を必要としない計画)でOracle Databaseをバックアップする方法について説明します。

この章の内容は次のとおりです。

V$ビューの問合せによるバックアップ情報の取得

バックアップを作成する前に、データベース内のすべてのファイルを確認して、バックアップするファイルを決定する必要があります。V$ビューを使用すると、この情報を取得できます。

この項の内容は、次のとおりです。

バックアップ前のデータベース・ファイルの表示

データベースのデータファイルおよび制御ファイルを確認するには、V$DATAFILEおよびV$CONTROLFILEビューを使用します。次に示す手順は、これらのファイルの名前を手動で付けた場合も、Oracle Managed Filesで付けた場合も、同様に使用できます。

注意:

オンラインREDOログ・ファイルはバックアップしないでください。

データファイルおよび制御ファイルを表示する手順

  1. SQL*Plusを起動し、V$DATAFILEを問い合せてデータファイルのリストを取得します。たとえば、次のように入力します。
    SELECT NAME FROM V$DATAFILE;
    

    V$TABLESPACEビューとV$DATAFILEビューを結合して、データファイルのリストと、関連する表領域のリストを取得することもできます。

    SELECT   t.NAME "Tablespace", f.NAME "Data File"
    FROM     V$TABLESPACE t, V$DATAFILE f
    WHERE    t.TS# = f.TS#
    ORDER BY t.NAME;
    
  2. V$CONTROLFILEビューを問い合せて、現行の制御ファイルのファイル名を取得します。たとえば、次の問合せを発行します。
    SELECT NAME FROM V$CONTROLFILE;
    

    多重制御ファイルの場合は、バックアップする必要があるのは1つのコピーのみです。

  3. ALTER DATABASE BACKUP CONTROLFILE TO 'filename'文を使用して制御ファイルのバックアップを実行する場合には、制御ファイルのバックアップとともに、すべてのデータファイルおよびオンラインREDOログ・ファイルのリストを保存します。現在のデータベース構造は、制御ファイルの特定のバックアップが作成された時点のデータベース構造とは異なる場合があるため、バックアップ制御ファイルに記録されたファイルのリストを保存しておくと、リカバリを行う際に便利です。

オンライン表領域バックアップのデータファイルのステータスの確認

データファイルが現行のオンライン表領域のバックアップの一部であるかどうかを確認するには、V$BACKUPビューを問い合せます。

このビューはユーザー管理のオンライン表領域バックアップでのみ有効です。RMANのバックアップおよびオフライン表領域のバックアップでは、表領域のデータファイルをバックアップ・モードに設定する必要がないためです。 一部のユーザー管理バックアップ手順では、分裂ブロックの発生を防ぐため、表領域をバックアップ・モードにする必要があります。ただし、バックアップ・モードでは、データベースへの更新によって通常より多くのREDOが作成されます。

V$BACKUPビューは、データベースがオープンしている場合に特に有効です。また、障害時のファイルのバックアップ・ステータスも表示されるため、インスタンス障害の直後にも有効です。この情報を使用して、バックアップ・モードのままになっている表領域があるかどうかを確認します。

現在使用されている制御ファイルが、リストアされたバックアップか、メディア障害の発生後に作成された新しい制御ファイルの場合には、V$BACKUPは役に立ちません。リストアされた制御ファイルまたは再作成された制御ファイルには、データベースがV$BACKUPを正確に移入するために必要とする情報が含まれていません。また、ファイルのバックアップをリストアした場合には、V$BACKUPの中のこのファイルのSTATUSは、最新のバージョンではなく、ファイルの古いバージョンのバックアップ・ステータスを反映したものになります。このため、このビューにはリストアされたファイルに関して誤解を招くデータが表示される場合があります。

たとえば、次の問合せを実行して、バックアップ・モードに設定された表領域に現在どのようなデータファイルが含まれているかを表示するとします。

SELECT t.name AS "TB_NAME", d.file# as "DF#", d.name AS "DF_NAME", b.status
FROM   V$DATAFILE d, V$TABLESPACE t, V$BACKUP b
WHERE  d.TS#=t.TS#
AND    b.FILE#=d.FILE#
AND    b.STATUS='ACTIVE';

次の出力例は、toolsおよびusers表領域が現在ACTIVEステータスであることを示しています。

TB_NAME                 DF#        DF_NAME                           STATUS
----------------------  ---------- --------------------------------  ------
TOOLS                   7          /oracle/oradata/trgt/tools01.dbf  ACTIVE
USERS                   8          /oracle/oradata/trgt/users01.dbf  ACTIVE

STATUS列にNOT ACTIVEが表示されている場合、ファイルが現在バックアップ・モードではない(ALTER TABLESPACE ... BEGIN BACKUP またはALTER DATABASE BEGIN BACKUP文を実行していない)ことを意味します。ACTIVEが表示されている場合、ファイルが現在バックアップ・モードであることを意味します。

データベース全体のユーザー管理バックアップの作成

NORMALIMMEDIATEまたはTRANSACTIONALオプションを使用してデータベースを停止した後で、一貫性のあるデータベース全体のバックアップを実行し、データベース内のすべてのファイルのバックアップを作成できます。データベースのオープン中、またはインスタンス障害やSHUTDOWN ABORTコマンドの後に作成されたデータベース全体のバックアップは一貫性のないものになります。この場合のファイルは、データベース・チェックポイントSCNと一貫性がありません。

データベースをARCHIVELOGモードまたはNOARCHIVELOGモードのどちらで実行していても、データベース全体のバックアップを作成できます。ただし、データベースをNOARCHIVELOGモードで実行する場合は、バックアップ前にデータベースを正しく停止して、一貫性のあるバックアップを作成する必要があります。

一貫性のあるデータベース全体のバックアップによって作成されたバックアップ・ファイルのセットでは、すべてのファイルで同じSCNにチェックポイントが設定されているため、一貫性があります。一貫性のあるデータベースのバックアップは、リカバリを実行せずにリストアできます。データベースをARCHIVELOGモードで実行している場合は、バックアップ・ファイルをリストアした後で、追加のリカバリ手順を実行してデータベースをより新しい時点までリカバリできます。また、データベースがARCHIVELOGモードの場合には、一貫性のないデータベース全体のバックアップを作成することもできます。

制御ファイルは、データベースのリストアおよびリカバリに重要な役割を果たします。ARCHIVELOGモードで実行しているデータベースの場合には、ALTER DATABASE BACKUP CONTROLFILE TO 'filename'文を使用して、制御ファイルをバックアップしておくことをお薦めします。

関連項目:

制御ファイルのバックアップの詳細は、「制御ファイルのユーザー管理バックアップの作成」を参照してください。

一貫性のあるデータベース全体のバックアップの作成

この項では、オペレーティング・システム・ユーティリティを使用してデータベースをバックアップする方法を説明します。

一貫性のあるデータベース全体のバックアップを作成する手順

  1. データベースがオープンしている場合は、SQL*Plusを使用して、NORMALIMMEDIATEまたはTRANSACTIONALオプションを指定してデータベースを停止します。
  2. オペレーティング・システム・ユーティリティを使用して、すべてのデータファイルと、初期化パラメータ・ファイルのCONTROL_FILESパラメータで指定されたすべての制御ファイルのバックアップを作成します。また、初期化パラメータ・ファイルおよびその他のOracle製品の初期化ファイルもバックアップします。これらのファイルを検索するには、*.oraを使用して、Oracleホーム・ディレクトリから開始してすべてのサブディレクトリを再帰的に検索します。

    たとえば、次に示すとおり、データファイル、制御ファイルおよびアーカイブ・ログを/disk2/backupにバックアップできます。

    % cp $ORACLE_HOME/oradata/trgt/*.dbf /disk2/backup
    % cp $ORACLE_HOME/oradata/trgt/arch/* /disk2/backup/arch
     
  3. SQL*PlusでSTARTUPコマンドを使用して、データベースを再起動します。

    関連項目:

    データベースの起動および停止の詳細は、『Oracle Database管理者ガイド』を参照してください。

CDBおよびPDBのユーザー管理バックアップの作成

この章の情報は、わずかな変更点を除いて、次の項で説明するとおり、マルチテナント・コンテナ・データベース(CDB)およびプラガブル・データベース(PDB)に当てはまります。

CDB全体をバックアップする手順

  1. SQL*Plusを開きます。

  2. 「ターゲットとしてのrootへの接続」の説明に従って、SYSDBAまたはSYSBACKUPシステム権限を持つユーザーとしてrootに接続します。

  3. 「データベース全体のユーザー管理バックアップの作成」の手順に従います。

    関連項目:

    CDBに対するALTER DATABASEの使用方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

PDBをバックアップするには、次の手順を実行します。

  1. SQL*Plusを開きます。
  2. 「ターゲットとしてのPDBへの接続」の説明に従って、SYSDBAまたはSYSBACKUPシステム権限を持つユーザーとしてPDBに接続します。
  3. SQLのALTER DATABASEコマンドを使用して、バックアップを開始します。
    ALTER DATABASE BEGIN BACKUP;
    
  4. オペレーティング・システム・ユーティリティを使用して、PDBに属するデータファイルをバックアップ・デバイスにコピーします。
  5. SQLのALTER DATABASEコマンドを使用して、バックアップを終了します。
    ALTER DATABASE END BACKUP;

表領域およびデータファイルのユーザー管理バックアップの作成

表領域およびデータファイルのユーザー管理バックアップを作成する方法は、ファイルがオフラインかオンラインかによって異なります。

この項の内容は、次のとおりです。

オフラインの表領域およびデータファイルのユーザー管理バックアップの作成

オフライン表領域のバックアップを行うときには、次のガイドラインに注意してください。

  • SYSTEM表領域またはアクティブなUNDOセグメントを含む表領域をオフラインにすることはできません。このような表領域では、次の方法は使用できません。

  • 表領域Primary内に表があり、その索引が表領域Indexにあるとします。表領域Indexをオフラインにし、表領域Primaryをオンラインのままにしておくと、Primary内にある索引付きの表に対してデータ操作言語(DML)が発行されたときにエラーが発生する可能性があります。この問題は、オプティマイザによって選択されたアクセス方法で、Index表領域内の索引へのアクセスが必要となった場合にのみ発生します。

オフライン表領域をバックアップする手順

  1. 表領域のバックアップを開始する前に、DBA_DATA_FILESビューを問い合せて、表領域のデータファイルを確認します。たとえば、users表領域をバックアップするとします。SQL*Plusで次の文を入力します。
    SELECT TABLESPACE_NAME, FILE_NAME
      FROM SYS.DBA_DATA_FILES
      WHERE TABLESPACE_NAME = 'USERS';
     
    TABLESPACE_NAME                   FILE_NAME
    -------------------------------   --------------------------------
    USERS                             /oracle/oradata/trgt/users01.dbf
    

    この例の/oracle/oradata/trgt/users01.dbfは、users表領域の中のデータファイルに対応する完全指定のファイル名です。

  2. 可能であれば、通常優先度で表領域をオフラインにします。これによって、後で、リカバリを行わなくても表領域を確実にオンラインに戻せます。次に例を示します。
    SQL> ALTER TABLESPACE users OFFLINE NORMAL;
    
  3. オフライン・データファイルをバックアップします。次に例を示します。
    % cp /oracle/oradata/trgt/users01.dbf /d2/users01_'date "+%m_%d_%y"'.dbf
    
  4. 表領域をオンラインにします。次に例を示します。
    ALTER TABLESPACE users ONLINE;

    注意:

    一時または即時優先度を使用して表領域をオフラインにした場合には、表領域のリカバリを実行しないかぎり、表領域をオンラインにすることはできません。

  5. 表領域のバックアップのリカバリに必要なREDOがアーカイブされるように、アーカイブされていないREDOログをアーカイブします。たとえば、次のように入力します。
    ALTER SYSTEM ARCHIVE LOG CURRENT;

オフラインの表領域およびデータファイルのユーザー管理バックアップの作成

データベースのオープン中は、オンライン表領域のすべてのデータファイルまたは特定のデータファイルをバックアップできます。オンライン表領域が読取り/書込みか読取り専用かによって手順は異なります。

注意:

一時表領域はバックアップしないでください。

この項の内容は、次のとおりです。

オンラインの読取り/書込み表領域のユーザー管理バックアップの作成

表領域がオンラインで、データベースがオープンしているときに、データファイルのユーザー管理バックアップを作成するには、読取り/書込み表領域をバックアップ・モードに設定する必要があります。 ALTER TABLESPACE ... BEGIN BACKUP文を使用すると、表領域をバックアップ・モードに設定できます。バックアップ・モードでは、変更されたデータ・ブロック全体がREDOストリームにコピーされます。ユーザーがALTER TABLESPACE ... END BACKUPまたはALTER DATABASE END BACKUP文を使用して表領域のバックアップ・モードを終了すると、データファイル・チェックポイントSCNが現在のデータファイル・チェックポイントSCNまで進みます。

この方法でバックアップされたデータファイルをリストアすると、リカバリが必要な場合は、REDOログ・ファイルの適切なセットを適用するように求められます。REDOログには、データファイルをリカバリし、データファイルを一貫性のある状態にするために必要なすべての変更が含まれています。

オープン状態のデータベース中のオンラインの読取り/書込み表領域をバックアップする手順

  1. 表領域のバックアップを開始する前に、DBA_DATA_FILESデータ・ディクショナリ・ビューを使用して、表領域内のすべてのデータファイルを確認します。たとえば、users表領域をバックアップするとします。次のように入力します。
    SELECT TABLESPACE_NAME, FILE_NAME
    FROM   SYS.DBA_DATA_FILES
    WHERE  TABLESPACE_NAME = 'USERS';
     
    TABLESPACE_NAME                   FILE_NAME
    -------------------------------   --------------------
    USERS                             /oracle/oradata/trgt/users01.dbf
    USERS                             /oracle/oradata/trgt/users02.dbf
    
  2. オンライン表領域のバックアップの開始をマークします。たとえば、次の文は、表領域usersのオンライン・バックアップの開始をマークします。
    SQL> ALTER TABLESPACE users BEGIN BACKUP;

    注意:

    BEGIN BACKUPを使用してオンライン表領域のバックアップの開始をマークしなかったか、またはオンライン表領域のコピーを開始する前にその文が完了していなかった場合は、生成されたデータファイルのコピーをその後のリカバリ操作で使用できません。このようなバックアップのリカバリは危険であり、エラーが発生してデータの一貫性がなくなる可能性があります。たとえば、リカバリ操作を試みるとファジー・ファイルの警告が発行され、データベースの一貫性が失われ、データベースをオープンできなくなる可能性があります。

  3. オペレーティング・システム・コマンドを使用して、オンライン表領域のオンライン・データファイルをバックアップします。たとえば、LinuxおよびUNIXユーザーは次のように入力できます。
    % cp /oracle/oradata/trgt/users01.dbf /d2/users01_'date "+%m_%d_%y"'.dbf
    % cp /oracle/oradata/trgt/users02.dbf /d2/users02_'date "+%m_%d_%y"'.dbf
    
  4. オンライン表領域のデータファイルをバックアップした後、END BACKUPオプションを指定したSQL文ALTER TABLESPACEを実行します。たとえば、次の文は、表領域usersのオンライン・バックアップを終了します。
    SQL> ALTER TABLESPACE users END BACKUP;
    
  5. 表領域のバックアップのリカバリに必要なREDOがアーカイブされるように、アーカイブされていないREDOログをアーカイブします。たとえば、次のように入力します。
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

    注意:

    表領域のバックアップ・モードを終了しないと、Oracle Databaseはこの表領域内のデータ・ブロックのコピーをオンラインREDOログに書き込み続けるため、パフォーマンスの問題が発生します。また、表領域がまだバックアップ・モードのときにデータベースを停止しようとすると、ORA-01149エラーが表示されます。

オンラインの読取り/書込み表領域の複数のユーザー管理バックアップの作成

複数のオンライン表領域をバックアップする場合には、シリアルまたはパラレルにバックアップできます。必要に応じて、次のいずれかの手順を使用してください。

オンライン表領域のパラレル・バックアップ

バックアップが必要な複数の表領域のデータファイルのコピーを、同時にバックアップ・モードで作成できます。 ただし、すべての表領域を一度にオンライン・モードに設定すると、それらの表領域で多くの更新が実行されている場合は、大規模なREDOログが生成される可能性があります。REDOには、変更された各データファイルの変更された各データ・ブロックのコピーを含める必要があるためです。 次に示す手順を実行する前に、生成されるREDOのサイズを検討してください。

オンライン表領域をパラレルにバックアップする手順

  1. 必要なすべてのALTER TABLESPACE文を一度に発行して、オンライン表領域でバックアップの準備をします。たとえば、次のように表領域userstoolsおよびindxをバックアップ・モードにします。
    SQL> ALTER TABLESPACE users BEGIN BACKUP;
    SQL> ALTER TABLESPACE tools BEGIN BACKUP;
    SQL> ALTER TABLESPACE indx BEGIN BACKUP;
    

    すべての表領域をバックアップするには、次のコマンドを使用します。

    SQL> ALTER DATABASE BEGIN BACKUP;
    
  2. オンライン表領域のすべてのファイルをバックアップします。たとえば、LinuxまたはUNIXユーザーは、次のコマンドを実行して、*.dbfという接尾辞を持つデータファイルをバックアップできます。
    % cp $ORACLE_HOME/oradata/trgt/*.dbf /disk2/backup/
    
  3. 表領域のバックアップ・モードを終了します。たとえば、次のように入力します。
    SQL> ALTER TABLESPACE users END BACKUP;
    SQL> ALTER TABLESPACE tools END BACKUP;
    SQL> ALTER TABLESPACE indx END BACKUP;
    

    すべてのデータファイルを一度に処理する場合は、ALTER TABLESPACEのかわりにALTER DATABASEコマンドを使用できます。

    SQL> ALTER DATABASE END BACKUP;
    
  4. 表領域のバックアップのリカバリに必要なREDOを後でメディア・リカバリに使用できるように、オンラインREDOログをアーカイブします。たとえば、次のように入力します。
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
オンライン表領域のシリアル・バックアップ

オンライン・バックアップが必要なすべての表領域を、1つずつバックアップ・モードに設定できます。ALTER TABLESPACE ... BEGIN/END BACKUP文の間の間隔が最小化されるため、シリアル・バックアップ・オプションをお薦めします。データ・ブロック全体がREDOログにコピーされるため、オンライン・バックアップ中は表領域に関してさらにREDO情報が生成されます。

オンライン表領域をシリアルにバックアップする手順

  1. 表領域でオンライン・バックアップの準備をします。たとえば、表領域usersをバックアップ・モードにするには、次のように入力します。
    SQL> ALTER TABLESPACE users BEGIN BACKUP;
    

    この場合は、すべての表領域を同時にバックアップ・モードに設定するALTER DATABASE BEGIN BACKUPは使用しません。オンライン・モードの表領域に関する不要なREDOログ情報が生成されるためです。

  2. 表領域のデータファイルをバックアップします。たとえば、次のように入力します。
    % cp /oracle/oradata/trgt/users01.dbf /d2/users01_'date "+%m_%d_%y"'.dbf
    
  3. 表領域のバックアップ・モードを終了します。たとえば、次のように入力します。
    SQL> ALTER TABLESPACE users END BACKUP;
    
  4. 残りの各表領域で、この手順を繰り返します。
  5. 表領域のバックアップのリカバリに必要なREDOがアーカイブされるように、アーカイブされていないREDOログをアーカイブします。たとえば、次のように入力します。
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

インスタンス障害またはSHUTDOWN ABORT後のバックアップの終了

次の場合には、表領域のバックアップが失敗し、不完全になることがあります。

  • バックアップが完了したが、ユーザーがALTER TABLESPACE ... END BACKUP文を実行していない場合。

  • インスタンス障害またはSHUTDOWN ABORTによってバックアップが中断された場合。

障害からのリカバリが必要なときに、バックアップ・モードのデータファイルをオープンしようとした場合、リカバリ・コマンドが発行されるか、またはデータファイルのバックアップ・モードが終了するまでは、データファイルはオープンされません。

たとえば、起動時に次のようなメッセージが表示される場合があります。

ORA-01113: file 12 needs media recovery
ORA-01110: data file 12: '/oracle/dbs/tbs_41.f'

ユーザーが表領域のオンライン・バックアップを終了しなかったために、複数の表領域のデータファイルでメディア・リカバリが必要であると表示された場合、データベースがマウントされているかぎり、ALTER DATABASE END BACKUP文を実行して、すべてのデータファイルで同時にバックアップ・モードを終了できます。

高可用性が必要な場合およびデータベース管理者(DBA)がデータベースを監視していない場合は、ユーザーの介入を必要とする事態は回避する必要があります。このために、次の内容の障害リカバリ・スクリプトを作成しておくことができます。

  1. データベースをマウントする。
  2. ALTER DATABASE END BACKUP文を実行する。
  3. ALTER DATABASE OPENを実行して、システムが自動的に起動するようにします。

ALTER DATABASE END BACKUPを含む自動化されたクラッシュ・リカバリ・スクリプトは、次の場合に特に有効です。

  • Oracle Real Application Clusters(Oracle RAC)構成内のすべてのノードで障害が発生した場合。

  • コールド・フェイルオーバー・クラスタ(最初のノードで障害が発生した場合に、2番目のノードでデータベースをマウントしてリカバリする必要があるOracle RAC構成ではないクラスタ)内の1つのノードで障害が発生した場合。

また、表領域がバックアップ・モードのときに発生したシステム障害後に、次の手動の方法を使用することもできます。

  • データベースをリカバリし、END BACKUP文を発行せずに済ませる。

  • データベースをマウントし、まだバックアップ・モードになっている各表領域に対してALTER TABLESPACE ... END BACKUP文を実行する。

ALTER DATABASE END BACKUP文を使用したバックアップ・モードの終了

複数の表領域がバックアップ・モードのままになっているときには、ALTER DATABASE END BACKUP文を実行できます。このコマンドの主な目的は、DBAの介入なしに、クラッシュ・リカバリ・スクリプトで障害の発生したシステムを再起動することです。また、次の手順を手動で実行することもできます。

複数の表領域でバックアップ・モードを同時に終了する手順

  1. データベースをマウントしますが、オープンはしません。たとえば、次のように入力します。
    SQL> STARTUP MOUNT
    
  2. この手順を手動で(障害リカバリ・スクリプトの一部としてではなく)実行する場合は、V$BACKUPビューを問い合せて、データベースが再起動される前にバックアップされていた表領域のデータファイルのリストを表示します。
    SQL>  SELECT * FROM V$BACKUP WHERE STATUS = 'ACTIVE';
    FILE#      STATUS             CHANGE#    TIME       CON_ID
    ---------- ------------------ ---------- ---------  -------
            12 ACTIVE                  20863 25-NOV-02        0
            13 ACTIVE                  20863 25-NOV-02        0
            20 ACTIVE                  20863 25-NOV-02        0
     3 rows selected.
    
  3. ALTER DATABASE END BACKUP文を発行し、現在バックアップ・モードになっているすべてのデータファイルでバックアップ・モードを終了します。たとえば、次のように入力します。
    SQL> ALTER DATABASE END BACKUP;
    

    この文を使用できるのは、データベースがマウントされているが、オープンされていない場合のみです。データベースがオープンしている場合には、影響を受ける各表領域またはデータファイルに対して、ALTER TABLESPACE ... END BACKUPまたはALTER DATABASE DATAFILE ... END BACKUPを使用します。

    注意:

    影響を受けるファイルがバックアップからリストアされている場合は、ALTER DATABASE END BACKUPを使用しないでください。

SQL*PlusのRECOVERコマンドを使用したバックアップ・モードの終了

オンライン・バックアップが失敗した場合の対処方法は、ALTER DATABASE END BACKUP文を発行する以外にもあります。つまり、SQL*PlusのRECOVERコマンドを実行することもできます。他のユーザーがバックアップをリストアしているかどうかがわからない場合は、この方法が有効です。他のユーザーが実際にバックアップをリストアしていた場合に、RECOVERコマンドによってバックアップが最新に更新されるためです。ALTER DATABASE END BACKUPまたはALTER TABLESPACE ... END BACKUP文は、ファイルが現行のものであることが確実な場合にのみ実行してください。

注意:

オンライン・バックアップが開始されてから以降に生成されたREDOをスキャンする必要があるため、RECOVERコマンドを使用した方法には時間がかかります。

RECOVERコマンドを使用して表領域のバックアップ・モードを終了する手順

  1. データベースをマウントします。たとえば、次のように入力します。
    SQL> STARTUP MOUNT
    
  2. データベースを通常どおりにリカバリします。たとえば、次のように入力します。
    SQL> RECOVER DATABASE
    
  3. V$BACKUPビューを使用して、アクティブなデータファイルがないことを確認します。
    SQL>  SELECT * FROM V$BACKUP WHERE STATUS = 'ACTIVE';
    
    no rows selected.
    

関連項目:

データベースのリカバリについては、 「ユーザー管理のデータベースのフラッシュバックおよびリカバリの実行」 を参照してください

読取り専用表領域のユーザー管理バックアップの作成

オンラインの読取り専用表領域をバックアップする場合は、オンライン・データファイルをバックアップするのみで実行できます。データベースではデータファイルに対する変更が許可されないため、表領域をバックアップ・モードに設定する必要はありません。

読取り専用表領域のセットが自己完結型の場合には、オペレーティング・システム・コマンドを使用して表領域をバックアップする以外に、トランスポータブル表領域機能を使用して、表領域のメタデータをエクスポートすることもできます。メディア・エラーまたはユーザー・エラー(読取り専用表領域の表を誤って削除するなど)が発生した場合、表領域を元のデータベースに戻すことができます。

関連項目:

表領域のトランスポート方法については、『Oracle Database管理者ガイド』を参照してください。

オープン状態のデータベースのオンラインの読取り専用表領域をバックアップする手順

  1. DBA_TABLESPACESビューを問い合せて、読取り専用の表領域を確認します。たとえば、次の問合せを実行します。
    SELECT TABLESPACE_NAME, STATUS 
    FROM DBA_TABLESPACES
    WHERE STATUS = 'READ ONLY';
    
  2. 読取り専用表領域のバックアップを開始する前に、DBA_DATA_FILESデータ・ディクショナリ・ビューを問い合せて、表領域のすべてのデータファイルを確認します。たとえば、history表領域をバックアップする場合、次の問合せを実行します。
    SELECT TABLESPACE_NAME, FILE_NAME
    FROM SYS.DBA_DATA_FILES
    WHERE TABLESPACE_NAME = 'HISTORY';
     
    TABLESPACE_NAME                   FILE_NAME
    -------------------------------   --------------------
    HISTORY                           /oracle/oradata/trgt/history01.dbf
    HISTORY                           /oracle/oradata/trgt/history02.dbf
    
  3. オペレーティング・システム・コマンドを使用して、読取り専用表領域のオンライン・データファイルをバックアップします。ユーザーによる読取り専用表領域への変更は自動的に防止されるため、表領域をオフラインにしたり、表領域をバックアップ・モードにする必要はありません。次に例を示します。
    % cp $ORACLE_HOME/oradata/trgt/history*.dbf  /disk2/backup/

    注意:

    読取り専用表領域のバックアップをリストアする場合は、表領域をオフラインにし、データファイルをリストアした後、表領域をオンラインにします。読取り専用表領域がバックアップ後に読取り/書込みにされている場合にも、読取り専用表領域のバックアップは使用可能ですが、リストアされたバックアップでリカバリが必要になります。

  4. 必要に応じて、読取り専用表領域のメタデータをエクスポートします。トランスポータブル表領域機能を使用すると、メディア障害またはユーザー・エラーの場合に、データファイルを迅速にリストアし、メタデータをインポートできます。たとえば、次のように、表領域historyのメタデータをエクスポートします。
    % expdp DIRECTORY=dpump_dir1 DUMPFILE=hs.dmp TRANSPORT_TABLESPACES=history 
      LOGFILE=tts.log

    関連項目:

    DBA_DATA_FILESビューおよびDBA_TABLESPACESビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

CDBの表領域のユーザー管理バックアップの作成

「表領域およびデータファイルのユーザー管理バックアップの作成」の項の手順は、次の項で説明する変更を除いて、CDBおよびPDBに当てはまります。

CDBでのオフラインの表領域およびデータファイルのユーザー管理バックアップの作成

「オフラインの表領域およびデータファイルのユーザー管理バックアップの作成」で説明するガイドラインは、CDBおよびPDBの表領域およびデータファイルにも当てはまります。

rootコンテナでオフラインの表領域をバックアップするには、次の手順を実行します。

  1. SQL*Plusを開きます。

  2. 「ターゲットとしてのrootへの接続」の説明に従って、SYSDBAまたはSYSBACKUPシステム権限を持つユーザーとしてrootに接続します。

  3. 「オフラインの表領域およびデータファイルのユーザー管理バックアップの作成」の手順に従います。

PDBのオフラインの表領域をバックアップするには、次の手順を実行します。

  1. SQL*Plusを開きます。
  2. 「ターゲットとしてのPDBへの接続」の説明に従って、SYSDBAまたはSYSBACKUPシステム権限を持つユーザーとしてPDBに接続します。
  3. 「オフラインの表領域およびデータファイルのユーザー管理バックアップの作成」の手順に従います。

CDBおよびPDBでのオンラインの表領域のユーザー管理バックアップの作成

「オンラインの表領域およびデータファイルのユーザー管理バックアップの作成」で説明するガイドラインは、CDBおよびPDBの表領域およびデータファイルにも当てはまります。

rootコンテナでオンラインの表領域をバックアップするには、次の手順を実行します。

  1. SQL*Plusを開きます。

  2. 「ターゲットとしてのrootへの接続」の説明に従って、SYSDBAまたはSYSBACKUPシステム権限を持つユーザーとしてrootに接続します。

  3. 「オンラインの表領域およびデータファイルのユーザー管理バックアップの作成」の手順に従います。

PDBのオンラインの表領域をバックアップするには、次の手順を実行します。

  1. SQL*Plusを開きます。
  2. 「ターゲットとしてのPDBへの接続」の説明に従って、SYSDBAまたはSYSBACKUPシステム権限を持つユーザーとしてPDBに接続します。
  3. 「オンラインの表領域およびデータファイルのユーザー管理バックアップの作成」の手順に従います。

制御ファイルのユーザー管理バックアップの作成

ARCHIVELOGモードで実行中のデータベースの構造変更を行った後で、データベースの制御ファイルをバックアップします。データベースの制御ファイルをバックアップするには、ALTER DATABASEシステム権限が必要です。

この項の内容は、次のとおりです。

制御ファイルのバイナリ・ファイルへのバックアップ

制御ファイルをバックアップする第一の手段は、SQL文を使用してバイナリ・ファイルを生成する方法です。バイナリ・バックアップにはアーカイブ・ログ履歴、読取り専用およびオフライン表領域のオフライン範囲、バックアップ・セットとコピー(RMANを使用する場合)などの追加情報が含まれるため、トレース・ファイル・バックアップよりもバイナリ・バックアップを使用することをお薦めします。COMPATIBLEが10.2以上の場合、制御ファイルのバイナリ・バックアップには、一時ファイル・エントリが含まれます。

構造変更の後に制御ファイルをバックアップする手順

  1. データベースを変更します。たとえば、表領域を作成します。
    CREATE TABLESPACE tbs_1 DATAFILE 'file_1.f' SIZE 10M;
    
  2. 出力バイナリ・ファイルのファイル名を指定して、データベースの制御ファイルをバックアップします。次の例は、/disk1/backup/cf.bakに制御ファイルをバックアップします。
    ALTER DATABASE BACKUP CONTROLFILE TO '/disk1/backup/cf.bak' REUSE;
    

    REUSEを指定すると、新規の制御ファイルで既存の制御ファイルを上書きできます。

制御ファイルのトレース・ファイルへのバックアップ

制御ファイルは、CREATE CONTROLFILE文が含まれるテキスト・ファイルにバックアップできます。トレース・ファイルを編集し、トレース・ファイルの作成時点で現行のものであった制御ファイルに基づいて、新しい制御ファイルを作成するスクリプトを作成することができます。

SQL文でRESETLOGSオプションもNORESETLOGSオプションも指定しなかった場合は、トレース・ファイルにRESETLOGSNORESETLOGSの両方のオプション用の制御ファイルが含まれます。ALTER TABLESPACE ... ADD TEMPFILE文を使用すると、出力に一時ファイル・エントリが含まれます。

NORMALモードでオフラインにされた表領域または読取り専用表領域をリカバリしないように、CREATE CONTROLFILE文を編集してそれらを除外してください。再作成された制御ファイルを使用してデータベースをオープンすると、データベースではこれらの省略されたファイルはMISSINGとしてマークされます。ALTER DATABASE RENAME FILE文を実行すると、それらのファイルを元のファイル名に戻すことができます。

CREATE CONTROLFILE文を含むトレース・ファイルは、DIAGNOSTIC_DEST初期化パラメータに指定されたサブディレクトリに格納されます。CREATE CONTROLFILE文が書き込まれるトレース・ファイルの名前および場所については、データベースのアラート・ログで確認できます。アラート・ログの場所を確認する方法については、『Oracle Database管理者ガイド』を参照してください。

制御ファイルをトレース・ファイルにバックアップする手順

  1. データベースをマウントまたはオープンします。
  2. 次のSQL文を実行します。
    ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

関連項目:

CREATE CONTROLFILE文に含まれる、読取り専用ファイル、NORMALモードでオフライン化されたファイルおよび一時ファイルに関連する特殊な問題については、「再作成された制御ファイルを使用した読取り専用ファイルのリカバリ」を参照してください。

アーカイブREDOログのユーザー管理バックアップの作成

プライマリのアーカイブ場所のディスク領域を節約するために、アーカイブ・ログをテープまたは代替のディスクの場所にバックアップできます。複数の場所にアーカイブするときには、各ログ順序番号の1つのコピーのみバックアップします。

アーカイブREDOログをバックアップする手順

  1. V$ARCHIVED_LOGを問い合せて、データベースから生成されたアーカイブREDOログ・ファイルを確認します。たとえば、次の問合せを実行します。
    SELECT THREAD#,SEQUENCE#,NAME 
    FROM V$ARCHIVED_LOG;
    
  2. オペレーティング・システム・ユーティリティを使用して、各ログ順序番号で1つのコピーをバックアップします。この例では、プライマリのアーカイブ場所からログのバックアップ専用のディスクにすべてのログをバックアップします。
    % cp $ORACLE_HOME/oracle/trgt/arch/* /disk2/backup/arch

    関連項目:

    データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

SUSPENDモードでのユーザー管理バックアップの作成

この項の内容は、次のとおりです。

一時停止/再開機能

サード・パーティ・ツールには、ディスクまたは論理デバイスのセットをミラー化(プライマリ・データの正確な複製を別の場所に保持)し、後でミラーを分割できるものがあります。ミラーの分割では、コピーが分離されるため、それぞれを別々に使用できます。

SUSPEND/RESUMEの機能を使用すると、データベースに対するI/Oを一時停止した後、ミラーを分割し、分割されたミラーのバックアップを作成できます。バックアップ・モード機能を補完するこの機能によって、I/Oが新しく実行されないように、データベースI/Oを一時停止できます。その後、一時停止中のデータベースにアクセスし、I/Oに影響を受けずにバックアップを作成できます。

通常、ミラーの分割によるバックアップを作成するためにSUSPEND/RESUMEを使用する必要はありませんが、使用しているシステムで、ボリュームを分割する前にデータベース・キャッシュの使用済バッファを排除しておく必要がある場合には、このコマンドが必要になります。 RAIDデバイスの中には、分割操作の実行中に書込みを一時停止できるものがあります。使用しているシステムでこの機能を使用できるかどうかは、RAIDのベンダーに確認してください。

ALTER SYSTEM SUSPEND文は、データファイル・ヘッダー、データファイルおよび制御ファイルに対するI/Oを停止して、データベースを一時停止します。データベースが一時停止すると、既存のすべてのI/O操作は完了できますが、データベースに対する新規のI/Oアクセスの試行はキューされます。

ALTER SYSTEM SUSPEND文およびALTER SYSTEM RESUME文は、インスタンスのみではなく、データベースに対して実行されます。ALTER SYSTEM SUSPEND文がOracle RAC構成中の1つのシステムで入力された場合は、内部のロッキング・メカニズムによって全インスタンスに停止要求が伝播され、クラスタ内のすべてのアクティブなインスタンスでI/O操作が一時停止されます。

一時停止中のデータベースのバックアップの作成

データベースが正常に一時停止した後、ディスクにデータベースをバックアップするか、ミラー化を解除できます。データベースを一時停止してもI/Oがすぐに終了されるとはかぎらないため、ALTER SYSTEM SUSPEND文の前にBEGIN BACKUP文を使用して、表領域をバックアップ・モードにすることをお薦めします。

分割されたミラーをバックアップするには、従来のユーザー管理バックアップ方式を使用する必要があります。データファイル・ヘッダーの読取りが必要になるため、RMANはデータベースのバックアップまたはコピーを作成できません。データベースのバックアップが終了するか、ミラーを復元した後、ALTER SYSTEM RESUME文を使用して、通常のデータベース操作を再開できます。

ミラーを分割せずに一時停止中のデータベースをバックアップすると、バックアップ中はデータベースにアクセスできなくなるため、データベースが長期間停止する可能性があります。ミラーを分割してバックアップを実行すると、停止は短時間で済みます。停止時間は、フラッシュするキャッシュのサイズ、データファイルの数、およびミラー化の解除に必要な時間によって異なります。

SUSPEND/RESUME機能には次の制限があります。

  • Oracle RAC構成では、オリジナル・ノードの一時停止中に新規インスタンスを起動できません。

  • ALTER SYSTEM SUSPEND文またはALTER SYSTEM RESUME文からはチェックポイントは開始されません。

  • データベースの一時停止中は、IMMEDIATENORMALまたはTRANSACTIONALオプションを指定してSHUTDOWNコマンドを発行できません。

  • 一時停止中のデータベースに対してSHUTDOWN ABORTを発行すると、データベースが再度アクティブになります。この操作により、メディア・リカバリまたは障害リカバリが無応答状態になるのを回避できます。

SUSPENDモードでミラーの分割によるバックアップを作成する手順

  1. データベースの表領域をバックアップ・モードにします。たとえば、表領域usersをバックアップ・モードにするには、次のように入力します。
    ALTER TABLESPACE users BEGIN BACKUP;
    

    データベースのすべての表領域をバックアップする場合は、かわりに次のコマンドを使用できます。

    ALTER DATABASE BEGIN BACKUP;

    注意:

    表領域をバックアップ・モードに設定する代替方法としてALTER SYSTEM SUSPEND文を使用しないでください。

  2. ミラー化システムで、ディスクの書込み中にミラーの分割に問題が発生する場合には、データベースを一時停止します。たとえば、次の文を発行します。
    ALTER SYSTEM SUSPEND;
    
  3. V$INSTANCEビューを問い合せて、データベースが一時停止されていることを確認します。次に例を示します。
    SELECT DATABASE_STATUS FROM V$INSTANCE;
    
    DATABASE_STATUS 
    ----------------- 
    SUSPENDED 
    
  4. オペレーティング・システムまたはハードウェア・レベルでミラーを分割します。
  5. データベースの一時停止を終了します。たとえば、次の文を発行します。
    ALTER SYSTEM RESUME;
    
  6. V$INSTANCEビューを問い合せて、データベースがアクティブであることを確認します。たとえば、次のように入力します。
    SELECT DATABASE_STATUS FROM V$INSTANCE;
    
    DATABASE_STATUS 
    ----------------- 
    ACTIVE 
    
  7. 指定した表領域のバックアップ・モードを終了します。たとえば、表領域usersのバックアップ・モードを終了するには、次の文を入力します。
    ALTER TABLESPACE users END BACKUP;
    
  8. 通常のバックアップの場合と同様に、制御ファイルをコピーして、オンラインREDOログをアーカイブします。

    関連項目:

RAWデバイスへのユーザー管理バックアップの作成

RAWデバイスとは、ファイル・システムを持たないディスクまたはパーティションです。RAWデバイスに保管できるファイルは1つのみです。RAWデバイスにファイルをバックアップする場合は、オペレーティング・システム固有の問題が発生します。後続の項では、UNIX、LinuxおよびWindowsでのこれらの問題の一部について説明します。

この項の内容は、次のとおりです。

LinuxおよびUNIXでのRAWデバイスへのバックアップ

RAWデバイスとの間でバックアップを行う場合は、LinuxおよびUNIXのddコマンドが最も一般的なバックアップ・ユーティリティになります。このユーティリティの詳細は、オペレーティング・システムのマニュアルを参照してください。

ddを効率的に使用するには、ご使用のデータベースに基づいて適切なオプションを指定する必要があります。表29-1に、ddに使用するオプションに影響を及ぼすデータベースの詳細を示します。

表29-1 ddの使用に重要なデータベースの詳細

データ 説明

ブロック・サイズ

ddでデータのコピーに使用するバッファのサイズを指定できます。たとえば、ddで8KB単位または64KB単位でデータをコピーするように指定できます。ddのブロック・サイズは、Oracleのブロック・サイズまたはオペレーティング・システムのブロック・サイズに対応している必要はありません。これは、コピーを行うときにddでのみ使用されるバッファのサイズです。

RAWオフセット

システムによっては、RAWデバイス上のファイルの最初の部分が、オペレーティング・システムの使用のために確保されていることがあります。この記憶領域をRAWオフセットと呼びます。Oracle Databaseでは、これらのバイトをバックアップまたはリストアしません。

Oracle Databaseブロック0のサイズ

すべてのOracle Databaseファイルの最初の部分には、オペレーティング・システム固有のコードによって、ブロック0(ゼロ)と呼ばれるOracleブロックが配置されます。Oracle汎用コードはこのブロックを認識しませんが、このブロックは、オペレーティング・システム上でファイルのサイズに含められます。一般的にこのブロックは、ファイル中の他のOracleブロックと同じサイズになります。

表29-1の情報を使用して、表29-2に示すddオプションを設定できます。

表29-2 ddコマンドのオプション

オプション 説明

if

入力ファイル、つまり読み込むファイルの名前。

of

出力ファイル、つまり書き出すファイルの名前。

bs

ddでデータのコピーに使用されるバッファ・サイズ。

skip

RAWオフセットが存在する場合に、入力RAWデバイスでスキップするddバッファの数。たとえば、64KBのRAWオフセットを持つRAWデバイス上のファイルをバックアップする場合、ddバッファ・サイズが8KBのときは、skip=8と指定すると、64KBのオフセットからコピーを開始できます。

seek

RAWオフセットが存在する場合に、出力RAWデバイスでスキップするddバッファの数。たとえば、64KBのRAWオフセットを持つRAWデバイス上にファイルをバックアップする場合、ddバッファ・サイズが8KBのときは、skip=8と指定すると、64KBのオフセットからコピーを開始できます。

count

ddでコピーする、入力RAWデバイス上のブロックの数。RAWデバイスからファイル・システムにコピーするときには、コピーする正確なブロック数を指定するのが最良です。そうでない場合、Oracleデータファイルで使用されない、RAWボリュームの最後の余分な領域がファイル・システムにコピーされることになります。

入力ファイルの合計サイズにブロック0(ゼロ)を必ず含めてください。たとえば、ddブロック・サイズが8KBのとき、30720KBのデータファイルをバックアップする場合は、count=3841と設定できます。countにこの値を指定すると、実際には30728KBがバックアップされます。追加の8KBはOracleブロック0(ゼロ)用です。

RAWデバイスはバックアップの入力または出力デバイスに使用できるため、4つのバックアップ・シナリオを想定できます。ddで選択できるオプションは、表29-3に示すように、どのシナリオを選択するかによって異なります。

表29-3 ddバックアップのシナリオ

バックアップ元 バックアップ先 ddコマンドで指定されるオプション

RAWデバイス

RAWデバイス

ifofbsskipseekcount

RAWデバイス

ファイル・システム

ifofbsskipcount

ファイル・システム

RAWデバイス

ifofbsseek

ファイル・システム

ファイル・システム

ifofbs

LinuxおよびUNIXでのddユーティリティを使用したバックアップの例

この項で示すddユーティリティの使用方法の例では、次のように想定しています。

  • 30720KBのデータファイルをバックアップします。

  • データファイルの最初には8KBのブロック0(ゼロ)があります。

  • RAWオフセットは64KBです。

  • コピーにRAWデバイスが関係するときには、ddブロック・サイズを8KBに設定します。

次の例では、1つのRAWデバイスから別のRAWデバイスにバックアップします。

% dd if=/dev/rsd1b of=/dev/rsd2b bs=8k skip=8 seek=8 count=3841

次の例では、RAWデバイスからファイル・システムにバックアップします。

% dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841

次の例では、ファイル・システムからRAWデバイスにバックアップします。

% dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8

次の例では、ファイル・システムからファイル・システムにバックアップし、ブロック・サイズに大きい値を設定してI/Oパフォーマンスを高めます。

% dd if=/oracle/dbs/df1.dbf of=/backup/df1.dbf bs=1024k

WindowsでのRAWデバイスへのバックアップ

WindowsはLinuxおよびUNIXと同じようにRAWディスク・パーティションをサポートするため、データファイル、オンライン・ログおよび制御ファイルをこの中に格納できます。 各RAWパーティションにはドライブ文字または物理ドライブ番号が割り当てられます。ファイル・システムは含まれません。LinuxおよびUNIXの場合と同じように、Windowsでも各RAWパーティションは1つのファイルにマップされます。

Windowsでは、Oracleファイルのネーミング規則はLinuxおよびUNIXの場合と異なります。Windowsの場合、RAWデータファイル名は次のような形式になります。

\\.\drive_letter:
\\.\PHYSICALDRIVEdrive_number

たとえば、次の名前はRAWファイル名として使用できます。

\\.\G:
\\.\PHYSICALDRIVE3

RAWデータファイルのユーザー管理バックアップを作成する手順は、Windowsで提供されるcopy.exeまたはntbackup.exeユーティリティのかわりにOracleのOCOPYユーティリティを使用することを除いて、Windowsファイル・システムでのファイルのコピーと基本的に同じです。OCOPYは64ビットのファイルI/O、物理RAWドライブおよびRAWファイルをサポートします。OCOPYユーティリティはテープに直接バックアップできません。

OCOPYのオンライン・マニュアルを表示するには、WindowsプロンプトにOCOPYとのみ入力します。出力例を次に示します。

Usage of OCOPY:
     ocopy from_file [to_file [a | size_1 [size_n]]]
     ocopy -b from_file to_drive
     ocopy -r from_drive to_dir

表29-4に、OCOPYの重要なオプションを示します。

表29-4 OCOPYのオプション

オプション 処理

b

入力ファイルを複数の出力ファイルに分割します。このオプションは、入力ファイルよりも小さいデバイスにバックアップする場合に有効です。

r

複数の入力ファイルを組み合せて、1つの出力ファイルに書き込みます。このオプションは、-bオプションを指定して作成したバックアップをリストアする場合に有効です。

OCOPYを使用したバックアップの例

この例では、次のように想定しています。

  • データファイル12はRAWパーティション\\.\G:にマウントされています。

  • C:ドライブにファイル・システムをマウントしています。

  • データベースはオープンしています。

RAWパーティション\\.\G:上のデータファイルをローカル・ファイル・システムにバックアップするには、データファイル12をバックアップ・モードにした後で、プロンプトで次のコマンドを実行します。

OCOPY "\\.G:" C:\backup\datafile12.bak

OCOPYの-bおよび-rオプションの指定の例

この例では、次のように想定しています。

  • \\.\G:はデータファイル7を含むRAWパーティションです。

  • E:ドライブは取り外し可能なディスク・ドライブです。

  • データベースはオープンしています。

データファイルをドライブE:にバックアップするには、データファイル7をバックアップ・モードにした後で、Windowsプロンプトで次のコマンドを実行します。

# first argument is file name, second argument is drive
OCOPY -b "\\.\G:" E:\

ドライブE:が一杯になると、別のディスクを使用できます。この方法で、データファイル7のバックアップを複数のファイルに分割できます。

同様に、バックアップをリストアするときには、データファイル7を含む表領域をオフラインにし、次のコマンドを実行します。

# first argument is drive, second argument is directory
OCOPY -r E:\ "\\.\G:"

サード・パーティのスナップショット・テクノロジを使用したバックアップの作成

ストレージ・スナップショットの最適化を使用して、データベースをバックアップ・モードにすることなく、データベースのサード・パーティのスナップショットを取得できます。スナップショットは、この項で説明する要件に準拠する必要があります。

ストレージ・スナップショットの最適化には次の利点があります。

  • データベースをバックアップ・モードにすることに関連する複雑性やオーバーヘッドが削減されます。

  • RECOVER ... SNAPSHOT TIMEコマンドを使用して、1つの手順でリカバリを実行します。現在の時間またはスナップショット取得後の任意の時点のいずれかにリカバリできます。

ストレージ・スナップショット最適化を使用するには、サード・パーティのスナップショット・テクノロジが、次の要件に準拠する必要があります。

  • データベースは、スナップショットの間、クラッシュ一貫性が保持される。

  • スナップショットは、各ファイルの書込み順序を保持する。

  • スナップショット・テクノロジによって、スナップショットが完了した時間が格納される。

ベンダーがこれらの要件に準拠できない場合、BEGIN BACKUP句にALTER DATABASEまたはALTER TABLESPACE文を使用して、データファイルをバックアップ・モードにする必要があります。データファイルは、スナップショットを作成する直前にバックアップ・モードにしてください。表領域がバックアップ・モードに設定されている場合、データベースは、ブロックを変更する前に、ブロック全体の変更前のイメージをREDOストリームに書き込みます。データベースは、ブロックに対する変更をオンラインREDOログに記録もします。また、バックアップ・モードでは、ファイルがバックアップ・モードから削除されるまで、データファイル・チェックポイントがフリーズされます。Oracle Databaseでは、サード・パーティのバックアップ・ツールでデータ・ブロックのコピーの前にファイル・ヘッダーがコピーされることを保証できないため、このようなセーフガードが実行されます。スナップショットの作成後すぐに、ALTER DATABASEまたはALTER TABLESPACEコマンドにEND BACKUP句を使用して、バックアップ・モードからデータファイルを戻します。バックアップ・モードの終了は、スナップショットがバックアップ・メディアに実際にコピーされるまで待つ必要はありません。

Volume Shadow Copy Service(VSS)は、アプリケーションでシャドウ・コピーと呼ばれる一貫性のあるスナップショットの作成を可能にするWindows APIのセットです。Oracle VSSライターは、Windowsシステム上でのサービスとして実行され、VSS対応アプリケーションと統合されます。これらのアプリケーションを使用すると、Oracleインスタンスによって管理されているデータベース・ファイルのスナップショットを作成できます。たとえば、Oracle Databaseを読取り/書込みでオープンしている場合は、そのOracle Databaseデータベースのシャドウ・コピーを作成できます。

関連項目:

VSS対応アプリケーションでデータベースをバックアップおよびリカバリする方法については、『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』を参照してください。

ユーザー管理データファイル・バックアップの検証

バックアップがリカバリに使用可能なものであることを確認するために、バックアップを定期的に検証する必要があります。

この項の内容は、次のとおりです。

データファイル・バックアップのリストアのテスト

データファイル・バックアップの有効性を確認する最適な方法は、別のホストにバックアップをリストアして、必要に応じてメディア・リカバリを実行し、データベースのオープンを試行する方法です。このオプションでは、リストア手順のために別のホストを使用できる必要があります。

関連項目:

SQL*Plusでのファイルのリカバリ方法については、「データベースの完全リカバリの実行」を参照してください。

DBVERIFYユーティリティの実行

DBVERIFYプログラムは、オフライン・データファイルに対して物理的なデータ構造の整合性チェックを実行する、外部のコマンドライン・ユーティリティです。DBVERIFYは、リストア前にデータファイルのユーザー管理バックアップが有効かどうかを確認するために使用したり、データ破損の問題が発生した場合の診断ツールとして使用します。

DBVERIFYの名前と位置はオペレーティング・システムごとに異なります。たとえば、LinuxまたはUNIX上でデータファイルusers01.dbfの整合性チェックを実行する場合は、次のようにdbvコマンドを実行します。

% dbv file=users01.dbf

dbvの出力例を次に示します。

DBVERIFY - Verification starting : FILE = users01.dbf


DBVERIFY - Verification complete

Total Pages Examined         : 250
Total Pages Processed (Data) : 1
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 2
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 247
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0

関連項目:

DBVERIFYについては、『Oracle Databaseユーティリティ』を参照してください。