RMAN中基於copy的全備合併增備進行增量備份的方式

 

日常在生產環境中使用RMAN在線熱備數據庫一般都是每週一次全備+每天備歸檔   或者 每週一次全備,每天一次增備的方式進行備份的。這種方式備份的優點時,佔用空間較少,備份快,恢復時間相對較長(因爲要逐一讀取全備之後的所有增備的備份文件)。

而另一種不常用的方法是:

1、先做一次基於 level 0級別數據庫文件副本完全拷貝(backup ascopy level 0 database),RMAN腳本類似如下:

run{
  allocate channel c1 type disk;
  allocate channel c2 type disk;
  allocate channel c3 type disk;
  backup as copy incremental level 0 tag incr_update database format'/backup/rman_bak/full/lv0_%U.bak';
  #backup archivelog all format '/backup/rman_bak/full/lv0_arc_%U.bak' tagincr_update;
  #backup current controlfile format'/backup/rman_bak/full/lv0_ctl_%U.bak' tag incr_update;
  release channel c1;
  release channel c2;
  release channel c3;
}

 

2、之後至少執行兩次基於以上 level 0級別的數據庫文件副本完全拷貝(全備)的增量備份,RMAN腳本如下:

run{
  allocate channel c1 type disk format '/backup/rman_bak/incr/%U_cp.bak';
  allocate channel c2 type disk format '/backup/rman_bak/incr/%U_cp.bak';
  recover copy of database  with tag 'incr_update';
  backup incremental level 1 for recover of copy with tag 'incr_update'database;
  #backup archivelog all format '/backup/rman_bak/incr/arc_%U.bak' tagincr_update;
  #backup current controlfile format '/backup/rman_bak/incr/ctl_%U.bak'tag incr_update;
  release channel c1;
  release channel c2;
}

以上 tag  的名稱必須要全部一致,必須要和之前的level 0的拷貝全備的 tag 名稱一致。

其中:

2.1)、recover copy of database  with tag 'incr_update'; 表示將上次的增備的備份文件內容應用到全備文件中,應用後,全備文件的最後修改時間會變爲最新的時間。第一次增備時,由於還不存在上次的的增備,所以是不會應用上一次的增備到全庫文件的。

2.2)、backup incremental level 1 for recover of copy withtag 'incr_update' database; 這個是開始執行本次的增備。

 

昨天測試的具體實現過程如下:

1、檢查當前的日誌組是group 1:

15:52:50SYS@orcl*SQL> select * from v$log;                                              
                                                                                       
GROUP#   THREAD#    SEQUENCE#             BYTES          BLOCKSIZE   MEMBERS ARC STATUS  
------ --------- ------------ ------------------ ------------------ ------------- --------
     1         1           1           52428800               512         1 NO  CURRENT 
     2         1           0           52428800               512         1 YES UNUSED  
     3         1           0           52428800               512          1 YESUNUSED  

 

2、執行基於 level 0 的 backup as copy  全備:

RMAN> run{
2>  allocate channel c1 type disk;
3>  allocate channel c2 type disk;
4>  allocate channel c3 type disk;
5>  backup as copy incremental level 0 tag incr_update database format'/backup/rman_bak/full/lv0_%U.bak';
6>  backup archivelog all format '/backup/rman_bak/full/lv0_arc_%U.bak'tag incr_update;
7>  backup current controlfile format'/backup/rman_bak/full/lv0_ctl_%U.bak' tag incr_update;
8>  release channel c1;
9>  release channel c2;
10> release channel c3;
11> }

 

using targetdatabase control file instead of recovery catalog
allocated channel: c1
channel c1: SID=22 device type=DISK


allocated channel: c2
channel c2: SID=143 device type=DISK


allocated channel: c3
channel c3: SID=9 device type=DISK


Starting backup at 11-OCT-17
channel c1: starting datafile copy
input datafile file number=00001 name=/oracle/oradata/orcl/system01.dbf
channel c2: starting datafile copy
input datafile file number=00002 name=/oracle/oradata/orcl/sysaux01.dbf
channel c3: starting datafile copy
input datafile file number=00006 name=/oracle/oradata/orcl/test_tbs01.dbf
output filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.baktag=INCR_UPDATE RECID=138 STAMP=957110026
channel c3: datafile copy complete, elapsed time: 00:00:47
channel c3: starting datafile copy
input datafile file number=00003 name=/oracle/oradata/orcl/undotbs01.dbf
output file name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.baktag=INCR_UPDATE RECID=140 STAMP=957110122
channel c1: datafile copy complete, elapsed time: 00:02:05
channel c1: starting datafile copy
input datafile file number=00005 name=/oracle/oradata/orcl/example01.dbf
output file name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.baktag=INCR_UPDATE RECID=139 STAMP=957110117
channel c2: datafile copy complete, elapsed time: 00:02:05
channel c2: starting datafile copy
input datafile file number=00008 name=/oracle/oradata/orcl/goldengate01.dbf
output filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.baktag=INCR_UPDATE RECID=141 STAMP=957110125
channel c3: datafile copy complete, elapsed time: 00:01:09
channel c3: starting datafile copy
copying current control file
output filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.baktag=INCR_UPDATE RECID=142 STAMP=957110136
channel c1: datafile copy complete, elapsed time: 00:00:22
channel c1: starting datafile copy
input datafile file number=00004 name=/oracle/oradata/orcl/users01.dbf
output filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.baktag=INCR_UPDATE RECID=143 STAMP=957110137
channel c2: datafile copy complete, elapsed time: 00:00:21
channel c2: starting datafile copy
input datafile file number=00010 name=/oracle/oradata/orcl/users02.dbf
output file name=/backup/rman_bak/full/lv0_cf_D-ORCL_id-1342766198_5msgolrg.baktag=INCR_UPDATE RECID=144 STAMP=957110137
channel c3: datafile copy complete, elapsed time: 00:00:15
channel c3: starting incremental level 0 datafile backup set
channel c3: specifying datafile(s) in backup set
including currentSPFILE in backup set
channel c3:starting piece 1 at 11-OCT-17
output filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.baktag=INCR_UPDATE RECID=145 STAMP=957110144
channel c1: datafile copy complete, elapsed time: 00:00:00
output file name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.baktag=INCR_UPDATE RECID=146 STAMP=957110144
channel c2: datafile copy complete, elapsed time: 00:00:00
channel c3: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_5psgols0_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c3: backup set complete, elapsed time: 00:00:01
Finished backup at 11-OCT-17


Starting backup at 11-OCT-17
current log archived
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=3 RECID=145 STAMP=957019801
input archived log thread=1 sequence=4 RECID=146 STAMP=957020136
input archived log thread=1 sequence=5 RECID=147 STAMP=957020138
input archived log thread=1 sequence=6 RECID=148 STAMP=957020140
input archived log thread=1 sequence=7 RECID=149 STAMP=957020143
channel c1: starting piece 1 at 11-OCT-17
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=8 RECID=150 STAMP=957106841
channel c2: starting piece 1 at 11-OCT-17
channel c3: starting archived log backup set
channel c3: specifying archived log(s) in backup set
input archived log thread=1 sequence=9 RECID=151 STAMP=957107100
input archived log thread=1 sequence=10 RECID=152 STAMP=957107524
input archived log thread=1 sequence=11 RECID=153 STAMP=957108249
input archived log thread=1 sequence=12 RECID=154 STAMP=957108273
channel c3: starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_arc_5qsgols4_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:00:02
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=157 STAMP=957110147
channel c1: starting piece 1 at 11-OCT-17
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_arc_5rsgols4_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:00:02
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=13 RECID=155 STAMP=957108614
input archived log thread=1 sequence=14 RECID=156 STAMP=957109582
channel c2: starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_arc_5tsgols6_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:00:00
channel c3: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_arc_5ssgols4_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c3: backup set complete, elapsed time: 00:00:01
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_arc_5usgols6_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 11-OCT-17


Starting backup at 11-OCT-17
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including currentcontrol file in backup set
channel c1:starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/full/lv0_ctl_5vsgols7_1_1.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-OCT-17


released channel: c1


released channel: c2


released channel: c3

說明:執行 backup as copy 副本方式備份數據庫時,也會自動備份 spfile control file 文件,如上黑粗體所示,並且基於 copy 方式的備份,是原樣拷貝數據文件進行備份,備份文件大小與數據文件大小一樣大(不像 backup,只備份數據文件的已用數據塊)。

 

2.1)、全備完後,檢查一下備份文件的大小備份文件的生成 時間,如下:

oracle@SLES11:/backup/rman_bak/full>ls -l
total 1923888
-rw-r----- 1 oracle oinstall     98304 2017-10-11 15:55lv0_5psgols0_1_1.bak
-rw-r----- 1 oracle oinstall    218624 2017-10-11 15:55lv0_arc_5qsgols4_1_1.bak
-rw-r----- 1 oracle oinstall  17538560 2017-10-11 15:55lv0_arc_5rsgols4_1_1.bak
-rw-r----- 1 oracle oinstall   1186816 2017-10-11 15:55lv0_arc_5ssgols4_1_1.bak
-rw-r----- 1 oracle oinstall    318464 2017-10-11 15:55lv0_arc_5tsgols6_1_1.bak
-rw-r----- 1 oracle oinstall    307200 2017-10-11 15:55lv0_arc_5usgols6_1_1.bak
-rw-r----- 1 oracle oinstall  10010624 2017-10-11 15:55lv0_cf_D-ORCL_id-1342766198_5msgolrg.bak
-rw-r----- 1 oracle oinstall  10059776 2017-10-11 15:55lv0_ctl_5vsgols7_1_1.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak
-rw-r----- 1 oracle oinstall 660611072 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
-rw-r----- 1 oracle oinstall 734011392 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
-rw-r----- 1 oracle oinstall 160440320 2017-10-11 15:53lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
-rw-r----- 1 oracle oinstall 157294592 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
-rw-r----- 1 oracle oinstall   1056768 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak
-rw-r----- 1 oracle oinstall   5251072 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak

 

2.2)、全備完後,檢查一下當前日誌組:

15:57:39SYS@orcl*SQL> select * from v$log;                              
                                                                      
ROUP#    HREAD#  SEQUENCE#       BYTES BLOCKSIZE   MEMBERS ARC STATUS   
----- --------- ---------- ----------- ---------- --------- --- ---------
    1         1         1    52428800        512        1 YES ACTIVE   
    2         1         2    52428800        512        1 NO  CURRENT  
    3         1         0    52428800        512        1 YES UNUSED   

說明:當前日誌組變成 group 2 了,因爲以上全備時指定全備後執行 backup archivelog all 備份歸檔,所以執行備份歸檔時,會自動歸檔當前日誌,會切換一次日誌,所以當前日誌變爲2

 

3、執行增備

RMAN> run{
2> allocate channel c1 type disk format '/backup/rman_bak/incr/%U_cp.bak';
3> allocate channel c2 type disk format '/backup/rman_bak/incr/%U_cp.bak';
4> recover copy of database  with tag 'incr_update';
5> backup incremental level 1 for recover of copy with tag 'incr_update'database;
6> #backup archivelog all format '/backup/rman_bak/incr/arc_%U.bak' tagincr_update;
7> #backup current controlfile format '/backup/rman_bak/incr/ctl_%U.bak' tagincr_update;
8>release channel c1;
 9> release channel c2;
10> }



using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=9 device type=DISK


allocated channel: c2
channel c2: SID=143 device type=DISK


Starting recover at 11-OCT-17
no copy of datafile 1 found to recover
no copy of datafile 2 found to recover
no copy of datafile 3 found to recover
no copy of datafile 4 found to recover
no copy of datafile 5 found to recover
no copy of datafile 6 found to recover
no copy of datafile 8 found to recover
no copy of datafile 10 found to recover   ##這裏只是執行了第一次增備,所以沒有上一次的增備可以應用到全備文件。 
Finished recover at 11-OCT-17



Starting backup at 11-OCT-17
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00002 name=/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00006 name=/oracle/oradata/orcl/test_tbs01.dbf
input datafile file number=00005 name=/oracle/oradata/orcl/example01.dbf
input datafile file number=00008 name=/oracle/oradata/orcl/goldengate01.dbf
channel c1: starting piece 1 at 11-OCT-17
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/oradata/orcl/system01.dbf
input datafile file number=00003 name=/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00004 name=/oracle/oradata/orcl/users01.dbf
input datafile file number=00010 name=/oracle/oradata/orcl/users02.dbf
channel c2: starting piece 1 at 11-OCT-17
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/61sgom0d_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:01:06
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/60sgom0d_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:01:13
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel c1: starting piece 1 at 11-OCT-17
including current control file in backup set
channel c2: starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/63sgom2m_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/62sgom2f_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 11-OCT-17


released channel: c1


released channel: c2

 

3.1)、執行完增備後,由於是第一次增備,所以沒有上一次的增備可以應用到全備文件,所以全備文件的大小和時間是不變的,如下:

oracle@SLES11:/backup/rman_bak/full>ls -l
total 1923888
-rw-r----- 1 oracle oinstall     98304 2017-10-11 15:55lv0_5psgols0_1_1.bak
-rw-r----- 1 oracle oinstall    218624 2017-10-11 15:55lv0_arc_5qsgols4_1_1.bak
-rw-r----- 1 oracle oinstall  17538560 2017-10-11 15:55lv0_arc_5rsgols4_1_1.bak
-rw-r----- 1 oracle oinstall   1186816 2017-10-11 15:55lv0_arc_5ssgols4_1_1.bak
-rw-r----- 1 oracle oinstall    318464 2017-10-11 15:55lv0_arc_5tsgols6_1_1.bak
-rw-r----- 1 oracle oinstall    307200 2017-10-11 15:55lv0_arc_5usgols6_1_1.bak
-rw-r----- 1 oracle oinstall  10010624 2017-10-11 15:55lv0_cf_D-ORCL_id-1342766198_5msgolrg.bak
-rw-r----- 1 oracle oinstall  10059776 2017-10-11 15:55lv0_ctl_5vsgols7_1_1.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak
-rw-r----- 1 oracle oinstall 660611072 2017-10-11 15:55 lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
-rw-r----- 1 oracle oinstall 734011392 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
-rw-r----- 1 oracle oinstall 160440320 2017-10-11 15:53lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
-rw-r----- 1 oracle oinstall 157294592 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
-rw-r----- 1 oracle oinstall   1056768 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak
-rw-r----- 1 oracle oinstall   5251072 2017-10-11 15:55lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak

 

3.2)、增備文件已經生成,如下:

oracle@SLES11:/backup/rman_bak/incr>ls -l
total 10362
drwxr-xr-x 2 oracle oinstall       48 2017-10-11 15:47 2
drwxr-xr-x 2 oracle oinstall       48 2017-10-11 14:41 3
-rw-r----- 1 oracle oinstall   212992 2017-10-11 15:59 60sgom0d_1_1_cp.bak
-rw-r----- 1 oracle oinstall   229376 2017-10-11 15:59 61sgom0d_1_1_cp.bak
-rw-r----- 1 oracle oinstall 10059776 2017-10-11 15:59 62sgom2f_1_1_cp.bak
-rw-r----- 1 oracle oinstall    98304 2017-10-11 15:5963sgom2m_1_1_cp.bak

 

4、我們創建一個測試表 tmp,用於應用全備加增量進行做不完全恢復測試

4.1)、檢查當前日誌組,仍然是 group 2:

16:04:29TUSER@orcl*SQL> select * from v$log;                        
                                                                   
GROUP#   HREAD#   EQUENCE#     BYTES  BLOCKSIZE MEMBERS ARC STATUS   
------ -------- ---------- --------- ---------- -------- --- ---------
     1        1         1  52428800        512       1 YES INACTIVE 
     2        1         2  52428800        512       1 NO  CURRENT  
     3        1         0  52428800        512       1 YES UNUSED   

4.2)創建 tmp 測試表:

16:04:34TUSER@orcl*SQL> create table tmp(id int);   

16:05:12TUSER@orcl*SQL> alter system switch logfile;          

16:05:50TUSER@orcl*SQL> insert into tmp values(1);

16:06:00TUSER@orcl*SQL> commit;

16:08:41TUSER@orcl*SQL> alter system switch logfile;     

6:08:49TUSER@orcl*SQL> select * from v$log;                           
                                                                     
ROUP#   HREAD#  SEQUENCE#     BYTES  BLOCKSIZE MEMBERS ARC STATUS      
----- -------- ---------- --------- ---------- -------- --- ------------
    1        1         4  52428800        512       1 NO  CURRENT     
    2        1         2  52428800        512       1 YES ACTIVE      
    3        1         3  52428800        512       1 YES ACTIVE      
                                                                                                                 

 

5、再次執行增備:

run{
2> allocate channel c1 type disk format '/backup/rman_bak/incr/2/%U_cp.bak';
3> allocate channel c2 type disk format '/backup/rman_bak/incr/2/%U_cp.bak';
4> recover copy of database  with tag 'incr_update';
5> backup incremental level 1 for recover of copy with tag 'incr_update'database;
6> #backup archivelog all format '/backup/rman_bak/incr/arc_%U.bak' tagincr_update;
7> #backup current controlfile format '/backup/rman_bak/incr/ctl_%U.bak' tagincr_update;
8> release channel c1;
9> release channel c2;
10> }

 

using target database control file instead of recoverycatalog
allocated channel: c1
channel c1: SID=9 device type=DISK


allocated channel: c2
channel c2: SID=139 device type=DISK


Starting recover at 11-OCT-17
channel c1: starting incremental datafile backup set restore
channel c1: specifying datafile copies to recover
recovering datafile copy file number=00001name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
recovering datafile copy file number=00003name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
recovering datafile copy file number=00004 name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak
recovering datafile copy file number=00010name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak

channel c1: reading from backup piece /backup/rman_bak/incr/61sgom0d_1_1_cp.bak
channel c2: starting incremental datafile backup set restore
channel c2: specifying datafile copies to recover
recovering datafile copy file number=00002name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
recovering datafile copy file number=00005name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
recovering datafile copy file number=00006name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
recovering datafile copy file number=00008name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak ##以上recovering datafile... 就是指應用上一次的增備到全備文件

channel c2: reading from backup piece /backup/rman_bak/incr/60sgom0d_1_1_cp.bak
channel c2: piece handle=/backup/rman_bak/incr/60sgom0d_1_1_cp.baktag=INCR_UPDATE
channel c2: restored backup piece 1
channel c2: restore complete, elapsed time: 00:00:01
channel c1: piece handle=/backup/rman_bak/incr/61sgom0d_1_1_cp.baktag=INCR_UPDATE
channel c1: restored backup piece 1
channel c1: restore complete, elapsed time: 00:00:03
Finished recover at 11-OCT-17


Starting backup at 11-OCT-17
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00002 name=/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00006 name=/oracle/oradata/orcl/test_tbs01.dbf
input datafile file number=00005 name=/oracle/oradata/orcl/example01.dbf
input datafile file number=00008 name=/oracle/oradata/orcl/goldengate01.dbf
channel c1: starting piece 1 at 11-OCT-17
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/oradata/orcl/system01.dbf
input datafile file number=00003 name=/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00004 name=/oracle/oradata/orcl/users01.dbf
input datafile file number=00010 name=/oracle/oradata/orcl/users02.dbf
channel c2: starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/2/64sgomm7_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:01:15
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/2/65sgomm7_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:01:15
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
including current SPFILE in backup set
channel c2: starting piece 1 at 11-OCT-17
including current control file in backup set
channel c1: starting piece 1 at 11-OCT-17
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/2/67sgomoj_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/2/66sgomoi_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-OCT-17


released channel: c1


released channel: c2

 

 

5.1)、第一次增備完成後,其生成的備份文件和時間如下:

oracle@SLES11:/backup/rman_bak/incr/2>ls -l
total 13925
-rw-r----- 1 oracle oinstall  2719744 2017-10-11 16:10 64sgomm7_1_1_cp.bak
-rw-r----- 1 oracle oinstall  1368064 2017-10-11 16:10 65sgomm7_1_1_cp.bak
-rw-r----- 1 oracle oinstall 10059776 2017-10-11 16:11 66sgomoi_1_1_cp.bak
-rw-r----- 1 oracle oinstall    98304 2017-10-11 16:1067sgomoj_1_1_cp.bak

 

5.2)、再次檢查全備文件的最後修改時間變成了以上第二次增備時的執行 recovering datafile copy 時的時間了,如下:

oracle@SLES11:/backup/rman_bak/full>ls -l
total 1923888
-rw-r----- 1 oracle oinstall     98304 2017-10-11 15:55lv0_5psgols0_1_1.bak
-rw-r----- 1 oracle oinstall    218624 2017-10-11 15:55lv0_arc_5qsgols4_1_1.bak
-rw-r----- 1 oracle oinstall  17538560 2017-10-11 15:55lv0_arc_5rsgols4_1_1.bak
-rw-r----- 1 oracle oinstall   1186816 2017-10-11 15:55lv0_arc_5ssgols4_1_1.bak
-rw-r----- 1 oracle oinstall    318464 2017-10-11 15:55lv0_arc_5tsgols6_1_1.bak
-rw-r----- 1 oracle oinstall    307200 2017-10-11 15:55lv0_arc_5usgols6_1_1.bak
-rw-r----- 1 oracle oinstall  10010624 2017-10-11 15:55lv0_cf_D-ORCL_id-1342766198_5msgolrg.bak
-rw-r----- 1 oracle oinstall  10059776 2017-10-11 15:55lv0_ctl_5vsgols7_1_1.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 16:09 lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak
-rw-r----- 1 oracle oinstall 660611072 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
-rw-r----- 1 oracle oinstall 734011392 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
-rw-r----- 1 oracle oinstall 160440320 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
-rw-r----- 1 oracle oinstall 157294592 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
-rw-r----- 1 oracle oinstall   1056768 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak
-rw-r----- 1 oracle oinstall   5251072 2017-10-11 16:09lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak

 

 

6、爲測試表 tmp 做不完全恢復

6.1)、獲取要做不完全恢復的測試的 scn 位置:

16:13:36SYS@orcl*SQL> select sysdate,current_scn from v$database;


SYSDATE                   CURRENT_SCN
------------------- ------------------
2017-10-11 16:14:04            3092625

 

6.2)、爲測試表 tmp 再添加多一條數據,不完全恢復時,只恢復到上一條數據:

16:14:26TUSER@orcl*SQL> insert into tmp values(2);


1 row created.


Elapsed: 00:00:00.01
16:14:35 TUSER@orcl*SQL> commit;


Commit complete.


Elapsed: 00:00:00.00
16:14:37 TUSER@orcl*SQL> alter system switch logfile;


System altered.


Elapsed: 00:00:00.30
16:14:43 TUSER@orcl*SQL> select * from v$log;


GROUP#  HREAD#   EQUENCE#      BYTES   BLOCKSIZE   MEMBERS ARC STATUS               FIRST_CHANGE# FIRST_TIME               NEXT_CHANGE# NEXT_TIME
------ ------- ---------- ---------- ------------ --------- ------------------- ------------------ ------------------- -------------------------------------
     1       1         4   52428800          512        1 YES ACTIVE                     3092321 2017-10-11 16:08:48           3092652 2017-10-11 16:14:43
     2       1         5   52428800          512        1 NO  CURRENT                    3092652 2017-10-11 16:14:43   281474976710655
     3       1         3   52428800          512        1 YES INACTIVE   

 

16:14:49TUSER@orcl*SQL> select * from tmp;


                ID
------------------
                 1
                 2

 

7、再執行一次增備:

RMAN> run{
2> allocate channel c1 type disk format '/backup/rman_bak/incr/3/%U_cp.bak';
3> allocate channel c2 type disk format '/backup/rman_bak/incr/3/%U_cp.bak';
4> recover copy of database  with tag 'incr_update';
5> backup incremental level 1 for recover of copy with tag 'incr_update'database;
6> #backup archivelog all format '/backup/rman_bak/incr/arc_%U.bak' tagincr_update;
7> #backup current controlfile format '/backup/rman_bak/incr/ctl_%U.bak' tagincr_update;
8> release channel c1;
9> release channel c2;
10> }

 

using target database control file instead of recoverycatalog
allocated channel: c1
channel c1: SID=139 device type=DISK


allocated channel: c2
channel c2: SID=145 device type=DISK


Starting recover at 11-OCT-17
channel c1: starting incremental datafile backup set restore
channel c1: specifying datafile copies to recover
recovering datafile copy file number=00001 name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
recovering datafile copy file number=00003name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
recovering datafile copy file number=00004 name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak
recovering datafile copy file number=00010name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak
channel c1: reading from backup piece /backup/rman_bak/incr/2/65sgomm7_1_1_cp.bak ##應用到了第二次增備(即包含 insert into tmpvaluies(1)時的備份)到了全備文件

channel c2: starting incremental datafile backup set restore
channel c2: specifying datafile copies to recover
recovering datafile copy file number=00002 name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
recovering datafile copy file number=00005name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
recovering datafile copy file number=00006 name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
recovering datafile copy file number=00008name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak ##
channel c2: reading from backup piece /backup/rman_bak/incr/2/64sgomm7_1_1_cp.bak ##應用到了第二次增備(即包含 insert into tmpvaluies(1)時的備份)到了全備文件
channel c1: piecehandle=/backup/rman_bak/incr/2/65sgomm7_1_1_cp.bak tag=INCR_UPDATE
channel c1: restored backup piece 1
channel c1: restore complete, elapsed time: 00:00:03
channel c2: piece handle=/backup/rman_bak/incr/2/64sgomm7_1_1_cp.baktag=INCR_UPDATE
channel c2: restored backup piece 1
channel c2: restore complete, elapsed time: 00:00:07
Finished recover at 11-OCT-17


Starting backup at 11-OCT-17
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00002 name=/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00006 name=/oracle/oradata/orcl/test_tbs01.dbf
input datafile file number=00005 name=/oracle/oradata/orcl/example01.dbf
input datafile file number=00008 name=/oracle/oradata/orcl/goldengate01.dbf
channel c1: starting piece 1 at 11-OCT-17
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/oradata/orcl/system01.dbf
input datafile file number=00003 name=/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00004 name=/oracle/oradata/orcl/users01.dbf
input datafile file number=00010 name=/oracle/oradata/orcl/users02.dbf
channel c2: starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/3/68sgon10_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:01:15
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/3/69sgon10_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:01:15
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
including current SPFILE in backup set
channel c2: starting piece 1 at 11-OCT-17
including current control file in backup set
channel c1: starting piece 1 at 11-OCT-17
channel c1: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/3/6asgon3b_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
channel c2: finished piece 1 at 11-OCT-17
piece handle=/backup/rman_bak/incr/3/6bsgon3b_1_1_cp.bak tag=INCR_UPDATEcomment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 11-OCT-17


released channel: c1


released channel: c2

 

7.1)、檢查以上第三次增備生成的備份文件及時間:

oracle@SLES11:/backup/rman_bak/incr/3>ls -l

total 10762
-rw-r----- 1 oracle oinstall   516096 2017-10-11 16:16 68sgon10_1_1_cp.bak
-rw-r----- 1 oracle oinstall   335872 2017-10-11 16:16 69sgon10_1_1_cp.bak
-rw-r----- 1 oracle oinstall 10059776 2017-10-11 16:16 6asgon3b_1_1_cp.bak
-rw-r----- 1 oracle oinstall    98304 2017-10-11 16:166bsgon3b_1_1_cp.bak

 

7.2)、執行以上第三次增時應用的第二次增備到全備文件後,檢查全備文件的修改時間已經變化,如下:

oracle@SLES11:/backup/rman_bak/full>ls -l
total 1923888
-rw-r----- 1 oracle oinstall     98304 2017-10-11 15:55lv0_5psgols0_1_1.bak
-rw-r----- 1 oracle oinstall    218624 2017-10-11 15:55lv0_arc_5qsgols4_1_1.bak
-rw-r----- 1 oracle oinstall  17538560 2017-10-11 15:55lv0_arc_5rsgols4_1_1.bak
-rw-r----- 1 oracle oinstall   1186816 2017-10-11 15:55lv0_arc_5ssgols4_1_1.bak
-rw-r----- 1 oracle oinstall    318464 2017-10-11 15:55lv0_arc_5tsgols6_1_1.bak
-rw-r----- 1 oracle oinstall    307200 2017-10-11 15:55lv0_arc_5usgols6_1_1.bak
-rw-r----- 1 oracle oinstall  10010624 2017-10-11 15:55lv0_cf_D-ORCL_id-1342766198_5msgolrg.bak
-rw-r----- 1 oracle oinstall  10059776 2017-10-11 15:55lv0_ctl_5vsgols7_1_1.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
-rw-r----- 1 oracle oinstall 104865792 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak
-rw-r----- 1 oracle oinstall 660611072 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
-rw-r----- 1 oracle oinstall 734011392 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
-rw-r----- 1 oracle oinstall 160440320 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
-rw-r----- 1 oracle oinstall 157294592 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
-rw-r----- 1 oracle oinstall   1056768 2017-10-11 16:15lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak
-rw-r----- 1 oracle oinstall   5251072 2017-10-11 16:15 lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak

 

8、接下來做不完全恢復測試:

RMAN> shutdown immediate;

RMAN> startup mount;

 

RMAN> run{
2>  allocate channel c1 type disk;
3>  allocate channel c2 type disk;
4>  set until scn 3092625;  ##這個是第二次增備後(包含 insert into tmp values(1)),insert into tmpvalues(2) 前的 scn,即只恢復到tmp表插入爲1的記錄。
5>  restore database;
6>  recover database;
7>  release channel c1;
8>  release channel c2;
9> }

 

using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=133 device type=DISK


allocated channel: c2
channel c2: SID=10 device type=DISK


executing command: SET until clause


Starting restore at 11-OCT-17


channel c1: restoring datafile 00001
input datafile copy RECID=160 STAMP=957111322 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSTEM_FNO-1_5gsgolnd.bak
destination for restore of datafile 00001: /oracle/oradata/orcl/system01.dbf
channel c2: restoring datafile 00002
input datafile copy RECID=162 STAMP=957111323 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-SYSAUX_FNO-2_5hsgolnd.bak
destination for restore of datafile 00002: /oracle/oradata/orcl/sysaux01.dbf
channel c1: copied datafile copy of datafile 00001
output file name=/oracle/oradata/orcl/system01.dbf RECID=0 STAMP=0
channel c1: restoring datafile 00003
input datafile copy RECID=158 STAMP=957111321 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-UNDOTBS1_FNO-3_5jsgolp8.bak
destination for restore of datafile 00003: /oracle/oradata/orcl/undotbs01.dbf
channel c2: copied datafile copy of datafile 00002
output file name=/oracle/oradata/orcl/sysaux01.dbf RECID=0 STAMP=0
channel c2: restoring datafile 00004
input datafile copy RECID=156 STAMP=957111320 file name=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-4_5nsgols0.bak
destination for restore of datafile 00004: /oracle/oradata/orcl/users01.dbf
channel c2: copied datafile copy of datafile 00004
output file name=/oracle/oradata/orcl/users01.dbf RECID=0 STAMP=0
channel c2: restoring datafile 00005
input datafile copy RECID=157 STAMP=957111321 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-EXAMPLE_FNO-5_5ksgolra.bak
destination for restore of datafile 00005: /oracle/oradata/orcl/example01.dbf
channel c1: copied datafile copy of datafile 00003
output file name=/oracle/oradata/orcl/undotbs01.dbf RECID=0 STAMP=0
channel c1: restoring datafile 00006
input datafile copy RECID=161 STAMP=957111322 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-TEST_TBS_FNO-6_5isgolnd.bak
destination for restore of datafile 00006: /oracle/oradata/orcl/test_tbs01.dbf
channel c2: copied datafile copy of datafile 00005
output file name=/oracle/oradata/orcl/example01.dbf RECID=0 STAMP=0
channel c2: restoring datafile 00008
input datafile copy RECID=159 STAMP=957111321 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-GOLDENGATE_FNO-8_5lsgolra.bak
destination for restore of datafile 00008:/oracle/oradata/orcl/goldengate01.dbf
channel c1: copied datafile copy of datafile 00006
output file name=/oracle/oradata/orcl/test_tbs01.dbf RECID=0 STAMP=0
channel c1: restoring datafile 00010
input datafile copy RECID=155 STAMP=957111320 filename=/backup/rman_bak/full/lv0_data_D-ORCL_I-1342766198_TS-USERS_FNO-10_5osgols0.bak
destination for restore of datafile 00010: /oracle/oradata/orcl/users02.dbf
channel c2: copied datafile copy of datafile 00008
output file name=/oracle/oradata/orcl/goldengate01.dbf RECID=0 STAMP=0
channel c1: copied datafile copy of datafile 00010
output file name=/oracle/oradata/orcl/users02.dbf RECID=0 STAMP=0
Finished restore at 11-OCT-17


Starting recover at 11-OCT-17


starting media recovery
media recovery complete, elapsed time: 00:00:03


Finished recover at 11-OCT-17


released channel: c1


released channel: c2

 

說明:以上只應用了全備文件,因爲每次增備時,都已經應用更新上一次的增備到全備文件了,並且不需要使用歸檔,就可以恢復到 tmp 表插入第一條記錄的時候了。

 

9、恢復後驗證:

16:23:46 SYS@orcl*SQL> alter database open resetlogs;


Database altered.

 

16:24:20 TUSER@orcl*SQL> select * from tmp;


                ID
------------------
                 1

 

已經按預期進行了恢復,只恢復tmp表的插入的第一條記錄了。

以上就是使用 基於 backup as copylevel 0 database 進行增備合併的備份和恢復方法。

(完)

 

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