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

注意,如果設置的備份片的大小超過了要備份文件的大小,則會被忽略多分段備份.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章