技术开发 频道

RMAN性能调优


3 RMAN性能优化
3.1 优化前的准备工作
    RMAN性能优化说过来并不单纯只是RMAN的问题,这关联到要备份的数据性能如何,使用的备份设备如带库的配置是不是够用,备份策略是不是合理等许多的方面,总结起来大体如下:

3.1.1 数据库的调整
3.1.1.1 IO方面的调整
    备份、恢复是一个读、写密集型的操作,因此要备份的库的数据文件的IO均衡对备份的速度影响也比较大。极限一点想,如果要备份的库的所有数据文件都放在一块磁盘上,不论如何优化,读的速度至多也就是这块盘的读速度。而相反,如果数据库在IO方面做了很好的均衡,数据文件也是跨磁盘做的条带(stripe),不论是数据库本身,还是备份都会获得很好的性能,Oracle的测试是会有至少10%的备份性能提升。

3.1.1.2 内存方面的调整
    RMAN备份过程是将数据读到buffer,然后通过MML接口写到备份设备。依数据库不同的设置,这块buffer会使用SGA区不同的部份,Oracle推荐设置合理的Large pool,让RMAN的buffer出自Large pool,关于Large pool如何设置在下面的部份会讲到。

3.1.1.3 SQL的优化
    SQL的优化对于数据库本身的性能优化就起到了很关键的作用,不好的SQL会对数据库系统产生很不好的影响,耗用IO,耗用cache等各种数据库资源,调整SQL目的也是为保证数据库性能的前提下更好的提升数据的性能。

3.1.2 其它方面的准备
    设置合理的备份策略,保证在业务的不繁忙期进行备份,同时做好全、增量备份的设置工作。
备份设备如带库要保证性能满足备份量的要求。
要合理的选择备份源经,比如DG环境,全备份完全可以从Standby结点来做,在不影响业务的同时也保证了备份的速度;Rac环境可以从两个结点同时来备份增加读的速度。

3.2 RMAN优化理论准备
3.2.1 并行通道(Channel Parallelism)
    RMAN的备份、恢复的操作是通过通道(Channel)来完成的,Channel在数据库服务器的体现是一个Server进程。当RMAN分配一个Channel时,它即建立了一个到数据库实例的连接。在多个Channel可以相互独立的完成备份、恢复的操作,因而活动通道数即并行通道数,简而言之为并行通道。

3.2.2 多路复用(Mutiplexing)
    多路复用的目的是为了加快备份时自磁盘读数据的性能,其针对的是单个channel。当单个通道在备份时,它从多个数据文件同 时读取数据,然后写到同一个备份集片(backup set)中,这样的操作模式我们称之为多路复用。
多路复用级别的多少取决于三个因素,即○1FILESPERSET参数,○2MAXOPENFILES参数○3通道读取的文件数,并最它们中的最小值。举个例子说起来就明白了,例如我的库有100个数据文件,FILESPERSET参数为12,MAXOPENFILES参数为10,那么多路复用级别=min(min(100,12),10)=10。另外需要说明的是MAXOPENFILES的默认值为16,FILESPERSET的默认值为64。

3.2.3 同/异步IO
   RMAN在读数据或写数据时,所执行的IO不是同步的即为异步的。同步IO的时,服务进程在某一时点只能执行一次IO。而异步IO时,当一个服务进程在开启一次IO后,在等待这次IO完成的同时其它服务进程可以做其它的工作,也就是说它在一个时点可以执行多次IO操作。
如下以备份到带库简单描述、比较一下在同异/步备份时数据流传送的过程:
 
同步方式
异步方式
1、  一个服务进程写Blocks到磁带缓冲区。
2、  磁带进程写数据到磁带。在磁带设备管理器从Oracle Buffer拷数据到设备管理器内部缓冲区这段时间里,服务进程是空闲的。
3、  磁带进程写完数据后通知服务进程它完活了。
4、  服务进行再进行一个新的操作,继续从步骤1至步骤4的流程。
1、  一个服务进程写Blocks到磁带缓冲区。
2、  磁带进程写数据到磁带。在磁带进程写数据的同时,其它空闲的服务进程将更多的Blocks从读缓冲区写入到磁带缓冲区中。
3、  磁带进程不断的写,写完也不会通知服务进程。服务进程在写数据到磁带缓冲区时会触发磁带进程写数据到磁带。
 
 
0
相关文章