oracle 12c+备份和恢复

1.在12c多租户环境中,备份有两个关键方面:CDB级别的备份和PDB级别的备份

一.CDB全备份

在大部分情况下,备份往往是CDB级别的.这就意味着CDB$ROOT,PDB$SEED,PDBS都会被备份.

CDB的备份包括的:控制文件,所有数据文件(包含CDB和PDB的),所有归档日志的备份,建议对spfile也进行备份. 

CDB的备份和12c以前的备份没有什么不同呢.

下面的所有的备份连接到的都是CDB

 

二.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:20
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbf
channel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:13:20
channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:13:21
piece handle=/backup/test_0gucrhc0_1_1_20190927.bak tag=TAG20190927T221320 comment=NONE
channel 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 commands
RMAN-01009: syntax error: found "test": expecting one of: "double-quoted-string, identifier, single-quoted-string"
RMAN-01007: at line 1 column 26 file: standard input
RMAN> backup tablespace brent:'test'  format '/backup/test_%U_%T.bak';
 
Starting backup at 27-SEP-2019 22:15:29
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 09/27/2019 22:15:29
RMAN-20202: Tablespace not found in the recovery catalog
RMAN-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:48
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbf
channel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:15:49
channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:15:50
piece handle=/backup/test_0iucrhgl_1_1_20190927.bak tag=TAG20190927T221549 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished 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:57
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00037 name=/u01/app/oracle/oradata/ORA19C/test.dbf
channel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:19:57
channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:19:58
piece handle=/backup/test_0kucrhod_1_1_20190927.bak tag=TAG20190927T221957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbf
channel ORA_DISK_1: starting piece 1 at 27-SEP-2019 22:19:59
channel ORA_DISK_1: finished piece 1 at 27-SEP-2019 22:20:00
piece handle=/backup/test_0lucrhof_1_1_20190927.bak tag=TAG20190927T221957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished 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;

 

三.PDB备份

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@brent
 
Recovery Manager: Release 19.0.0.0.0 - Production on Sat Sep 28 00:22:15 2019
Version 19.3.0.0.0
 
Copyright (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@brent
 
Recovery Manager: Release 19.0.0.0.0 - Production on Sat Sep 28 00:27:02 2019
Version 19.3.0.0.0
 
Copyright (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:02
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=277 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/ORA19C/brent/undotbs01.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/ORA19C/brent/system01.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/ORA19C/brent/sysaux01.dbf
input datafile file number=00036 name=/u01/app/oracle/oradata/ORA19C/brent/test.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/ORA19C/brent/users01.dbf
channel ORA_DISK_1: starting piece 1 at 28-SEP-2019 00:28:05
channel ORA_DISK_1: finished piece 1 at 28-SEP-2019 00:28:08
piece handle=/backup/brent_12ucrp8l_1_1_20190928.bak tag=TAG20190928T002805 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 28-SEP-2019 00:28:08
 

注意:连接到PDB上,可以备份控制文件,但是将不能备份归档日志和删除归档日志,也不能备份参数文件

 

RMAN> backup archivelog all ;
 
Starting backup at 28-SEP-2019 00:28:32
using channel ORA_DISK_1
skipping archived logs when connected to a PDB
backup cancelled because there are no files to backup
Finished backup at 28-SEP-2019 00:28:32
 

 

四.CDB恢复

 

CDB的恢复和以前的版本一致.CDB的还原包含了所有的PDB.

 

五.PDB恢复

1.对PDB进行恢复还原.

如果一个PDB的文件丢失,我们不需要将CDB打开到mount,可以直接利用备份文件进行恢复.

下面模拟PDB的丢失.我们将PDB的数据文件目录改名,然后创建相同的目录

 

[oracle@ora19c ORA19C]$ mv brent brent.bak
[oracle@ora19c ORA19C]$ ls
brent.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:12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=282 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 00008 to /u01/app/oracle/oradata/ORA19C/brent/system01.dbf
channel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/ORA19C/brent/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/ORA19C/brent/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/ORA19C/brent/users01.dbf
channel ORA_DISK_1: restoring datafile 00036 to /u01/app/oracle/oradata/ORA19C/brent/test.dbf
channel 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:33
using channel ORA_DISK_1
 
starting media recovery
media recovery complete, elapsed time: 00:00:00
 
Finished 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 stored
released 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

注意,如果设置的备份片的大小超过了要备份文件的大小,则会被忽略多分段备份.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值