例: PDBのリストアおよびリカバリ

Oracle Database 12cリリース1で導入されたマルチテナント・アーキテクチャを使用すると、ユーザーが作成したゼロ(0)個以上のプラガブル・データベース(PDB)を含むマルチテナント・コンテナ・データベース(CDB)としてOracle Databaseを機能させることができます。Oracle Database 12cより前のOracleデータベースはすべて非CDBです。

CDBには、ルート、シード、ユーザーが作成したPDBなどのコンポーネントが含まれます。ルートには、共通ユーザーおよびOracle提供のメタデータ(Oracle提供のパッケージのソース・コードなど)が格納されます。シードは、新しいPDBの作成に使用できるテンプレートです。PDBは、Oracle Netクライアントに非CDBとして表示されるスキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトのポータブル・コレクションです。

この項では、PDBの様々なリストアおよびリカバリ・シナリオについて説明します。PDBのリストアおよびリカバリのステップは、非CDBのリストアおよびリカバリ操作で使用するステップと似ています。この項には次の例が含まれます:

PDB全体の完全リカバリの実行

この例では、保護されたデータベース内のPDBの完全リカバリを実行する方法を示します。

PDB全体をリストアおよびリカバリするには:

  1. 「リカバリ・アプライアンスからデータをリストアおよびリカバリするための前提条件」で説明している前提条件を満たしていることを確認します。
  2. RMANを使用して、CDBのルートにTARGETとして、リカバリ・アプライアンス・カタログにCATALOGとして接続します。
  3. CDBで次の問合せを実行して、リストアする必要のあるPDBを特定します。
    SELECT name FROM v$pdbs;
    
  4. 保護されたデータベース内の必要なPDBをリストアおよびリカバリします。

    次のコマンドでは、hr_pdbというPDBをリストアおよびリカバリします。

    RUN 
    {
      ALTER PLUGGABLE DATABASE "hr_pdb" CLOSE IMMEDIATE;
      RESTORE PLUGGABLE DATABASE 'hr_pdb';
      RECOVER PLUGGABLE DATABASE 'hr_pdb';
      ALTER PLUGGABLE DATABASE "hr_pdb" OPEN;
    }
    

PDB全体のPoint-in-Timeリカバリの実行

この例では、保護されたデータベース内の1つ以上のPDBに対してPoint-in-Timeリカバリを実行する方法を示します。PDBをリカバリする必要のある目的の時点を指示するには、SET UNTIL句を指定します。

PDBを特定のPoint-in-Timeにリストアおよびリカバリするには:

  1. 「リカバリ・アプライアンスからデータをリストアおよびリカバリするための前提条件」で説明している前提条件を満たしていることを確認します。
  2. 「CLIを使用した保護されたデータベースとリカバリ・アプライアンスへの接続」の説明に従って、RMANを使用してCDBのルートにTARGETとして接続し、リカバリ・アプライアンス・カタログにCATALOGとして接続します。
  3. CDBで次の問合せを実行して、リストアする必要のあるPDBを特定します。
    SELECT name FROM v$pdbs;
    
  4. 影響を受けたPDBを特定の時点にリストアおよびリカバリします。

    次のコマンドでは、hr_pdbというPDBを、SET UNTIL句で指定した時点にリストアおよびリカバリします。

    RUN
    {
      SET UNTIL TIME "to_date('2014-08-16 09:00:00','YYYY-MM-DD HH24:MI:SS')";
      ALTER PLUGGABLE DATABASE "hr_pdb" CLOSE IMMEDIATE;
      RESTORE PLUGGABE DATABASE 'hr_pdb';
      RECOVER PLUGGABLE DATABASE 'hr_pdb';
      ALTER PLUGGABLE DATABASE hr_pdb OPEN RESETLOGS;
    }
    

PDBの特定のデータ・ファイルのリカバリ

PDB内のデータ・ファイルをリストアおよびリカバリする方法は、RMANを使用して任意のデータ・ファイルをリストアおよびリカバリする方法と似ています。この例では、PDB内のデータ・ファイルをリストアおよびリカバリする方法を示します。

PDBの特定のデータ・ファイルをリストアおよびリカバリするには:

  1. 「リカバリ・アプライアンスからデータをリストアおよびリカバリするための前提条件」で説明している前提条件を満たしていることを確認します。
  2. 「CLIを使用した保護されたデータベースとリカバリ・アプライアンスへの接続」の説明に従って、RMANを使用してCDBのルートにTARGETとして接続し、リカバリ・アプライアンス・カタログにCATALOGとして接続します。
  3. CDBで次の問合せを実行して、リストアする必要のあるPDBを特定します。
    SELECT name FROM v$pdbs;
    
  4. 次の問合せを使用して、リカバリする必要のあるPDB内のデータ・ファイルの番号を特定します。
    SELECT p.PDB_ID, p.PDB_NAME, d.FILE_ID, d.TABLESPACE_NAME, d.FILE_NAME
      FROM DBA_PDBS p, CDB_DATA_FILES d
      WHERE p.PDB_ID = d.CON_ID
      ORDER BY p.PDB_ID;
    
  5. PDB内の影響を受けたデータ・ファイルをリストアおよびリカバリします。

    次の例では、PDB内のデータ・ファイル番号10をリストアおよびリカバリします。

    RUN 
    {
      SQL 'ALTER DATABASE DATAFILE 10 OFFLINE';
      RESTORE DATAFILE 10;
      RECOVER DATAFILE 10;
      SQL 'ALTER DATABASE DATAFILE 10 ONLINE';
    }

PDBの特定の表領域のリカバリ

この例では、保護されたデータベース内のSH_PDBというPDBに格納されている表領域USR_TBSをリストアおよびリカバリする方法を示します。

PDB内の表領域のリストアおよびリカバリは、通常の表領域のリストアおよびリカバリと似ています。違いは、表領域をプラガブル・データベース(pdb_name:tablespace_name)にマップする必要があるという点です。

PDBの特定の表領域をリストアおよびリカバリするには:

  1. 「リカバリ・アプライアンスからデータをリストアおよびリカバリするための前提条件」で説明している前提条件を満たしていることを確認します。
  2. 「CLIを使用した保護されたデータベースとリカバリ・アプライアンスへの接続」の説明に従って、RMANを使用してCDBのルートにTARGETとして接続し、リカバリ・アプライアンス・カタログにCATALOGとして接続します。
  3. 影響を受けた表領域をオフライン・モードに設定します。

    次の例では、sh_pdbというPDB内の表領域use_tbsをオフライン・モードに設定します。

    ALTER TABLESPACE sh_pdb:usr_tbs OFFLINE;
    
  4. 保護されたデータベース内でPDBに格納されている影響を受けた表領域をリストアおよびリカバリします。

    次の例では、sh_pdbというPDB内の表領域usr_tbsをリストアおよびリカバリします。

    RUN 
    {
      RESTORE TABLESPACE sh_pdb:usr_tbs;
      RECOVER TABLESPACE sh_pdb:usr_tbs;
    }
    
  5. リストアおよびリカバリ済の表領域をオンラインに設定します。

    次の例では、sh_pdbというPDB内の表領域usr_tbsをオンラインに設定します。

    ALTER TABLESPACE sh_pdb:usr_tbs ONLINE;