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

前
次

22 RMANバックアップからの表および表パーティションのリカバリ

この章では、表および表パーティションを指定された時点までリカバリする方法について説明します。この章の内容は次のとおりです。

RMANバックアップからの表および表パーティションのリカバリの概要

この項では、RMANバックアップから表および表パーティションをリカバリする目的と基本概念について説明します。

注意:

指定された時点まで表をリカバリする方法は、OracleフラッシュバックおよびTSPITRなど、他にもあります。これらの方法が有用な状況およびこれらの方法を使用して表をリカバリする方法の詳細は、次を参照してください。

RMANバックアップからの表および表パーティションのリカバリの目的

RMANでは、1つまたは複数の表または表パーティションを、他のデータベース・オブジェクトに影響することなく、指定された時点までリカバリすることができます。以前作成されたRMANバックアップを使用して、表および表パーティションを指定された時点までリカバリすることができます。

RMANバックアップからの表および表パーティションのリカバリは、次の場合に有用です。

  • ごく少数の表を特定の時点までリカバリする必要がある。この場合、TSPITRは、表領域内のすべてのオブジェクトを指定された時点まで戻すため、最適なソリューションでありません。

  • 論理的に破損したか、削除および消去された表をリカバリする必要がある。

  • 目的の時点が使用可能なUNDOより古いため、フラッシュバック表が使用できない。

  • DDL操作によって表の構造を変更した後に失われたデータをリカバリする必要がある。目的の時点と現行の時間の間の表でDDLが実行されたため、フラッシュバック表を使用できません。フラッシュバック表は、表の切捨て操作などの構造変更の時点以前に表を巻き戻すことはできません。

表および表パーティションのリカバリに必要なバックアップ

表または表パーティションのリカバリには、その表または表パーティションを含むUNDO、SYSTEMSYSAUXおよび表領域の完全バックアップが必要になります。

表をリカバリするには、表の従属オブジェクトを含むすべてのパーティションがリカバリ・セットに含まれている必要があります。表領域tbs1内の表の索引またはパーティションが表領域tbs2に含まれているとすると、リカバリ・セットに表領域tbs2も含まれる場合にのみ、その表のリカバリが可能になります。表をリカバリするには、表の従属オブジェクトを含むすべてのパーティションがリカバリ・セットに含まれている必要があります。

PDB内の表をリカバリするには、次に示すバックアップが必要になります。

  • ルートのSYSTEMSYSAUXおよびUNDO表領域

  • 表または表パーティションが含まれているシード・データベース(PDB$SEED)とPDBのSYSTEM表領域とSYSAUX表領域

  • 表またはパーティションが含まれている表領域

RMANバックアップからの表および表パーティションのリカバリの基本概念

RMANは、RECOVERコマンドを使用して、表または表パーティションを指定された時点までリカバリします。

表および表パーティションをRMANバックアップからリカバリするには、次の情報を指定する必要があります。

  • リカバリする必要がある表または表パーティションの名前

  • 表または表パーティションをリカバリする必要がある時点

  • リカバリされた表または表パーティションを、ターゲット・データベースにインポートする必要があるかどうか

RMANは、この情報を使用して、指定された表または表パーティションのリカバリ・プロセスを自動化します。RMANは、リカバリ・プロセスの一部として補助データベースを作成し、これは表または表パーティションを指定された時点までリカバリするために使用されます。

リカバリ・プロセスを自動化するためにRMANで使用される手順については、「表および表パーティションをリカバリするためにRMANが実行する手順」を参照してください。

表および表パーティションをリカバリするためにRMANが実行する手順

RMANバックアップから表または表パーティションをリカバリするプロセスを自動化する間、RMANは次の手順を実行します。

  1. リカバリに指定された時点に基づき、リカバリする必要がある表または表パーティションを含むバックアップはどれかを判断します。
  2. ターゲット・ホスト上で補助データベースを作成し、指定された表または表パーティションを、指定された時点まで、この補助データベースにリカバリします。

    リカバリされたデータファイルが格納されている補助データベースのターゲット・ホスト上の場所を指定できます。

  3. リカバリされた表または表パーティションを含むデータ・ポンプ・エクスポート・ダンプ・ファイルを作成します。

    リカバリされた表または表パーティションのメタデータを格納するために使用されるエクスポート・ダンプ・ファイルの名前と場所を指定できます。

  4. (オプション)ターゲット・インスタンスにデータ・ポンプ・エクスポート・ダンプ・ファイルをインポートします。

    リカバリされた表または表パーティションを含むエクスポート・ダンプ・ファイルを、ターゲット・データベースにインポートしないように選択することができます。エクスポート・ダンプ・ファイルをリカバリ・プロセスの一環としてインポートしない場合は、データ・ポンプ・インポート・ユーティリティを使用し、後から手動でインポートする必要があります。

  5. (オプション)リカバリされた表または表パーティションの名前をターゲット・データベースで変更します。

RMAN表のリカバリ時の補助データベース・ファイルの格納場所について

指定された表または表パーティションをリカバリするために、RMANではリカバリ・プロセス中に使用する補助データベースを作成します。次のいずれかの方法を使用して、補助データベースのデータファイルの格納に使用する、ターゲット・ホスト上の場所を指定します。

  • RECOVERコマンドのAUXILIARY DESTINATION

  • SET NEWNAMEコマンド

    RECOVERコマンドおよびデータファイルの名前を変更する必要なSET NEWNAMEを含むRUNブロックを使用します。

    関連項目:

    これらのコマンドおよび句の詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

補助データベースのデータファイルの場所は、AUXILIARY DESTINATION句を使用して指定することをお薦めします。SET NEWNAMEコマンドを使用すると、リカバリ・プロセスに必要なデータファイルの名前を1つ省略しただけで、表または表パーティションをリカバリすることができません。

RMAN表のリカバリ時に使用されるデータ・ポンプ・エクスポート・ダンプ・ファイルについて

指定された時点まで表または表パーティションを補助データベースにリカバリした後、RMANは、リカバリされたオブジェクトを含むデータ・ポンプ・エクスポート・ダンプ・ファイルを作成します。このダンプ・ファイルの名前と場所を指定するか、またはRMANでデフォルトの名前と場所を使用することもできます。

データ・ポンプ・エクスポート・ダンプ・ファイルが作成される場所は、RECOVERコマンドのDATAPUMP DESTINATION句を使用して指定します。通常は、ダンプ・ファイルを格納するオペレーティング・システム・ディレクトリのパスにします。この句を省略すると、ダンプ・ファイルはAUXILIARY DESTINATIONパラメータで指定された場所に格納されます。AUXILIARY DESTINATIONを指定していない場合は、オペレーティング・システム固有のデフォルトの場所に格納されます。Linuxでは、このデフォルトの場所は$ORACLE_HOME/dbsです。Windowsでは、デフォルトの場所は%ORACLE_HOME\databaseです。

データ・ポンプ・エクスポート・ダンプ・ファイルの名前は、RECOVERコマンドのDUMP FILE句を使用して指定します。この句を省略すると、RMANはダンプ・ファイルにデフォルトのオペレーティング・システム特定の名前を使用します。LinuxおよびWindowsでは、デフォルトのダンプ・ファイル名はtspitr_SID-of-clone_n.dmpであり、SID-of-cloneは、リカバリを実行するためにRMANによって作成された補助データベースのOracle SIDで、nはランダムに生成された数字です。ダンプ・ファイルを作成する必要がある場所に、DUMP FILEで指定した名前のファイルがすでに存在する場合、リカバリ操作は失敗します。

リカバリされた表および表パーティションのターゲット・データベースへのインポートについて

デフォルトでは、RMANは、リカバリされた表または表パーティション(エクスポート・ダンプ・ファイルに格納される)をターゲット・データベースにインポートします。ただし、RESTOREコマンドのNOTABLEIMPORT句を使用すると、リカバリされた表または表パーティションをインポートしないように選択できます。

NOTABLEIMPORTを使用すると、RMANは指定された時点までリカバリし、そのエクスポート・ダンプ・ファイルを作成します。ただし、このダンプ・ファイルは、ターゲット・データベースにインポートされません。このダンプ・ファイルは、必要なときに、データ・ポンプ・インポート・ユーティリティを使用してターゲット・データベースへ手動でインポートする必要があります。

インポート操作中にエラーが発生すると、RMANは、表のリカバリの最後にエクスポート・ダンプ・ファイルを削除しません。これにより、ダンプ・ファイルを手動でインポートできます。

RMANのリカバリ時にリカバリされた表および表パーティションの名前変更について

表または表パーティションをリカバリする場合、ターゲット・データベースへのインポート後にリカバリされたオブジェクトの名前を変更できます。REMAP TABLE句を使用すると、リカバリされた表または表パーティションの名前をターゲット・データベースで変更できます。リカバリされた表または表パーティションをこれらのオブジェクトの元の場所とは別の表領域にインポートするには、RECOVERコマンドのREMAP TABLESPACE句を使用します。リカバリされる表または表パーティションのみが再マップされ、既存のオブジェクトは変更されません。

リカバリした表と同じ名前の表がターゲット・データベースに存在する場合は、REMAP TABLE句を使用してリカバリした表の名前を変更する必要があることを示すエラー・メッセージがRMANによって表示されます。

表パーティションをリカバリする場合、各表パーティションは別々の表にリカバリされます。REMAP TABLE句を使用して、リカバリされた各パーティションがインポートされる必要のある表の名前を指定します。表の名前を明示的に指定しない場合、RMANは、リカバリされた表の名前とパーティション名を連結して表の名前を生成します。名前は、tablename_partitionnameの書式で生成されます。この名前がターゲット・データベースに存在する場合は、RMANは、その名前に_1を追加します。この名前も存在する場合、RMANは、その名前に_2を追加します(以降同様)。

注意:

REMAPオプションを使用すると、名前付きの制約および索引はインポートされません。これは既存の表と名前が競合するのを避けるためです。

RMANバックアップからの表および表パーティションのリカバリの制限

RECOVERコマンドを使用して、RMANバックアップに含まれる表または表パーティションをリカバリする場合、次の制限があります。

  • SYSスキーマに属する表および表パーティションは、リカバリできません。

  • SYSTEM表領域およびSYSAUX表領域の表および表パーティションは、リカバリできません。

  • スタンバイ・データベース上の表および表パーティションは、リカバリできません。

  • NOT NULL制約を使用して命名された表は、REMAPオプションではリカバリできません。

表および表パーティションのリカバリの準備

表または表パーティションをRMANバックアップからリカバリするための準備には、次の手順があります。

これらに加え、「RMANバックアップからの表および表パーティションのリカバリの制限」に記載された制限を確認します。

「RMANバックアップからの表および表パーティションのリカバリの前提条件」

  • ターゲット・データベースは、読取り/書込みモードである必要があります。

  • ターゲット・データベースは、ARCHIVELOGモードである必要があります。

  • リカバリする必要がある時点の表または表パーティションが存在したときの、これらのRMANバックアップが必要です。

  • 単一の表パーティションをリカバリするには、ターゲット・データベースのCOMPATIBLE初期化パラメータに、11.1.0以上を設定しておく必要があります。

表または表パーティションをリカバリする必要がある時点の判断

表または表パーティションをリカバリする必要がある正確な時点を確認することは、非常に重要です。RMANは、次のいずれかを使用して、必要な時点を指定することができます。

  • SCN

    SCNによって指定された時点での表または表パーティションの状態に、これらをリカバリします。

  • 時刻

    指定された時刻での表または表パーティションの状態に、これらをリカバリします。環境変数NLS_LANGおよびNLS_DATE_FORMATで指定した日付書式を使用します。SYSDATEなどのデータ定数(たとえばSYSDATE-30)を使用して、時間を指定することもできます。

  • 順序番号

    ログ順序番号とスレッド数によって指定された時点での表または表パーティションの状態に、これらをリカバリします。

表および表パーティションのリカバリ

この項では、非CDBの表または表パーティションを指定された時点までリカバリするために必要な手順について説明します。

表または表パーティションを指定された時点までリカバリする手順

  1. 「表および表パーティションのリカバリの準備」に記載された計画タスクを実行します。
  2. RMANを起動し、TARGETとしてターゲット・データベースに接続します。SYSBACKUP権限またはSYSDBA権限を持つユーザーとして接続する必要があります。
  3. RECOVER TABLEコマンドを使用して指定された時点まで、選択された表または表パーティションをリカバリします。AUXILIARY DESTINATION句と、リカバリする時点を指定するUNTIL TIMEUNTIL SCNまたはUNTIL SEQUENCEのいずれかの句を使用する必要があります。

    RECOVERコマンドに、次の句を追加して使用することができます。

関連項目:

表および表パーティションのリカバリの例は、次を参照してください。

PDBの表および表パーティションのリカバリ

RMANでは、プラガブル・データベース(PDB)内の1つまたは複数の表または表パーティションを、そのPDB内の他のデータベース・オブジェクトに影響することなく、指定された時点までリカバリできます。PDBの表または表パーティションのリカバリに使用する手順は、非CDBで使用するものと同様ですが、この項で説明する相違点があります。

PDBの表または表パーティションをリカバリする手順

  1. 「表および表パーティションのリカバリの準備」に記載された計画タスクを実行します。
  2. RMANを開始し、SYSDBAまたはSYSBACKUP権限を持つユーザーとしてrootに接続します。
  3. RECOVER TABLE ... OF PLUGGABLE DATABASEコマンドを使用して指定された時点まで、表または表パーティションをリカバリします。

    AUXILIARY DESTINATION句とUNITL TIMEUNTIL SCNまたはUNTIL SEQUENCEのいずれかの句を使用する必要があります。

    また、要件に応じて、DUMP FILEDATAPUMP DESTINATIONNOTABLEIMPORTREMAP TABLEまたはREMAP TABLESPACEの1つ以上の句を使用する必要がある場合があります。

    関連項目:

    次のコマンドは、PDB HR_PDBの表PDB_EMPを、現在の日付から4日前の状態にリカバリします。HRは、表を含むスキーマの名前です。リカバリされた表の名前は、EMP_RECVRに変更されます。

    RECOVER TABLE HR.PDB_EMP OF PLUGGABLE DATABASE HR_PDB
    UNTIL TIME 'SYSDATE-4'
    AUXILIARY DESTINATION '/tmp/backups'
    REMAP TABLE 'HR'.'PDB_EMP':'EMP_RECVR';
    

例: RMANバックアップからの表および表パーティションのリカバリ

この項では、RMANバックアップを使用して、表および表パーティションを指定された時点までリカバリする方法に関する次の例を示します。

例: 指定された時点への表のリカバリ

この例では、2つの表EMPDEPTを、論理的破損が発生する前である、2日前の状態にリカバリするとします。ただし、これらの表をターゲット・データベースにインポートする際、RMANは使用しません。RMANは、エクスポート・ダンプ・ファイルemp_dept_exp_dump.datを、/tmp/recover/dumpfilesに作成するのみです。NOTABLEIMPORTの使用は、これらの表がターゲット・データベースにインポートされないことを意味します。これらの表は、データ・ポンプ・インポート・ユーティリティを使用して、必要に応じてインポートできます。リカバリ・プロセス中に使用される補助の宛先は、/tmp/oracle/recoverです。

EMPDEPTを、ターゲット・データベースにインポートせずにリカバリするには、次の手順を実行します。

  1. 「表および表パーティションのリカバリの準備」に記載された計画タスクを実行します。

    この例では、SYSDATEを使用する式で指定された時点に、表をリカバリする必要があります。ただしリカバリされた表は、ターゲット・データベースにインポートしません。

  2. RMANセッションを開始し、TARGETとしてターゲット・データベースに接続します。
  3. RECOVERコマンドで、DATAPUMP DESTINATIONDUMP FILEREMAP TABLEおよびNOTABLEIMPORTの句を使用し、表EMPDEPTをリカバリします。

    次のRECOVERコマンドは、EMP表とDEPT表をリカバリします。

    RECOVER TABLE SCOTT.EMP, SCOTT.DEPT
        UNTIL TIME 'SYSDATE-1'
        AUXILIARY DESTINATION '/tmp/oracle/recover'
        DATAPUMP DESTINATION '/tmp/recover/dumpfiles'
        DUMP FILE 'emp_dept_exp_dump.dat'
        NOTABLEIMPORT;
    

関連項目:

指定された時点への表のリカバリに関するその他の例は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

例: 指定されたログ順序番号への表パーティションのリカバリ

この例では、スキーマshの表salesに、次のパーティションsales_1998sales_1999sales_2000およびsales_2001が含まれています。この表は、sales_ts表領域に格納されています。2つのパーティションsales_1998sales_1999を、REDOログ順序番号で指定された時点までリカバリする必要があります。リカバリされた表は、自動的にターゲット・データベースにインポートされる必要があり、表領域SALES_PRE_2000_TSにマップされる必要があります。

パーティションsales_1998およびsales_1999を指定されたログ順序番号までリカバリする手順

  1. 「表および表パーティションのリカバリの準備」に記載された計画タスクを実行します。

    この例では、2つの表パーティションを、指定されたログ順序番号までリカバリした後、これらのパーティションをターゲット・データベースにインポートする必要があります。

  2. RMANセッションを開始し、TARGETとしてターゲット・データベースに接続します。
  3. 次のRECOVERコマンドにREMAP TABLE句とREMAP TABLESPACE句を使用して、パーティションをリカバリします。
    RECOVER TABLE SH.SALES:SALES_1998, SH.SALES:SALES_1999
        UNTIL SEQUENCE 354
        AUXILIARY DESTINATION '/tmp/oracle/recover'
        REMAP TABLE 'SH'.'SALES':'SALES_1998':'HISTORIC_SALES_1998',
                  'SH'.'SALES':'SALES_1999':'HISTORIC_SALES_1999' 
        REMAP TABLESPACE 'SALES_TS':'SALES_PRE_2000_TS';
     

    この場合、指定された表パーティションhistoric_sales_1998historic_sales_1999は、別の表である、ターゲット・データベースのsales_pre_2000_ts表領域にインポートされます。REMAP TABLE句は、インポートされた表に使用される名前を指定します。リカバリ・プロセス中に使用される補助の宛先は、/tmp/oracle/recoverです。

    REMAP TABLE句を省略すると、RMANはインポートされた表にデフォルトの名前を使用します。名前は、元の表名とパーティション名の組合せです。