手工指定CHANNEL与设置PARALLELISM参数的异同以及FILESPERSET参数的作用

本文出自 “大脸猫” 博客,请务必保留此出处http://bfc99.blog.51cto.com/265386/1354771

感谢大脸猫的实验分析结果。

 

下面以实验的方式,展示在RUN块中手工指定多信道(CHANNEL,也有称之为“通道”) 与设置并行度PARALLELISM参数 的异同,以及FILESPERSET参数的作用。

RMAN备份时,为了加快备份的速度,提供了并行处理的方式。一种是设置多个信道,另一种是设置PARALLELISM参数。那么这两种方式有什么不同呢?今天在实验的方式来加深理解。

首先,我们来实验第一种方式,即设置多个信道的方式。为了比较增加信道后的效果,我们先做一次单信道的备份操作。
[oracle@localhost ~]$ rman target /
Recovery Manager: Release 10.2.0.5.0 - Production on Sat Jan 25 15:22:13 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: ORCL (DBID=1347935162)
RMAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
}2> 3> 4> 5>
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=158 devtype=DISK
Starting backup at 20140125 15:27:37
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel c1: starting piece 1 at 20140125 15:27:38
channel c1: finished piece 1 at 20140125 15:28:23
piece handle=/oradata/orcl/databak1/8iouvaba_1_1 tag=TAG20140125T152737 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:45
Finished backup at 20140125 15:28:23
Starting Control File and SPFILE Autobackup at 20140125 15:28:23
piece handle=/oradata/orcl/databak/c-1347935162-20140125-08 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 15:28:26
released channel: c1
可见,数据库的备份时间约为49秒(15:27:37至15:28:26)。

下面我们设置2个信道,来执行备份。
RMAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c2 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
release channel c2;
}2> 3> 4> 5> 6> 7>
allocated channel: c1
channel c1: sid=158 devtype=DISK
allocated channel: c2
channel c2: sid=147 devtype=DISK
Starting backup at 20140125 15:31:45
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
channel c1: starting piece 1 at 20140125 15:31:45
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel c2: starting piece 1 at 20140125 15:31:45
channel c2: finished piece 1 at 20140125 15:32:00
piece handle=/oradata/orcl/databak1/8louvaj1_1_1 tag=TAG20140125T153145 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:15
channel c1: finished piece 1 at 20140125 15:32:35
piece handle=/oradata/orcl/databak1/8kouvaj1_1_1 tag=TAG20140125T153145 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:50
Finished backup at 20140125 15:32:35
Starting Control File and SPFILE Autobackup at 20140125 15:32:35
piece handle=/oradata/orcl/databak/c-1347935162-20140125-09 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 15:32:38
released channel: c1
released channel: c2
2个信道的情况下,备份时间约为53秒(15:31:45至15:32:38)。时间上还要慢了一些。
而且,我们发现,组成数据库的数据文件一共有6个,当用2个信道备份时,其自动分成了两组,每组3个文件。
备份结束后,每个信道生成一个备份文件,共两个备份文件。
我们再试试3个信道时的情况
RMAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c2 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c3 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
release channel c2;
release channel c3;
}2> 3> 4> 5> 6> 7> 8> 9>
allocated channel: c1
channel c1: sid=158 devtype=DISK
allocated channel: c2
channel c2: sid=147 devtype=DISK
allocated channel: c3
channel c3: sid=138 devtype=DISK
Starting backup at 20140125 15:39:06
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel c1: starting piece 1 at 20140125 15:39:07
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel c2: starting piece 1 at 20140125 15:39:07
channel c3: starting full datafile backupset
channel c3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel c3: starting piece 1 at 20140125 15:39:07
channel c2: finished piece 1 at 20140125 15:39:14
piece handle=/oradata/orcl/databak1/8oouvb0r_1_1 tag=TAG20140125T153906 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:07
channel c1: finished piece 1 at 20140125 15:39:59
piece handle=/oradata/orcl/databak1/8nouvb0r_1_1 tag=TAG20140125T153906 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:52
channel c3: finished piece 1 at 20140125 15:39:59
piece handle=/oradata/orcl/databak1/8pouvb0r_1_1 tag=TAG20140125T153906 comment=NONE
channel c3: backup set complete, elapsed time: 00:00:52
Finished backup at 20140125 15:39:59
Starting Control File and SPFILE Autobackup at 20140125 15:39:59
piece handle=/oradata/orcl/databak/c-1347935162-20140125-0a comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 15:40:02
released channel: c1
released channel: c2
released channel: c3
3个信道的情况下,备份时间约为56秒(15:39:06至15:40:02)
而且,6个数据文件也被分成了三组,每组2个文件。那么如果我设成4个信道,6个文件会如何分组呢?
RMAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c2 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c3 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c4 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
2> 3> 4> 5> 6> 7> 8> 9> 10> 11>
allocated channel: c1
channel c1: sid=158 devtype=DISK
allocated channel: c2
channel c2: sid=147 devtype=DISK
allocated channel: c3
channel c3: sid=138 devtype=DISK
allocated channel: c4
channel c4: sid=137 devtype=DISK
Starting backup at 20140125 15:42:49
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel c1: starting piece 1 at 20140125 15:42:49
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel c2: starting piece 1 at 20140125 15:42:49
channel c3: starting full datafile backupset
channel c3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel c3: starting piece 1 at 20140125 15:42:49
channel c2: finished piece 1 at 20140125 15:43:04
piece handle=/oradata/orcl/databak1/8souvb7p_1_1 tag=TAG20140125T154249 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:15
channel c3: finished piece 1 at 20140125 15:43:39
piece handle=/oradata/orcl/databak1/8touvb7p_1_1 tag=TAG20140125T154249 comment=NONE
channel c3: backup set complete, elapsed time: 00:00:50
channel c1: finished piece 1 at 20140125 15:43:46
piece handle=/oradata/orcl/databak1/8rouvb7p_1_1 tag=TAG20140125T154249 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:57
Finished backup at 20140125 15:43:46
Starting Control File and SPFILE Autobackup at 20140125 15:43:46
piece handle=/oradata/orcl/databak/c-1347935162-20140125-0b comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 15:43:47
released channel: c1
released channel: c2
released channel: c3
released channel: c4
分配了4个信道,但备份过程中,只实际使用了3个。备份的时间为58秒(15:42:49至15:43:47 )。
到了这里,看来RMAN是在各个信道间平均分配文件数量的。推测一下,如果设成6个信道,应该就是一个文件一个信道了。
RMAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c2 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c3 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c4 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c5 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c6 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
}2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16>
allocated channel: c1
channel c1: sid=158 devtype=DISK
allocated channel: c2
channel c2: sid=147 devtype=DISK
allocated channel: c3
channel c3: sid=138 devtype=DISK
allocated channel: c4
channel c4: sid=137 devtype=DISK
allocated channel: c5
channel c5: sid=156 devtype=DISK
allocated channel: c6
channel c6: sid=155 devtype=DISK
Starting backup at 20140125 15:57:58
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
channel c1: starting piece 1 at 20140125 15:57:58
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
channel c2: starting piece 1 at 20140125 15:57:58
channel c3: starting full datafile backupset
channel c3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
channel c3: starting piece 1 at 20140125 15:57:58
channel c4: starting full datafile backupset
channel c4: specifying datafile(s) in backupset
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel c4: starting piece 1 at 20140125 15:57:58
channel c5: starting full datafile backupset
channel c5: specifying datafile(s) in backupset
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel c5: starting piece 1 at 20140125 15:57:58
channel c6: starting full datafile backupset
channel c6: specifying datafile(s) in backupset
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel c6: starting piece 1 at 20140125 15:57:58
channel c5: finished piece 1 at 20140125 15:58:01
piece handle=/oradata/orcl/databak1/93ouvc46_1_1 tag=TAG20140125T155758 comment=NONE
channel c5: backup set complete, elapsed time: 00:00:03
channel c2: finished piece 1 at 20140125 15:58:08
piece handle=/oradata/orcl/databak1/90ouvc46_1_1 tag=TAG20140125T155758 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:10
channel c6: finished piece 1 at 20140125 15:58:08
piece handle=/oradata/orcl/databak1/94ouvc46_1_1 tag=TAG20140125T155758 comment=NONE
channel c6: backup set complete, elapsed time: 00:00:10
channel c4: finished piece 1 at 20140125 15:58:11
piece handle=/oradata/orcl/databak1/92ouvc46_1_1 tag=TAG20140125T155758 comment=NONE
channel c4: backup set complete, elapsed time: 00:00:13
channel c3: finished piece 1 at 20140125 15:58:36
piece handle=/oradata/orcl/databak1/91ouvc46_1_1 tag=TAG20140125T155758 comment=NONE
channel c3: backup set complete, elapsed time: 00:00:39
channel c1: finished piece 1 at 20140125 15:58:52
piece handle=/oradata/orcl/databak1/8vouvc46_1_1 tag=TAG20140125T155758 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:54
Finished backup at 20140125 15:58:52
Starting Control File and SPFILE Autobackup at 20140125 15:58:52
piece handle=/oradata/orcl/databak/c-1347935162-20140125-0c comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 15:58:55
released channel: c1
released channel: c2
released channel: c3
released channel: c4
released channel: c5
released channel: c6
果然,如推测中的一样。是一个信道一个文件,最终生成了6个备份文件。总用时约57秒(15:57:58至 15:58:55)
经过以上实验,得出以下结论:
1、增加信道,RMAN会并行处理备份任务,但根据硬件环境的不同,并不是越多越快。以本次实验来说,备份时间最省的,却是只有一个信道的时候。这可能是因为实验环境为一跑在普通台式机上的虚拟机所致,其本身的并行处理能力就低。
2、当设有多个信道时,数据文件会平均分配至各个信道上。若文件不能全部均分至所有信道上,则会放弃部分信道的使用。例如上面实验中的6个数据文件在4个信道上备份时,则实际上只使用了3个信道。可是,假如组成数据库的数据文件的个数是质数(只能被它自己和1整除的数),比如7个文件。当设置为4个信道时,会如何分配呢?由于无论是用4个,还是3个或2个信道,我们都不能把数据文件均分到信道上。这里先卖个关子,为了保证我们下面的实验可以在相同的环境下完成,这个实验,我们放到最后。
3、自动备份的控制文件和参数文件并没有备份到信道指定的位置(/oradata/orcl/databak1),而放存放到了RMAN中配置的“控制文件自动备份”所指定的位置(见下面红字部分)。
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oradata/orcl/databak/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/oradata/orcl/databak/%U';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/oracle/product/10.2/db_1/dbs/snapcf_orcl.f'; # default
现在再来看并行度PARALLELISM这个参数。这个参数要通过输入以下命令来设置(这里设置的并行度为3):
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored
我们再执行一个信道的备份,看看是什么效果。
RMAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
}2> 3> 4> 5>
allocated channel: c1
channel c1: sid=158 devtype=DISK
Starting backup at 20140125 16:20:32
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel c1: starting piece 1 at 20140125 16:20:32
channel c1: finished piece 1 at 20140125 16:21:17
piece handle=/oradata/orcl/databak1/9bouvdeg_1_1 tag=TAG20140125T162032 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:45
Finished backup at 20140125 16:21:17
Starting Control File and SPFILE Autobackup at 20140125 16:21:17
piece handle=/oradata/orcl/databak/c-1347935162-20140125-0f comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 16:21:18
released channel: c1
嘿嘿,在RUN块中指定信道时,这个参数是不管用的。也就是说,你在RUN块内指定了几个信道,就用几个信道去备份,与这个PARALLELISM这个参数无关。
那我们直接在RMAN中输入BACKUP DATABASE;会是什么效果呢?
RMAN> backup database;
Starting backup at 20140125 16:24:41
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=147 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=138 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 16:24:42
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 16:24:42
channel ORA_DISK_3: starting full datafile backupset
channel ORA_DISK_3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel ORA_DISK_3: starting piece 1 at 20140125 16:24:42
channel ORA_DISK_2: finished piece 1 at 20140125 16:24:49
piece handle=/oradata/orcl/databak/9eouvdma_1_1 tag=TAG20140125T162441 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: finished piece 1 at 20140125 16:25:24
piece handle=/oradata/orcl/databak/9douvdma_1_1 tag=TAG20140125T162441 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:42
channel ORA_DISK_3: finished piece 1 at 20140125 16:25:24
piece handle=/oradata/orcl/databak/9fouvdma_1_1 tag=TAG20140125T162441 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:42
Finished backup at 20140125 16:25:24
Starting Control File and SPFILE Autobackup at 20140125 16:25:24
piece handle=/oradata/orcl/databak/c-1347935162-20140125-10 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 16:25:27
RMAN自动创建了三个信道,ORA_DISK_1至3。备份时间为46秒(16:24:41至16:25:27)。这个时间要比我们手工指定三个信道(56秒)时快。
再设置并行度为4看看效果。
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 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
released channel: ORA_DISK_2
released channel: ORA_DISK_3
RMAN> backup database;
Starting backup at 20140125 16:26:38
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=147 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=138 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=137 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 16:26:38
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 16:26:38
channel ORA_DISK_3: starting full datafile backupset
channel ORA_DISK_3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel ORA_DISK_3: starting piece 1 at 20140125 16:26:39
channel ORA_DISK_2: finished piece 1 at 20140125 16:26:54
piece handle=/oradata/orcl/databak/9iouvdpu_1_1 tag=TAG20140125T162638 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:16
channel ORA_DISK_1: finished piece 1 at 20140125 16:27:29
piece handle=/oradata/orcl/databak/9houvdpu_1_1 tag=TAG20140125T162638 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:51
channel ORA_DISK_3: finished piece 1 at 20140125 16:27:29
piece handle=/oradata/orcl/databak/9jouvdpu_1_1 tag=TAG20140125T162638 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:51
Finished backup at 20140125 16:27:29
Starting Control File and SPFILE Autobackup at 20140125 16:27:29
piece handle=/oradata/orcl/databak/c-1347935162-20140125-11 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 16:27:32
和我们手工指定4个信道时类似,备份时只实际使用了3个信道。备份的时间为54秒(16:26:38至16:27:32),和上面手工指定4个信道所用时间来比,稍快一点儿。但比刚才自动3信道的要慢。
再设置并行度为7看看效果。
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 7 BACKUP TYPE TO BACKUPSET;
old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 7 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored
released channel: ORA_DISK_1
released channel: ORA_DISK_2
released channel: ORA_DISK_3
released channel: ORA_DISK_4
RMAN> backup database;
Starting backup at 20140125 16:29:00
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=147 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=138 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=137 devtype=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: sid=156 devtype=DISK
allocated channel: ORA_DISK_6
channel ORA_DISK_6: sid=155 devtype=DISK
allocated channel: ORA_DISK_7
channel ORA_DISK_7: sid=134 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 16:29:02
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 16:29:02
channel ORA_DISK_3: starting full datafile backupset
channel ORA_DISK_3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
channel ORA_DISK_3: starting piece 1 at 20140125 16:29:02
channel ORA_DISK_4: starting full datafile backupset
channel ORA_DISK_4: specifying datafile(s) in backupset
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel ORA_DISK_4: starting piece 1 at 20140125 16:29:02
channel ORA_DISK_5: starting full datafile backupset
channel ORA_DISK_5: specifying datafile(s) in backupset
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel ORA_DISK_5: starting piece 1 at 20140125 16:29:02
channel ORA_DISK_6: starting full datafile backupset
channel ORA_DISK_6: specifying datafile(s) in backupset
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel ORA_DISK_6: starting piece 1 at 20140125 16:29:02
channel ORA_DISK_6: finished piece 1 at 20140125 16:29:09
piece handle=/oradata/orcl/databak/9qouvdue_1_1 tag=TAG20140125T162902 comment=NONE
channel ORA_DISK_6: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_5: finished piece 1 at 20140125 16:29:16
piece handle=/oradata/orcl/databak/9pouvdue_1_1 tag=TAG20140125T162902 comment=NONE
channel ORA_DISK_5: backup set complete, elapsed time: 00:00:14
channel ORA_DISK_2: finished piece 1 at 20140125 16:29:19
piece handle=/oradata/orcl/databak/9mouvdue_1_1 tag=TAG20140125T162902 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:17
channel ORA_DISK_4: finished piece 1 at 20140125 16:29:22
piece handle=/oradata/orcl/databak/9oouvdue_1_1 tag=TAG20140125T162902 comment=NONE
channel ORA_DISK_4: backup set complete, elapsed time: 00:00:20
channel ORA_DISK_3: finished piece 1 at 20140125 16:29:47
piece handle=/oradata/orcl/databak/9nouvdue_1_1 tag=TAG20140125T162902 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:00:45
channel ORA_DISK_1: finished piece 1 at 20140125 16:29:54
piece handle=/oradata/orcl/databak/9louvdue_1_1 tag=TAG20140125T162902 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:52
Finished backup at 20140125 16:29:54
Starting Control File and SPFILE Autobackup at 20140125 16:29:54
piece handle=/oradata/orcl/databak/c-1347935162-20140125-12 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 16:29:57
因为只有6个文件,所以,只实际使用了6个信道。备份时间为57秒(16:29:00至16:29:57),和手工指定6信道时的用时完全一样。
综上,我们可以看出,这个并行度的参数与手工指定信道的作用是类似的。只不过一个是由RMAN自动分配,一个由人工指定。
FILESPERSET这个参数又是做什么用的呢?还是来做实验。
我们把并行度改回2
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 7 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored
根据我们前边做实验的经验,如果这时执行backup database;命令,会自动通过两个信道来备份。
如果我们执行 backup database filesperset 2; 又会是什么结果呢?
RMAN> backup database filesperset 2;
Starting backup at 20140125 16:58:48
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=158 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=147 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 16:58:48
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 16:58:48
channel ORA_DISK_2: finished piece 1 at 20140125 16:58:55
piece handle=/oradata/orcl/databak/9vouvfm8_1_1 tag=TAG20140125T165848 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 16:58:55
channel ORA_DISK_1: finished piece 1 at 20140125 16:59:40
piece handle=/oradata/orcl/databak/9uouvfm8_1_1 tag=TAG20140125T165848 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:52
channel ORA_DISK_2: finished piece 1 at 20140125 16:59:40
piece handle=/oradata/orcl/databak/a0ouvfmf_1_1 tag=TAG20140125T165848 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:45
Finished backup at 20140125 16:59:40
Starting Control File and SPFILE Autobackup at 20140125 16:59:40
piece handle=/oradata/orcl/databak/c-1347935162-20140125-14 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 16:59:43
看到了吗,加了filesperset 2 这个参数后,每次每信道只读取2个数据文件了。最终6个数据文件,生成了3个备份文件。
换句话说,每个备份集里,最多只能包含两个源文件。如果我们设为 filesperset 1的话,由于一个备份集中只能有1个源文件,所以,实验环境下的这6个数据文件就要生成6个备份集了。
验证一下:
RMAN> backup database filesperset 1;
Starting backup at 20140125 17:01:01
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 17:01:01
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 17:01:01
channel ORA_DISK_2: finished piece 1 at 20140125 17:01:08
piece handle=/oradata/orcl/databak/a3ouvfqd_1_1 tag=TAG20140125T170101 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 17:01:08
channel ORA_DISK_1: finished piece 1 at 20140125 17:01:43
piece handle=/oradata/orcl/databak/a2ouvfqd_1_1 tag=TAG20140125T170101 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:42
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00004 name=/oradata/orcl/users01.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 17:01:43
channel ORA_DISK_2: finished piece 1 at 20140125 17:01:43
piece handle=/oradata/orcl/databak/a4ouvfqk_1_1 tag=TAG20140125T170101 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:35
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel ORA_DISK_2: starting piece 1 at 20140125 17:01:43
channel ORA_DISK_1: finished piece 1 at 20140125 17:01:44
piece handle=/oradata/orcl/databak/a5ouvfrn_1_1 tag=TAG20140125T170101 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel ORA_DISK_1: starting piece 1 at 20140125 17:01:44
channel ORA_DISK_2: finished piece 1 at 20140125 17:01:44
piece handle=/oradata/orcl/databak/a6ouvfrn_1_1 tag=TAG20140125T170101 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: finished piece 1 at 20140125 17:01:45
piece handle=/oradata/orcl/databak/a7ouvfro_1_1 tag=TAG20140125T170101 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 20140125 17:01:45
Starting Control File and SPFILE Autobackup at 20140125 17:01:46
piece handle=/oradata/orcl/databak/c-1347935162-20140125-15 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 17:01:47
果然。
现在,我们回过头来,把当需要备份的文件个数为质数时,如何在多个信道中分配的实验做了。
为了满足这个条件,我们在数据库中再添加一个表空间,并在该表空间中添加一个数据文件,从而形成7个数据文件。
SQL> create tablespace demo datafile '/oradata/orcl/demo01.dbf' size 10M;
Tablespace created.
SQL> create table demo (id int) tablespace demo;
Table created.
SQL> insert into demo values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> select file_name,file_id,bytes/1024/1024 "size(M)" from dba_data_files;
FILE_NAME FILE_ID size(M)
---------------------------------------- ---------- ----------
/oradata/orcl/system01.dbf 1 400
/oradata/orcl/undotbs01.dbf 2 320
/oradata/orcl/sysaux01.dbf 3 190
/oradata/orcl/users01.dbf 4 21.25
/oradata/orcl/hrtbs01.dbf 5 10
/oradata/orcl/demo01.dbf 6 10
/oradata/orcl/system02.dbf 7 10
7 rows selected.
再回到RMAN中,以手工指定4个通道的方式来进行数据库备份。
MAN> run
{ allocate channel c1 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c2 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c3 device type disk format '/oradata/orcl/databak1/%U';
allocate channel c4 device type disk format '/oradata/orcl/databak1/%U';
backup database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}2> 3> 4> 5> 6> 7> 8> 9> 10> 11>
released channel: ORA_DISK_1
released channel: ORA_DISK_2
allocated channel: c1
channel c1: sid=158 devtype=DISK
allocated channel: c2
channel c2: sid=147 devtype=DISK
allocated channel: c3
channel c3: sid=138 devtype=DISK
allocated channel: c4
channel c4: sid=137 devtype=DISK
Starting backup at 20140125 17:41:56
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oradata/orcl/system01.dbf
channel c1: starting piece 1 at 20140125 17:41:56
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00002 name=/oradata/orcl/undotbs01.dbf
input datafile fno=00007 name=/oradata/orcl/system02.dbf
channel c2: starting piece 1 at 20140125 17:41:56
channel c3: starting full datafile backupset
channel c3: specifying datafile(s) in backupset
input datafile fno=00003 name=/oradata/orcl/sysaux01.dbf
input datafile fno=00006 name=/oradata/orcl/demo01.dbf
channel c3: starting piece 1 at 20140125 17:41:56
channel c4: starting full datafile backupset
channel c4: specifying datafile(s) in backupset
input datafile fno=00004 name=/oradata/orcl/users01.dbf
input datafile fno=00005 name=/oradata/orcl/hrtbs01.dbf
channel c4: starting piece 1 at 20140125 17:41:56
channel c4: finished piece 1 at 20140125 17:41:57
piece handle=/oradata/orcl/databak1/agouvi74_1_1 tag=TAG20140125T174156 comment=NONE
channel c4: backup set complete, elapsed time: 00:00:01
channel c2: finished piece 1 at 20140125 17:42:12
piece handle=/oradata/orcl/databak1/aeouvi74_1_1 tag=TAG20140125T174156 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:16
channel c3: finished piece 1 at 20140125 17:42:27
piece handle=/oradata/orcl/databak1/afouvi74_1_1 tag=TAG20140125T174156 comment=NONE
channel c3: backup set complete, elapsed time: 00:00:31
channel c1: finished piece 1 at 20140125 17:42:34
piece handle=/oradata/orcl/databak1/adouvi74_1_1 tag=TAG20140125T174156 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:38
Finished backup at 20140125 17:42:34
Starting Control File and SPFILE Autobackup at 20140125 17:42:34
piece handle=/oradata/orcl/databak/c-1347935162-20140125-18 comment=NONE
Finished Control File and SPFILE Autobackup at 20140125 17:42:37
released channel: c1
released channel: c2
released channel: c3
released channel: c4
实验证明,当需备份的文件数不能均分至多个信道时,RMAN会以一种近似平均的方法来处理。那么为什么6个文件4个通道时,RMAN没有采用1-1-2-2的方式来使用4个通道呢?个人推测是由于当按这种方式分配时,最多的一个信道上还是要有2个文件,那么这时,就不如把6个文件分配在3个通道上(即2-2-2的分配方式)即节省了通道数,又能保证总体的备份时间不会延长。同时,在进行文件分配时,文件的大小,也是其进行分配的一个考虑因素,RMAN会在首先保证各信道处理的文件个数接近的前提下,使每个信道上分配到的总的文件大小也尽量均衡。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值