rman的备份,我们平时总是希望越快越好。
但是有时候,rman的备份会撑爆HBA卡的流量,严重影响生产系统。在一个大的cluster中,有17个db,当13个db发起rman备份的时候,主机上的HBA卡流量几乎被撑爆了,几乎所有的IO操作都不可进行了。
所以,我们要想办法让rman“慢”一些,减少备份对生产系统的影响。在mos中,有一篇文档,是将关于减少rman备份对OLTP的影响,How to Minimise the impact of an Online RMAN Backup on an OLTP system (Doc ID 369573.1)。里面讲到了几种方式:
1 2 3 4 5 |
1. 在standby上备份 2. Split mirror snapshot backup(存储技术) 3. BCT(block change tracking) 4. 使用参数RATE(9i以上) 5. 使用参数DURATION+MINIMIZE LOAD(10g以上) |
而第5种方式,对于带库的备份,oracle也是不建议使用的。因为它会长时间的hold住磁带。
所以我们平常可能用RATE的参数来限制。RATE的参数解释,在在线文档上说,像掐喉咙(serve as throttle)一样,即限制读取数据文件的吞吐量,又限制写数据文件到磁带的吞吐量。
我测试了一下rate参数,可以看到,当我使用rate 15M的时候,确实每个通道的IO流量被限制在了15M以下。可以通过v$backup_async_io/v$backup_sync_io的effective_bytes_per_second字段进行观测:(我用了type=INPUT/OUTPUT,其实直接用AGGREGATE更好)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
RUN { HOST 'echo %time:~0,100%'; ALLOCATE CHANNEL ch00 TYPE DISK RATE 15m; ALLOCATE CHANNEL ch01 TYPE DISK RATE 15m; ALLOCATE CHANNEL ch02 TYPE DISK RATE 15m; ALLOCATE CHANNEL ch03 TYPE DISK RATE 15m; BACKUP Full FORMAT 'c:\fullbk_rate_%u_%p_%s.rmn' DATABASE; sql 'alter system archive log current'; RELEASE CHANNEL ch00; RELEASE CHANNEL ch01; RELEASE CHANNEL ch02; RELEASE CHANNEL ch03; HOST 'echo %time:~0,100%'; } |
参考:
Doc ID 369573.1
2条评论
现在就需要这个,我们现在的PROD的做法就是构建一个DG,专门做rman 备份,😄
我这里1,2,3,4,都用了。我的rate用的是25M,4个channel,囧