1.在12c多租户环境中,备份有两个关键方面:CDB级别的备份和PDB级别的备份
在大部分情况下,备份往往是CDB级别的.这就意味着CDB$ROOT,PDB$SEED,PDBS都会被备份.
CDB的备份包括的:控制文件,所有数据文件(包含CDB和PDB的),所有归档日志的备份,建议对spfile也进行备份.
CDB的备份和12c以前的备份没有什么不同呢.
下面的所有的备份连接到的都是CDB
有些情况下,你不想对整个CDB进行备份.只想备份他的子集,可以使用pluggable database关键字.例如:
1)只备份某些PDB:
RMAN> backup pluggable database brent,testpdb1 format '/backup/pdb_%U_%T.bak';
2)只备份CDB$ROOT和PDB$SEED
这里需要用双引号.
RMAN> backup pluggable database "CDB$ROOT","PDB$SEED" format '/backup/test_%U_%T.bak';
还可以使用
backup database root来标识CDB$ROOT
3)备份某个特定的表空间.例如想备份PDB为brent下的TEST表空间
RMAN> backup tablespace brent:"TEST" format '/backup/test_%U_%T.bak';Starting backup at 27-SEP-2019 22:13:20using channel ORA_DISK_1channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbfchannel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:13:20channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:13:21piece handle=/backup/test_0gucrhc0_1_1_20190927.bak tag=TAG20190927T221320 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
注意:必须指定的格式为PDB:TABLESPACE,先指定PDB的名字.实测PDB后面的名字必须接双引号或者单引号.并且区分大小写.否则报错,如下
RMAN> backup tablespace brent:test format '/backup/test_%U_%T.bak';RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-00558: error encountered while parsing input commandsRMAN-01009: syntax error: found "test": expecting one of: "double-quoted-string, identifier, single-quoted-string"RMAN-01007: at line 1 column 26 file: standard inputRMAN> backup tablespace brent:'test' format '/backup/test_%U_%T.bak';Starting backup at 27-SEP-2019 22:15:29using channel ORA_DISK_1RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of backup command at 09/27/2019 22:15:29RMAN-20202: Tablespace not found in the recovery catalogRMAN-06019: could not translate tablespace name "test"RMAN> backup tablespace brent:'TEST' format '/backup/test_%U_%T.bak';Starting backup at 27-SEP-2019 22:15:48using channel ORA_DISK_1channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbfchannel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:15:49channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:15:50piece handle=/backup/test_0iucrhgl_1_1_20190927.bak tag=TAG20190927T221549 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 27-SEP-2019 22:15:50
4)备份CDB和PDB中的test表空间
和上面同理,表空间的名字需要添加双引号或者单引号,并且区分大小写.备份PDB的表空间的时候,前面要加上PDB_NAME:
RMAN> backup tablespace "TEST",brent:"TEST" FORMAT '/backup/test_%U_%T.bak';Starting backup at 27-SEP-2019 22:19:57using channel ORA_DISK_1channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00037 name=/u01/app/oracle/oradata/ORA19C/test.dbfchannel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:19:57channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:19:58piece handle=/backup/test_0kucrhod_1_1_20190927.bak tag=TAG20190927T221957 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbfchannel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:19:59channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:20:00piece handle=/backup/test_0lucrhof_1_1_20190927.bak tag=TAG20190927T221957 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 27-SEP-2019 22:20:00
5)备份数据文件
备份数据文件和以前的版本备份方法一直.
RMAN> backup datafile 2 format '/backup/test_%U_%T.bak';
6)查看备份
report schema; --查看需要备份的数据库结构list backup of database;list backup of pluggable database brent;list backup of tablspace brent:'TEST';list backup of datafile 1;
1.PDB全备份
可以在CDB中像上面的,执行备份添加pluggable 关键字
backup pluggable databse brent,testpdb1;backup as copy pluggable database brent;
2.还可以直接连接到PDB上进行备份
需要通过tnsnames来连接PDB:
[oracle@ora19c backup]$ rman target sys/manager@brentRecovery Manager: Release 19.0.0.0.0 - Production on Sat Sep 28 00:22:15 2019Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.connected to target database: ORA19C:BRENT (DBID=1374011510)
如果连接到的是CDB,则显示:
connected to target database: ORA19C (DBID=1064706437)
连接到PDB则显示:
connected to target database: ORA19C:BRENT (DBID=1374011510)
一旦连接到了PDB上,则使用的备份命令和连接到CDB完全一样.
备份数据库直接使用backup database命令,这样备份的数据库就是 PDB,而不是CDB.连接到了PDB上就不能使用PLUGGABLE关键字了.
rman [oracle@ora19c ~]$ rman target sys/manager@brentRecovery Manager: Release 19.0.0.0.0 - Production on Sat Sep 28 00:27:02 2019Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.connected to target database: ORA19C:BRENT (DBID=1374011510)RMAN> backup database format '/backup/brent_%U_%T.bak';Starting backup at 28-SEP-2019 00:28:02using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=277 device type=DISKchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00010 name=/u01/app/oracle/oradata/ORA19C/brent/undotbs01.dbfinput datafile file number=00008 name=/u01/app/oracle/oradata/ORA19C/brent/system01.dbfinput datafile file number=00009 name=/u01/app/oracle/oradata/ORA19C/brent/sysaux01.dbfinput datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbfinput datafile file number=00011 name=/u01/app/oracle/oradata/ORA19C/brent/users01.dbfchannel ORA_DISK_1: starting piece 1 at 28-SEP-2019 00:28:05channel ORA_DISK_1: finished piece 1 at 28-SEP-2019 00:28:08piece handle=/backup/brent_12ucrp8l_1_1_20190928.bak tag=TAG20190928T002805 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:03Finished backup at 28-SEP-2019 00:28:08
注意:连接到PDB上,可以备份控制文件,但是将不能备份归档日志和删除归档日志,也不能备份参数文件
RMAN> backup archivelog all ;Starting backup at 28-SEP-2019 00:28:32using channel ORA_DISK_1skipping archived logs when connected to a PDBbackup cancelled because there are no files to backupFinished backup at 28-SEP-2019 00:28:32
CDB的恢复和以前的版本一致.CDB的还原包含了所有的PDB.
1.对PDB进行恢复还原.
如果一个PDB的文件丢失,我们不需要将CDB打开到mount,可以直接利用备份文件进行恢复.
下面模拟PDB的丢失.我们将PDB的数据文件目录改名,然后创建相同的目录
[oracle@ora19c ORA19C]$ mv brent brent.bak[oracle@ora19c ORA19C]$ lsbrent.bak control01.ctl control02.ctl pdbseed redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf test.dbf testpdb1 testpdb2 testpdb4 undotbs01.dbf users01.dbf[oracle@ora19c ORA19C]$ mkdir brent
查看PDB的备份
RMAN> list backup of pluggable database brent;
对PDB进行还原restore pluggable database brent;:
RMAN> restore pluggable database brent;Starting restore at 29-SEP-2019 23:16:12allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=282 device type=DISKchannel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/ORA19C/brent/system01.dbfchannel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/ORA19C/brent/sysaux01.dbfchannel ORA_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/ORA19C/brent/undotbs01.dbfchannel ORA_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/ORA19C/brent/users01.dbfchannel ORA_DISK_1: restoring datafile 00036 to /u01/app/oracle/oradata/ORA19C/brent/test.dbfchannel ORA_DISK_1: reading from backup piece /backup/brent_34ud0tk0_1_1.bak
对PDB进行恢复recover pluggable database brent:
RMAN> recover pluggable database brent;Starting recover at 29-SEP-2019 23:19:33using channel ORA_DISK_1starting media recoverymedia recovery complete, elapsed time: 00:00:00Finished recover at 29-SEP-2019 23:19:34
打开PDB:
RMAN> alter pluggable database brent open;Statement processed
1.增量备份
第一次备份采用level 0级别备份
后面的备份每次都是基于上次备份的块的变化备份.
1)创建0级别增量备份
backup incremental level 0 pluggable database brent;
2)创建1级增量备份
backup incremental level 1 pluggable database brent;
2. 累计增量备份
第一次备份采用level 0级别备份
后面的备份都是基于最近一次的level 0级别的备份的块的变化进行备份.
累计增量和普通增量的区别在于普通的增量备份在恢复的时候需要level 0级备份和多次的增量备份.而累计增量备份只需要level 0级备份和最近一次的累计增量备份.
1)创建0级别增量备份
backup incremental level 0 pluggable database brent;
2)创建1级累计增量备份
backup cumulative incremental level 1 pluggable database brent;
3.块变化跟踪
当使用增量备份的时候,建议开启块变化跟踪,需要在CDB级别开启.块变化跟踪将会把变化的块写到文件中.
1)开启块跟踪
OMF:
alter database enable block change tracking;
NOT OMF:
alter database enable block change tracking using file '/xxxx';
2)关闭块跟踪
alter databse disable block change tracking;
1.开启多通道
可以在备份脚本中手工创建多个通道,例如
rman>allocate channel ch1 device type disk;rman>allocate channel ch2 device type disk;rman>allocate channel ch3 device type disk;
还可以配置rman,设置默认的备份通道:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;new RMAN configuration parameters:CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;new RMAN configuration parameters are successfully storedreleased channel: ORA_DISK_1
2.开启压缩
如果空间不够的情况下,可以开启备份的压缩.一般可以达到1:4左右的压缩比.数据文件,全库,归档都可以开启压缩
RMAN> backup as compressed backupset database format '/backup/%U.bak';
3.多分段备份
可以指定每个备份片的大小.例如:
RMAN>backup incremental level 1 section size 200M pluggable database brent;
如果对备份集开启多分段备份,则默认设置filesperset 1
注意,如果设置的备份片的大小超过了要备份文件的大小,则会被忽略多分段备份.