当前位置:操作系统 > Unix/Linux >>

RMAN性能优化全攻略

RMAN性能优化全攻略
 
㈠ 发现问题
   
   RMAN在做备份、恢复时所做的操作说起来很简单:
   就是把数据从“源”读到缓冲区,然后自读缓冲区写到“目的地”、并在这个过程中完成数据块的校验工作
   这一过程中会发生很多的操作、而如果某一操作慢了我们则称其为瓶颈
   发现问题的关键在于挑出这个瓶颈
   
   ① 确定备份源与备份设备的最大速度
   
      从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两个速度、只能尽量的接近、我们心里要有数
      Ⅰ 确定磁盘读速度:
      可以在数据服务器负载高峰期做一下sar –d,把物理盘的blks/s这一列加起来,再乘上操作系统块的大小
      或者
      也可以挑出一些盘或LV,做对/dev/null的dd操作,然后用sar –d 进行观察,测算速度
      Ⅱ 备份设备的速度
      可以通过并行备份多个数据量大点的文件系统获得
      
   ② 通过v$session_longops监测RMAN的性能
   
      v$session_longops是一个很有用的视图,超过6秒的操作会被记录在这个视图中
      这个视图观看RMAN的各个操作已经花费了多少时间,还需要多少时间,每一部分使用了多少时间
 
[sql] 
sys@ORCL> ed  
Wrote file afiedt.buf  
  
  1  SELECT A.SID,A.PROGRAM,A.STATUS,B.OPNAME,B.ELAPSED_SECONDS,B.TIME_REMAINING  
  2    FROM V$SESSION A, V$SESSION_LONGOPS B  
  3   WHERE A.SID = B.SID  AND  
  4         A.SERIAL# = B.SERIAL# AND  
  5         upper(A.PROGRAM) LIKE '%RMAN%' AND  
  6*        TIME_REMAINING > 0  
 
 
   ③ 通过v$backup_sync_io和v$backup_async_io可以监测IO是否有瓶颈
   
      备份最主要的部分是IO操作,因此IO也是最可能产生瓶颈的地方
      Oracle提供了v$backup_sync_io和v$backup_async_io这两张视图用于:
      观察实际的备份的速率、观察备份过程中的等待
      这两张视图中的数据存在的周期是实例运行的过程中、当数据库被重新启动,这两张视图中的数据会被清空
      
      ⑴ 同步IO瓶颈
      
         查询v$backup_sync_io视图、关注TYPE为AGGREGATE值的discrete_bytes_per_second这一列
         这一列表示每秒中以同步方式备份、恢复数据的字节数,这个值应该接近于备份设备的读、写速率
         如果这个值很小于备份设备读写速率,我们优化的机会就来了
         可以从CPU负载、备份的进程、网络、MML接口的配置等几方面进行检查、优化
         脚本:
 
[sql] 
sys@ORCL> ed  
Wrote file afiedt.buf  
  
  1  SELECT device_type device,TYPE,filename,  
  2         to_char(open_time,'yyyymmdd hh24:mi:ss') OPEN,  
  3         to_char(close_time,'yyyymmdd hh24:mi:ss') CLOSE,  
  4         elapsed_time elapse,discrete_bytes_per_second d_bytes  
  5    FROM v$backup_sync_io  
  6   WHERE close_time>SYSDATE-1  
  7*  ORDER BY close_time  
 
 
      ⑵ 异步IO瓶颈
      
         Ⅰ 关注每秒备份、恢复的效率
            
            查询v$backup_async_io、关注TYPE为AGGREGATE值的effective_bytes_per_second这一列
            在生产环境,基本用的都是异步IO的方式,因此这个视图用的频率特别的多
            脚本:
 
[sql] 
sys@ORCL> ed  
Wrote file afiedt.buf  
  
  1  SELECT device_type device,TYPE,filename,  
  2         to_char(open_time,'yyyymmdd hh24:mi:ss') OPEN,  
  3         to_char(close_time,'yyyymmdd hh24:mi:ss') CLOSE,  
  4         elapsed_time elapse,effective_bytes_per_second e_bytes  
  5    FROM v$backup_async_io  
  6   WHERE close_time>SYSDATE-1  
  7*  ORDER BY close_time  
 
 
            同理、当effective_bytes_per_second这一列表示每秒中以异步方式备份、恢复数据的字节数
            这个值应该接近于备份设备的读、写速率,如果这个值很小于备份设备读写速率、我们也该注意了
            
         Ⅱ 关注IO等待 
            
            v$backup_async_io与IO等待相关的几列:
            IO_COUNT:整个IO的总数 
            READY:异步方式buffer请求,buffer立即可以获复的次数 
            SHORT_WAITS:请求buffer不能立即获得,不过经过简短非的阻塞方式轮询可获的次数
            LONG_WAITS: 请求buffer不能获得,需经过阻塞的等待,等待IO设备的次数
            其中、LONG_WAIT是重点关注的对象,当LONG_WAITS/IO_COUNT这个值比较高时表明IO方式存在着瓶颈
            需要注意一下相关的文件,看一下IO分布是不是存在问题
 
㈡ 优化前的准备工作
 
   
   ⑴ 战略上
      
      ① IO方面的调整
         
         备份、恢复是一个读、写密集型的操作
         数据文件的IO均衡对备份的速度影响极大
         如果数据库在IO方面做了很好的均衡,数据文件也是跨磁盘做的条带(stripe)
         Oracle的测试是会有至少10%的备份性能提升
         
      ② 内存方面的调整
      
         RMAN备份过程是将数据读到buffer,然后通过MML接口写到备份设备
         Oracle推荐设置合理的Large pool,让RMAN的buffer出自Large pool
         
      ③ SQL的优化
         
         不好的SQL耗用IO,耗用cache等各种数据库资源
         这会让RMAN可用资源减小
         
      ④ 备份策略的调整
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,