12cのrmanではマルチテナントが導入されたことに伴って、コンテナごとのバックアップ、およびにPDBごとのリストアが出来るようになります。

[oracle@DB01 ~]$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on 日 7月 17 00:54:40 2016

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: CDB2 (データベースID=663406917)に接続されました

RMAN> backup database;

backupが開始されました(開始時間: 16-07-17)
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました



チャネルORA_DISK_1: ピース1(16-07-17)を起動します
チャネルORA_DISK_1: ピース1(16-07-17)が完了しました
ピース・ハンドル=+FRA/CDB2/36D1F427301211C5E053C60911AC0FFB/BACKUPSET/2016_07_17/nnndf0_tag20160717t005453_0.462.917398655 タグ=TAG20160717T005453 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:45
backupが完了しました(完了時間: 16-07-17)

Control File and SPFILE Autobackupが開始されました(開始時間: 16-07-17)
ピース・ハンドル=+FRA/CDB2/AUTOBACKUP/2016_07_17/s_917398699.459.917398703 コメント=NONE
Control File and SPFILE Autobackupが完了しました(完了時間: 16-07-17)


rmanでターゲットデータベースに接続して、backup databaseを実行すると、PDBも含めたコンテナ全体のバックアップが取得されます。

[oracle@DB01 ~]$ sqlplus test/password@pdb1
SQL> set linesize 100
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 80-12-17        800                    20
      7499 ALLEN      SALESMAN        7698 81-02-20       1600        300         30
      7521 WARD       SALESMAN        7698 81-02-22       1250        500         30




SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
16-07-17 00:59:51.559666 +09:00

SQL> drop table emp;

表が削除されました。

SQL> select * from emp;
select * from emp
              *
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。


バックアップを取得した後、試しにpdbに接続し、1つの表を削除してみます。
dropする前に時刻を確認しているので、drop前の時刻に戻る不完全リカバリを実行してみます。

[oracle@DB01 ~]$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on 日 7月 17 01:00:16 2016

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: CDB2 (データベースID=663406917)に接続されました

RMAN> alter pluggable database pdb1 close;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
文が処理されました


まず、コンテナの管理者でrmanに接続し、リカバリ対象のPDBをクローズします。
12cよりrmanのコマンドラインより直接SQL文が実行できるようになりました。

RMAN> restore pluggable database pdb1;

restoreが開始されました(開始時間: 16-07-17)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=36 デバイス・タイプ=DISK

チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_DISK_1: データファイル00008を+DATA/CDB2/36D2894304212B74E053C60911AC5711/DATAFILE/system.298.916421277にリストアしています
チャネルORA_DISK_1: データファイル00009を+DATA/CDB2/36D2894304212B74E053C60911AC5711/DATAFILE/sysaux.297.916421277にリストアしています
チャネルORA_DISK_1: データファイル00010を+DATA/CDB2/36D2894304212B74E053C60911AC5711/DATAFILE/users.299.916421279にリストアしています
チャネルORA_DISK_1: データファイル00012を+DATA/test0706.dbfにリストアしています
チャネルORA_DISK_1: バックアップ・ピース+FRA/CDB2/36E03DC7689B77BBE053C60911AC5895/BACKUPSET/2016_07_17/nnndf0_tag20160717t005453_0.464.917398599から読取り中です
チャネルORA_DISK_1: ピース・ハンドル=+FRA/CDB2/36E03DC7689B77BBE053C60911AC5895/BACKUPSET/2016_07_17/nnndf0_tag20160717t005453_0.464.917398599 タグ=TAG20160717T005453
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:01:05
restoreが完了しました(完了時間: 16-07-17)


そして、対象のPDBをバックアップよりリストアします。

RMAN> recover pluggable database pdb1 until
2> time "to_timestamp('16-07-17 00:59:51','YY-MM-DD HH24:MI:SS')";


recoverが開始されました(開始時間: 16-07-17)
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=278 デバイス・タイプ=DISK
RMAN-05026: 警告: 次の表領域のセットは、指定したPoint-in-Timeへの適用が想定されています



スレッド1 (順序78)のアーカイブ・ログは、ファイル+FRA/CDB2/ARCHIVELOG/2016_07_17/thread_1_seq_78.458.917399165としてディスクに存在します
アーカイブ・ログ・ファイル名=+FRA/CDB2/ARCHIVELOG/2016_07_17/thread_1_seq_78.458.917399165 スレッド=1 順序=78
メディア・リカバリが完了しました。経過時間: 00:00:01
recoverが完了しました(完了時間: 16-07-17)

SQL文: alter database open read only



Oracleインスタンスがシャットダウンしました


自動インスタンスを削除しています
自動インスタンスが削除されました
補助インスタンス・ファイル+FRA/CDB2/DATAFILE/sysaux.451.917399399を削除しました
補助インスタンス・ファイル+FRA/CDB2/DATAFILE/current.453.917399385を削除しました
recoverが完了しました(完了時間: 16-07-17)


次に表削除前の時間を指定して、不完全リカバリを実行します。
これで、表はemp削除前の状態に戻りました。

RMAN> alter pluggable database pdb1 open resetlogs;

文が処理されました

resetlogsオプションでpdbをオープンします。


[oracle@DB01 ~]$ sqlplus test/password@pdb1

SQL> set linesize 100
SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 80-12-17        800                    20
      7499 ALLEN      SALESMAN        7698 81-02-20       1600        300         30
      7521 WARD       SALESMAN        7698 81-02-22       1250        500         30
      7566 JONES      MANAGER         7839 81-04-02       2975                    20
      7654 MARTIN     SALESMAN        7698 81-09-28       1250       1400         30




削除した表が復活していることがわかります。
これでリストア完了です。