技术开发 频道

RMAN性能调优


3.3 提升备份的性能
    做了如上的理论准备,实际的调优就变得轻松愉快的多了,需要注意的是我们接受或认为的良好的性能是需要多次的参数变动->测试->参数变动->测试。。这样多回次的过程,同时要权衡在追求备份性能的同时其对Oracle正常应用性能的影响,由此取一个折中点。

3.3.1 分配合理的并行通道数
    分配多个并行通道会提升备份性能,但是并不是说越多越好,因此分配多少个并行通道是很重要的,要合适,不能太多也不能太少。通常的规则是,如果备份设备是带库,并行通道数不应超出带库中带机的数量;如果备份到磁盘,并行通道数不应超出磁盘子系统的数量。

    实际测试表明,如果备份设备是带库,并行通道数等于带库中带机的数会达到非常好的的性能,很少的情况也是一个带机分配2或3个通道达到非常好的性能的状况,需要注意的是,如果并行通道数多于带机数,会出现备份集(Backup Set)在多盘磁带混合存放的情况,因而会影响到恢复的速度。如果备份到磁盘,并行通道数等于磁盘子系统的数量时会达到非常好的的性能。磁盘子系统数量指的是输出设备跨几块磁盘,例如磁盘子系统分布在3块物理硬盘上,则应分配3个通道。
并行通道设置起来很简单,以配置2个并行通道举例如下:
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 2;
CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' PARMS 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)'
CONFIGURE CHANNEL 2 DEVICE TYPE 'SBT_TAPE' PARMS 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)'

3.3.2 确定合理的“多路复用”数
    多路复用体现的是一种并行,如果系统在RMAN多路复用期间还有更多的并行的能力且备份设备还有空余的能力,调整多路复用数一般都会提升备份的性能。但是这也有一个度的问题,并不是说并行程序多高越好,如果并行度过高会对数据库服务器产生影响,在降低备份服务器性能的同时也会很多的影响到备份的性能。
从实际的测试及Oracle的建议来看,多路复用设置的规则为:如果要备份的所有磁盘或数据文件很好的做了条带(stripe),多路复用处就不大了,可以将多路复用级别设为1或者2,如果磁盘没有做条带,多路复用应当设一个8之下的一个值。大于8的值常用在备份有很多空块的文件或在做增量备份时。

3.3.3 使用异步IO
    上面已经讲到了异步IO的优点,特别是向磁带设备备份时,使用异步IO就更加重要了,因为优化的一个重点就是要保证磁带的streaming。默认的情况下,当RMAN备份到磁带时使用的是同步IO,同步IO在一个时点只能执行一次操作,此时的备份性能一定是很糟的,而异步IO一个时点可以做多次操作,更好的填充写缓冲区,保证磁带的streaming。对于支持本地异步IO的系统,启用比较简单,BACKUP_TAPE_IO_SLAVES这个初始化参数设为TRUE就可以了。

3.3.4 当备份设备为带库时,以BLKSIZE参数调整磁带缓冲区
    当备到磁带时,这是改善RMAN备份性能很重要的一项,通常说来,大的物理磁带块大小会带来快的备份速度。RMAN通道的BLKSIZE参数确定了磁带缓冲区的大小,实际的测试及Oracle的建议都表明磁带缓冲区至少应为256K,在Oracle8i时这个值的默认值为64KB,在Oracle9i中256KB已经是默认值了。
如果你的磁带备份出现了Not Streaming问题,经过检查发现问题的并不是出现在备份空文件及做增量备份上,你可以尝试调整BLKSIZE参数来改变磁带缓冲区,Not Streaming会有改善。
改变BLKSIZE参数也很简单,调整ALLOCATE CHANNEL或CONFIGURE CHANNEL的PARAM参数即可。例如,可以这样将磁带缓冲区设成512K:
RMAN>configure channel device type sbt PARAMS= “BLKSIZE=524288 ”

3.3.5 设定合理的LARGE_POOL_SIZE值
    如果LARGE_POOL_SIZE参数没有设定,磁盘及磁带缓冲区会试图从shared pool中分配,这样会引起shared pool中各组件如Library cache的争用问题,对生产库及备份的性能产生影响。相反,设定了LARGE_POOL_SIZE参数,磁盘及磁带缓冲区便会出自LARGE POOL。LARGE POOL要分配一个合理值,如果其大小不够用,磁盘及磁带缓冲区会从本地进程的内存中分配,同时Oracle会在alert log写入如下的警告信息:
Ksfqxcre: failure to allocate chared memory means sync I/O will be used whenever async I/O to file not supported natively
LARGE POOL大小至少该为多大呢?Oracle给出了如下的计算公式:
Oracle 8I:
LARGE_POOL_SIZE=(4*分配的通道数*DB_BLOCK_SIZE*复用级别)+(4*分配的通道数*磁带缓冲区大小)
Oracle 9I:
LARGE_POOL_SIZE=分配的通道数*(16M+4*磁带缓冲区大小)

3.3.6 空文件及增量备份时需考虑的问题
    当备份包含大量空块的文件及做增量备份时,保证磁带缓冲区满是一件较难的事,因而会引起磁带的Not Sreaming的问题。这方面的优化说起来也很容易,此时可以将多路复用(Multiplexing)调整到一个比较大的值,比如50。
0
相关文章