Oracle 19c 支持多个或单个PDB执行独立的备份操作。
备份命令示例:
--备份 pdb
RMAN> backup pluggable database pdb1 format '/u02/rmanback/pdb1_%U';
--备份 pdb 某个表空间
RMAN> backup tablespace PDB1:SYSTEM,PDB1:USERS format '/u02/rmanback/pdb1_tbs_%U';
1.恢复表空间
1.1.删除某个表空间所有数据文件
rm USERS.301.1093274147
rm USERS.308.1093861729
1.2.进行恢复
RMAN> restore tablespace PDB1:USERS;
Starting restore at 13-JAN-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=55 instance=orcl1 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 00014 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/users.301.1093864611
channel ORA_DISK_1: restoring datafile 00040 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/users.308.1093876415
channel ORA_DISK_1: reading from backup piece /u02/rmanback/pdb1_0k0j60e8_1_1
channel ORA_DISK_1: piece handle=/u02/rmanback/pdb1_0k0j60e8_1_1 tag=TAG20220113T103031
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 13-JAN-22
RMAN> recover tablespace PDB1:USERS;
Starting recover at 13-JAN-22
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 13-JAN-22
SQL> alter pluggable database pdb1 open;
2.恢复数据文件
SQL> alter database datafile 40 offline;
RMAN> restore datafile 40;
Starting restore at 13-JAN-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1193 instance=orcl1 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 00040 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/users.308.1093865113
channel ORA_DISK_1: reading from backup piece /u02/rmanback/pdb1_0k0j60e8_1_1
channel ORA_DISK_1: piece handle=/u02/rmanback/pdb1_0k0j60e8_1_1 tag=TAG20220113T103031
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 13-JAN-22
RMAN> recover datafile 40;
Starting recover at 13-JAN-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=39 instance=orcl1 device type=DISK
starting media recovery
media recovery complete, elapsed time: 00:00:02
Finished recover at 13-JAN-22
SQL> alter database datafile 40 online;
3.PDB的不完全恢复
3.1.创建测试表
SQL> create table h2(id number);
SQL> begin
for i in 0..1000 loop
insert into h2 values(i);
commit;
end loop;
end;
3.2.记录当前SCN和数据行
SQL> select CURRENT_SCN from v$database;
CURRENT_SCN
-----------
4598861
SQL> select count(*) from h2;
COUNT(*)
----------
1000
3.3.删除表中的数据
SQL> delete h2 where id>800;
SQL> select count(*) from h2;
COUNT(*)
----------
800
3.4.进行恢复
--关闭 pdb
SQL> alter pluggable database pdb1 close;
--开始恢复
RMAN> run {
set until SCN = 4598861;
restore pluggable database pdb1;
recover pluggable database pdb1;
}
--打开数据库
SQL> alter pluggable database open resetlogs;
--检查数据行数
SQL> select count(*) from h2;
COUNT(*)
----------
1000
4.所有数据文件全部丢失
--删除所有的数据文件
cd +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/
rm *
--开始恢复
RMAN> restore pluggable database pdb1;
Starting restore at 13-JAN-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=62 instance=orcl1 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 00010 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/system.297.1093877359
channel ORA_DISK_1: restoring datafile 00011 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/sysaux.298.1093273527
channel ORA_DISK_1: restoring datafile 00012 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/undotbs1.296.1093273523
channel ORA_DISK_1: restoring datafile 00013 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/undo_2.300.1093274127
channel ORA_DISK_1: restoring datafile 00014 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/users.301.1093877811
channel ORA_DISK_1: restoring datafile 00040 to +DATA/ORCL/D4E5736F9AA9434AE053E850A8C031D8/DATAFILE/users.308.1093877811
channel ORA_DISK_1: reading from backup piece /u02/rmanback/pdb1_0k0j60e8_1_1
channel ORA_DISK_1: piece handle=/u02/rmanback/pdb1_0k0j60e8_1_1 tag=TAG20220113T103031
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 13-JAN-22
RMAN> recover pluggable database pdb1;
Starting recover at 13-JAN-22
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:13
Finished recover at 13-JAN-22
RMAN> alter pluggable database pdb1 open;