概念
There are two approaches to recovering a PDB with RMAN:
· Connect to the root and then use the RESTORE PLUGGABLE DATABASE and RECOVER PLUGGABLE DATABASE commands. This approach enables you to recover multiple PDBs with a single command.
· Connect to the PDB and use the RESTORE DATABASE and RECOVER DATABASE commands. This approach recovers only a single PDB and enables you to use the same commands used for recovering non-CDB databases.
有两种方法可以与RMAN恢复PDB:
连接到根,然后使用恢复可插入数据库和恢复可插入数据库命令。这种方法使您能够使用单个命令恢复多个PDBs。
连接到PDB,使用恢复数据库和恢复数据库命令。此方法仅恢复单个PDB,并使您能够使用用于恢复非cdb数据库的相同命令。
实验
1)创建表空间,用户,表
SQL> conn /as sysdba
Connected.
SQL> alter session set container=pdbcndba;
Session altered.
CREATE TABLESPACE test
DATAFILE '/u01/app/oracle/oradata/cndba/pdbcndba/test01.dbf'
SIZE 1M AUTOEXTEND ON NEXT 1M;
CREATE USER test IDENTIFIED BY test
DEFAULT TABLESPACE test
QUOTA UNLIMITED ON test;
SQL> grant dba to test;
Grant succeeded.
SQL> conn test/test@pdbcndba
Connected.
SQL> create table leo2 as select * from dba_objects;
Table created.
SQL> select TABLESPACE_NAME from dba_tables where table_name='LEO2';
TABLESPACE_NAME
------------------------------
TEST
SQL> insert into leo2 select * from dba_objects;
72625 rows created.
SQL> commit;
Commit complete.
SQL> select count(*) from leo2;
COUNT(*)
----------
145149
2)查看数据文件
[oracle@dg1 pdbcndba]$ pwd
/u01/app/oracle/oradata/cndba/pdbcndba
[oracle@dg1 pdbcndba]$ ls
sysaux01.dbf system01.dbf temp01.dbf test01.dbf undotbs01.dbf users01.dbf
3)备份PDB
[oracle@dg1 ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Thu Aug 3 17:45:45 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: CNDBA (DBID=211273844)
RMAN> BACKUP PLUGGABLE DATABASE pdbcndba;
Starting backup at 03-AUG-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=63 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/cndba/pdbcndba/sysaux01.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/cndba/pdbcndba/system01.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/cndba/pdbcndba/undotbs01.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/cndba/pdbcndba/users01.dbf
channel ORA_DISK_1: starting piece 1 at 03-AUG-17
channel ORA_DISK_1: finished piece 1 at 03-AUG-17
piece handle=/u01/app/oracle/product/12.1.0/db_1/dbs/dbs/0isb0d6m_1_1 tag=TAG20170803T174633 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45
Finished backup at 03-AUG-17
Starting Control File and SPFILE Autobackup at 03-AUG-17
piece handle=/u01/app/oracle/product/12.1.0/db_1/dbs/c-211273844-20170803-06 comment=NONE
Finished Control File and SPFILE Autobackup at 03-AUG-17
4)删除数据文件
[oracle@dg1 pdbcndba]$ pwd
/u01/app/oracle/oradata/cndba/pdbcndba
[oracle@dg1 pdbcndba]$ ls
sysaux01.dbf system01.dbf temp01.dbf test01.dbf undotbs01.dbf users01.dbf
[oracle@dg1 pdbcndba]$ rm -rf test01.dbf
[oracle@dg1 pdbcndba]$ ls
sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf
5)关闭PDB,再次启动报错
SQL> conn /as sysdba
Connected.
SQL> alter session set container=pdbcndba;
Session altered.
SQL> shutdown immediate
Pluggable Database closed.
SQL> startup
ORA-01157: cannot identify/lock data file 13 - see DBWR trace file
ORA-01110: data file 13: '/u01/app/oracle/oradata/cndba/pdbcndba/test01.dbf'
6)恢复PDB
[oracle@dg1 ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Thu Aug 3 19:18:16 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: CNDBA (DBID=211273844)
RMAN> run{
RESTORE PLUGGABLE DATABASE pdbcndba;
RECOVER PLUGGABLE DATABASE pdbcndba;
ALTER PLUGGABLE DATABASE pdbcndba OPEN;
}2> 3> 4> 5>
Starting restore at 03-AUG-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=69 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/cndba/pdbcndba/system01.dbf
channel ORA_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/cndba/pdbcndba/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/cndba/pdbcndba/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/cndba/pdbcndba/users01.dbf
channel ORA_DISK_1: restoring datafile 00013 to /u01/app/oracle/oradata/cndba/pdbcndba/test01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/12.1.0/db_1/dbs/0isb0d6m_1_1
channel ORA_DISK_1: piece handle=/u01/app/oracle/product/12.1.0/db_1/dbs/0isb0d6m_1_1 tag=TAG20170803T183917
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:55
Finished restore at 03-AUG-17
Starting recover at 03-AUG-17
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 03-AUG-17
Statement processed
7)验证RMAN恢复结果,数据文件,表已恢复
[oracle@dg1 pdbcndba]$ ls
sysaux01.dbf system01.dbf temp01.dbf test01.dbf undotbs01.dbf users01.dbf
[oracle@dg1 ~]$ sqlplus test/test@pdbcndba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Aug 3 19:20:17 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Last Successful login time: Thu Aug 03 2017 18:55:40 +08:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select count(*) from leo2;
COUNT(*)
----------
145149
参考链接:
http://docs.oracle.com/database/121/BRADV/rcmcomre.htm#BRADV749
https://oracle-base.com/articles/12c/multitenant-rman-backup-recovery-cdb-and-pdb-12cr1