您的位置:首页 > 其它

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

2014-01-25 17:36 363 查看
下面以实验的方式,展示在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 2014Copyright (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 catalogallocated channel: c1channel c1: sid=158 devtype=DISKStarting backup at 20140125 15:27:37channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel c1: starting piece 1 at 20140125 15:27:38channel c1: finished piece 1 at 20140125 15:28:23piece handle=/oradata/orcl/databak1/8iouvaba_1_1 tag=TAG20140125T152737 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:45Finished backup at 20140125 15:28:23Starting Control File and SPFILE Autobackup at 20140125 15:28:23piece handle=/oradata/orcl/databak/c-1347935162-20140125-08 comment=NONEFinished Control File and SPFILE Autobackup at 20140125 15:28:26released 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: c1channel c1: sid=158 devtype=DISKallocated channel: c2channel c2: sid=147 devtype=DISKStarting backup at 20140125 15:31:45channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfchannel c1: starting piece 1 at 20140125 15:31:45channel c2: starting full datafile backupsetchannel c2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel c2: starting piece 1 at 20140125 15:31:45channel c2: finished piece 1 at 20140125 15:32:00piece handle=/oradata/orcl/databak1/8louvaj1_1_1 tag=TAG20140125T153145 comment=NONEchannel c2: backup set complete, elapsed time: 00:00:15channel c1: finished piece 1 at 20140125 15:32:35piece handle=/oradata/orcl/databak1/8kouvaj1_1_1 tag=TAG20140125T153145 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:50Finished backup at 20140125 15:32:35Starting Control File and SPFILE Autobackup at 20140125 15:32:35piece handle=/oradata/orcl/databak/c-1347935162-20140125-09 comment=NONEFinished Control File and SPFILE Autobackup at 20140125 15:32:38released channel: c1released 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: c1channel c1: sid=158 devtype=DISKallocated channel: c2channel c2: sid=147 devtype=DISKallocated channel: c3channel c3: sid=138 devtype=DISKStarting backup at 20140125 15:39:06channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel c1: starting piece 1 at 20140125 15:39:07channel c2: starting full datafile backupsetchannel c2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel c2: starting piece 1 at 20140125 15:39:07channel c3: starting full datafile backupsetchannel c3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel c3: starting piece 1 at 20140125 15:39:07channel c2: finished piece 1 at 20140125 15:39:14piece handle=/oradata/orcl/databak1/8oouvb0r_1_1 tag=TAG20140125T153906 comment=NONEchannel c2: backup set complete, elapsed time: 00:00:07channel c1: finished piece 1 at 20140125 15:39:59piece handle=/oradata/orcl/databak1/8nouvb0r_1_1 tag=TAG20140125T153906 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:52channel c3: finished piece 1 at 20140125 15:39:59piece handle=/oradata/orcl/databak1/8pouvb0r_1_1 tag=TAG20140125T153906 comment=NONEchannel c3: backup set complete, elapsed time: 00:00:52Finished backup at 20140125 15:39:59Starting Control File and SPFILE Autobackup at 20140125 15:39:59piece handle=/oradata/orcl/databak/c-1347935162-20140125-0a comment=NONEFinished Control File and SPFILE Autobackup at 20140125 15:40:02released channel: c1released channel: c2released channel: c33个信道的情况下,备份时间约为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: c1channel c1: sid=158 devtype=DISKallocated channel: c2channel c2: sid=147 devtype=DISKallocated channel: c3channel c3: sid=138 devtype=DISKallocated channel: c4channel c4: sid=137 devtype=DISKStarting backup at 20140125 15:42:49channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel c1: starting piece 1 at 20140125 15:42:49channel c2: starting full datafile backupsetchannel c2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel c2: starting piece 1 at 20140125 15:42:49channel c3: starting full datafile backupsetchannel c3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel c3: starting piece 1 at 20140125 15:42:49channel c2: finished piece 1 at 20140125 15:43:04piece handle=/oradata/orcl/databak1/8souvb7p_1_1 tag=TAG20140125T154249 comment=NONEchannel c2: backup set complete, elapsed time: 00:00:15channel c3: finished piece 1 at 20140125 15:43:39piece handle=/oradata/orcl/databak1/8touvb7p_1_1 tag=TAG20140125T154249 comment=NONEchannel c3: backup set complete, elapsed time: 00:00:50channel c1: finished piece 1 at 20140125 15:43:46piece handle=/oradata/orcl/databak1/8rouvb7p_1_1 tag=TAG20140125T154249 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:57Finished backup at 20140125 15:43:46Starting Control File and SPFILE Autobackup at 20140125 15:43:46piece handle=/oradata/orcl/databak/c-1347935162-20140125-0b comment=NONEFinished Control File and SPFILE Autobackup at 20140125 15:43:47released channel: c1released channel: c2released channel: c3released 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: c1channel c1: sid=158 devtype=DISKallocated channel: c2channel c2: sid=147 devtype=DISKallocated channel: c3channel c3: sid=138 devtype=DISKallocated channel: c4channel c4: sid=137 devtype=DISKallocated channel: c5channel c5: sid=156 devtype=DISKallocated channel: c6channel c6: sid=155 devtype=DISKStarting backup at 20140125 15:57:58channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfchannel c1: starting piece 1 at 20140125 15:57:58channel c2: starting full datafile backupsetchannel c2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfchannel c2: starting piece 1 at 20140125 15:57:58channel c3: starting full datafile backupsetchannel c3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfchannel c3: starting piece 1 at 20140125 15:57:58channel c4: starting full datafile backupsetchannel c4: specifying datafile(s) in backupsetinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel c4: starting piece 1 at 20140125 15:57:58channel c5: starting full datafile backupsetchannel c5: specifying datafile(s) in backupsetinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel c5: starting piece 1 at 20140125 15:57:58channel c6: starting full datafile backupsetchannel c6: specifying datafile(s) in backupsetinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel c6: starting piece 1 at 20140125 15:57:58channel c5: finished piece 1 at 20140125 15:58:01piece handle=/oradata/orcl/databak1/93ouvc46_1_1 tag=TAG20140125T155758 comment=NONEchannel c5: backup set complete, elapsed time: 00:00:03channel c2: finished piece 1 at 20140125 15:58:08piece handle=/oradata/orcl/databak1/90ouvc46_1_1 tag=TAG20140125T155758 comment=NONEchannel c2: backup set complete, elapsed time: 00:00:10channel c6: finished piece 1 at 20140125 15:58:08piece handle=/oradata/orcl/databak1/94ouvc46_1_1 tag=TAG20140125T155758 comment=NONEchannel c6: backup set complete, elapsed time: 00:00:10channel c4: finished piece 1 at 20140125 15:58:11piece handle=/oradata/orcl/databak1/92ouvc46_1_1 tag=TAG20140125T155758 comment=NONEchannel c4: backup set complete, elapsed time: 00:00:13channel c3: finished piece 1 at 20140125 15:58:36piece handle=/oradata/orcl/databak1/91ouvc46_1_1 tag=TAG20140125T155758 comment=NONEchannel c3: backup set complete, elapsed time: 00:00:39channel c1: finished piece 1 at 20140125 15:58:52piece handle=/oradata/orcl/databak1/8vouvc46_1_1 tag=TAG20140125T155758 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:54Finished backup at 20140125 15:58:52Starting Control File and SPFILE Autobackup at 20140125 15:58:52piece handle=/oradata/orcl/databak/c-1347935162-20140125-0c comment=NONEFinished Control File and SPFILE Autobackup at 20140125 15:58:55released channel: c1released channel: c2released channel: c3released channel: c4released channel: c5released 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; # defaultCONFIGURE BACKUP OPTIMIZATION OFF;CONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE 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; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/oradata/orcl/databak/%U';CONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE 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: c1channel c1: sid=158 devtype=DISKStarting backup at 20140125 16:20:32channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel c1: starting piece 1 at 20140125 16:20:32channel c1: finished piece 1 at 20140125 16:21:17piece handle=/oradata/orcl/databak1/9bouvdeg_1_1 tag=TAG20140125T162032 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:45Finished backup at 20140125 16:21:17Starting Control File and SPFILE Autobackup at 20140125 16:21:17piece handle=/oradata/orcl/databak/c-1347935162-20140125-0f comment=NONEFinished Control File and SPFILE Autobackup at 20140125 16:21:18released channel: c1嘿嘿,在RUN块中指定信道时,这个参数是不管用的。也就是说,你在RUN块内指定了几个信道,就用几个信道去备份,与这个PARALLELISM这个参数无关。那我们直接在RMAN中输入BACKUP DATABASE;会是什么效果呢?RMAN> backup database;Starting backup at 20140125 16:24:41allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=158 devtype=DISKallocated channel: ORA_DISK_2channel ORA_DISK_2: sid=147 devtype=DISKallocated channel: ORA_DISK_3channel ORA_DISK_3: sid=138 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 16:24:42channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 16:24:42channel ORA_DISK_3: starting full datafile backupsetchannel ORA_DISK_3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel ORA_DISK_3: starting piece 1 at 20140125 16:24:42channel ORA_DISK_2: finished piece 1 at 20140125 16:24:49piece handle=/oradata/orcl/databak/9eouvdma_1_1 tag=TAG20140125T162441 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:07channel ORA_DISK_1: finished piece 1 at 20140125 16:25:24piece handle=/oradata/orcl/databak/9douvdma_1_1 tag=TAG20140125T162441 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:42channel ORA_DISK_3: finished piece 1 at 20140125 16:25:24piece handle=/oradata/orcl/databak/9fouvdma_1_1 tag=TAG20140125T162441 comment=NONEchannel ORA_DISK_3: backup set complete, elapsed time: 00:00:42Finished backup at 20140125 16:25:24Starting Control File and SPFILE Autobackup at 20140125 16:25:24piece handle=/oradata/orcl/databak/c-1347935162-20140125-10 comment=NONEFinished Control File and SPFILE Autobackup at 20140125 16:25:27RMAN自动创建了三个信道,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 storedreleased channel: ORA_DISK_1released channel: ORA_DISK_2released channel: ORA_DISK_3RMAN> backup database;Starting backup at 20140125 16:26:38allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=158 devtype=DISKallocated channel: ORA_DISK_2channel ORA_DISK_2: sid=147 devtype=DISKallocated channel: ORA_DISK_3channel ORA_DISK_3: sid=138 devtype=DISKallocated channel: ORA_DISK_4channel ORA_DISK_4: sid=137 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 16:26:38channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 16:26:38channel ORA_DISK_3: starting full datafile backupsetchannel ORA_DISK_3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel ORA_DISK_3: starting piece 1 at 20140125 16:26:39channel ORA_DISK_2: finished piece 1 at 20140125 16:26:54piece handle=/oradata/orcl/databak/9iouvdpu_1_1 tag=TAG20140125T162638 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:16channel ORA_DISK_1: finished piece 1 at 20140125 16:27:29piece handle=/oradata/orcl/databak/9houvdpu_1_1 tag=TAG20140125T162638 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:51channel ORA_DISK_3: finished piece 1 at 20140125 16:27:29piece handle=/oradata/orcl/databak/9jouvdpu_1_1 tag=TAG20140125T162638 comment=NONEchannel ORA_DISK_3: backup set complete, elapsed time: 00:00:51Finished backup at 20140125 16:27:29Starting Control File and SPFILE Autobackup at 20140125 16:27:29piece handle=/oradata/orcl/databak/c-1347935162-20140125-11 comment=NONEFinished 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 storedreleased channel: ORA_DISK_1released channel: ORA_DISK_2released channel: ORA_DISK_3released channel: ORA_DISK_4RMAN> backup database;Starting backup at 20140125 16:29:00allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=158 devtype=DISKallocated channel: ORA_DISK_2channel ORA_DISK_2: sid=147 devtype=DISKallocated channel: ORA_DISK_3channel ORA_DISK_3: sid=138 devtype=DISKallocated channel: ORA_DISK_4channel ORA_DISK_4: sid=137 devtype=DISKallocated channel: ORA_DISK_5channel ORA_DISK_5: sid=156 devtype=DISKallocated channel: ORA_DISK_6channel ORA_DISK_6: sid=155 devtype=DISKallocated channel: ORA_DISK_7channel ORA_DISK_7: sid=134 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 16:29:02channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 16:29:02channel ORA_DISK_3: starting full datafile backupsetchannel ORA_DISK_3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfchannel ORA_DISK_3: starting piece 1 at 20140125 16:29:02channel ORA_DISK_4: starting full datafile backupsetchannel ORA_DISK_4: specifying datafile(s) in backupsetinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel ORA_DISK_4: starting piece 1 at 20140125 16:29:02channel ORA_DISK_5: starting full datafile backupsetchannel ORA_DISK_5: specifying datafile(s) in backupsetinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel ORA_DISK_5: starting piece 1 at 20140125 16:29:02channel ORA_DISK_6: starting full datafile backupsetchannel ORA_DISK_6: specifying datafile(s) in backupsetinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel ORA_DISK_6: starting piece 1 at 20140125 16:29:02channel ORA_DISK_6: finished piece 1 at 20140125 16:29:09piece handle=/oradata/orcl/databak/9qouvdue_1_1 tag=TAG20140125T162902 comment=NONEchannel ORA_DISK_6: backup set complete, elapsed time: 00:00:07channel ORA_DISK_5: finished piece 1 at 20140125 16:29:16piece handle=/oradata/orcl/databak/9pouvdue_1_1 tag=TAG20140125T162902 comment=NONEchannel ORA_DISK_5: backup set complete, elapsed time: 00:00:14channel ORA_DISK_2: finished piece 1 at 20140125 16:29:19piece handle=/oradata/orcl/databak/9mouvdue_1_1 tag=TAG20140125T162902 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:17channel ORA_DISK_4: finished piece 1 at 20140125 16:29:22piece handle=/oradata/orcl/databak/9oouvdue_1_1 tag=TAG20140125T162902 comment=NONEchannel ORA_DISK_4: backup set complete, elapsed time: 00:00:20channel ORA_DISK_3: finished piece 1 at 20140125 16:29:47piece handle=/oradata/orcl/databak/9nouvdue_1_1 tag=TAG20140125T162902 comment=NONEchannel ORA_DISK_3: backup set complete, elapsed time: 00:00:45channel ORA_DISK_1: finished piece 1 at 20140125 16:29:54piece handle=/oradata/orcl/databak/9louvdue_1_1 tag=TAG20140125T162902 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:52Finished backup at 20140125 16:29:54Starting Control File and SPFILE Autobackup at 20140125 16:29:54piece handle=/oradata/orcl/databak/c-1347935162-20140125-12 comment=NONEFinished Control File and SPFILE Autobackup at 20140125 16:29:57因为只有6个文件,所以,只实际使用了6个信道。备份时间为57秒(16:29:00至16:29:57),和手工指定6信道时的用时完全一样。综上,我们可以看出,这个并行度的参数与手工指定信道的作用是类似的。只不过一个是由RMAN自动分配,一个由人工指定。FILESPERSET这个参数又是做什么用的呢?还是来做实验。我们把并行度改回2RMAN> 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:48allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=158 devtype=DISKallocated channel: ORA_DISK_2channel ORA_DISK_2: sid=147 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 16:58:48channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 16:58:48channel ORA_DISK_2: finished piece 1 at 20140125 16:58:55piece handle=/oradata/orcl/databak/9vouvfm8_1_1 tag=TAG20140125T165848 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:07channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 16:58:55channel ORA_DISK_1: finished piece 1 at 20140125 16:59:40piece handle=/oradata/orcl/databak/9uouvfm8_1_1 tag=TAG20140125T165848 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:52channel ORA_DISK_2: finished piece 1 at 20140125 16:59:40piece handle=/oradata/orcl/databak/a0ouvfmf_1_1 tag=TAG20140125T165848 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:45Finished backup at 20140125 16:59:40Starting Control File and SPFILE Autobackup at 20140125 16:59:40piece handle=/oradata/orcl/databak/c-1347935162-20140125-14 comment=NONEFinished 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:01using channel ORA_DISK_1using channel ORA_DISK_2channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 17:01:01channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 17:01:01channel ORA_DISK_2: finished piece 1 at 20140125 17:01:08piece handle=/oradata/orcl/databak/a3ouvfqd_1_1 tag=TAG20140125T170101 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:07channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 17:01:08channel ORA_DISK_1: finished piece 1 at 20140125 17:01:43piece handle=/oradata/orcl/databak/a2ouvfqd_1_1 tag=TAG20140125T170101 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:42channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00004 name=/oradata/orcl/users01.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 17:01:43channel ORA_DISK_2: finished piece 1 at 20140125 17:01:43piece handle=/oradata/orcl/databak/a4ouvfqk_1_1 tag=TAG20140125T170101 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:35channel ORA_DISK_2: starting full datafile backupsetchannel ORA_DISK_2: specifying datafile(s) in backupsetinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel ORA_DISK_2: starting piece 1 at 20140125 17:01:43channel ORA_DISK_1: finished piece 1 at 20140125 17:01:44piece handle=/oradata/orcl/databak/a5ouvfrn_1_1 tag=TAG20140125T170101 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel ORA_DISK_1: starting piece 1 at 20140125 17:01:44channel ORA_DISK_2: finished piece 1 at 20140125 17:01:44piece handle=/oradata/orcl/databak/a6ouvfrn_1_1 tag=TAG20140125T170101 comment=NONEchannel ORA_DISK_2: backup set complete, elapsed time: 00:00:01channel ORA_DISK_1: finished piece 1 at 20140125 17:01:45piece handle=/oradata/orcl/databak/a7ouvfro_1_1 tag=TAG20140125T170101 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 20140125 17:01:45Starting Control File and SPFILE Autobackup at 20140125 17:01:46piece handle=/oradata/orcl/databak/c-1347935162-20140125-15 comment=NONEFinished 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 107 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_1released channel: ORA_DISK_2allocated channel: c1channel c1: sid=158 devtype=DISKallocated channel: c2channel c2: sid=147 devtype=DISKallocated channel: c3channel c3: sid=138 devtype=DISKallocated channel: c4channel c4: sid=137 devtype=DISKStarting backup at 20140125 17:41:56channel c1: starting full datafile backupsetchannel c1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/oradata/orcl/system01.dbfchannel c1: starting piece 1 at 20140125 17:41:56channel c2: starting full datafile backupsetchannel c2: specifying datafile(s) in backupsetinput datafile fno=00002 name=/oradata/orcl/undotbs01.dbfinput datafile fno=00007 name=/oradata/orcl/system02.dbfchannel c2: starting piece 1 at 20140125 17:41:56channel c3: starting full datafile backupsetchannel c3: specifying datafile(s) in backupsetinput datafile fno=00003 name=/oradata/orcl/sysaux01.dbfinput datafile fno=00006 name=/oradata/orcl/demo01.dbfchannel c3: starting piece 1 at 20140125 17:41:56channel c4: starting full datafile backupsetchannel c4: specifying datafile(s) in backupsetinput datafile fno=00004 name=/oradata/orcl/users01.dbfinput datafile fno=00005 name=/oradata/orcl/hrtbs01.dbfchannel c4: starting piece 1 at 20140125 17:41:56channel c4: finished piece 1 at 20140125 17:41:57piece handle=/oradata/orcl/databak1/agouvi74_1_1 tag=TAG20140125T174156 comment=NONEchannel c4: backup set complete, elapsed time: 00:00:01channel c2: finished piece 1 at 20140125 17:42:12piece handle=/oradata/orcl/databak1/aeouvi74_1_1 tag=TAG20140125T174156 comment=NONEchannel c2: backup set complete, elapsed time: 00:00:16channel c3: finished piece 1 at 20140125 17:42:27piece handle=/oradata/orcl/databak1/afouvi74_1_1 tag=TAG20140125T174156 comment=NONEchannel c3: backup set complete, elapsed time: 00:00:31channel c1: finished piece 1 at 20140125 17:42:34piece handle=/oradata/orcl/databak1/adouvi74_1_1 tag=TAG20140125T174156 comment=NONEchannel c1: backup set complete, elapsed time: 00:00:38Finished backup at 20140125 17:42:34Starting Control File and SPFILE Autobackup at 20140125 17:42:34piece handle=/oradata/orcl/databak/c-1347935162-20140125-18 comment=NONEFinished Control File and SPFILE Autobackup at 20140125 17:42:37released channel: c1released channel: c2released channel: c3released channel: c4实验证明,当需备份的文件数不能均分至多个信道时,RMAN会以一种近似平均的方法来处理。那么为什么6个文件4个通道时,RMAN没有采用1-1-2-2的方式来使用4个通道呢?个人推测是由于当按这种方式分配时,最多的一个信道上还是要有2个文件,那么这时,就不如把6个文件分配在3个通道上(即2-2-2的分配方式)即节省了通道数,又能保证总体的备份时间不会延长。同时,在进行文件分配时,文件的大小,也是其进行分配的一个考虑因素,RMAN会在首先保证各信道处理的文件个数接近的前提下,使每个信道上分配到的总的文件大小也尽量均衡。

本文出自 “大脸猫” 博客,请务必保留此出处http://bfc99.blog.51cto.com/265386/1354771
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: