RMAN中基于copy的全备合并增备进行增量备份的方式

来源:互联网 发布:apache开源项目 编辑:程序博客网 时间:2024/06/11 10:24

 

日常在生产环境中使用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 进行增备合并的备份和恢复方法。

(完)

 

阅读全文
0 0
原创粉丝点击