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. 在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更好)
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