/****调节rman备份与恢复性能方法***/
依次采用如下方法进行调优
1,从通道配置中移除rate参数
2,如果采用同步io,配置dbwr_io_slaves
3,如果未配置共享内存,配置large_pool_size
4,调节读写拷贝工作过程
1,从通道配置中移除rate参数
这里有个rate参数,它是什么呢,请参见:
/***rate参数***//
RATE Channel Parameter
1,用于allocate和configure channel命令之中,指定每个通道每秒读取多少个byte数据;
2,用此参数可以设置一个上限值,令rman不会花费或占用过多的磁盘带宽,而令整体库性能降低
3,此参数其实就是一个阀值门.
4,打个比方,如配置此参数1500k,而每个磁盘每秒可传递3mb,这样在备份时通道就会剩余一些磁盘带宽给在线系统
5,就类似于dbms_resource_manager,可以合理限制资源
自此参数我们可知,设置它其实就是降低了备份的性能;
如果备份没有采用streaming tape(即多种速度备份tape),确认或查看rate没有被配置
(也就是说如果tape为固定速度,不用配置rate,rate用于多种速度的备份)
那么如何移除rate参数呢,可参考如下流程:
1,查看备份脚本
2,如备份采用run命令,移除rate参数;如在allocate命令中指定rate,略去下面的流程
如备份未采用run命令,启动rman,直接运行下一个流程
3,运行show all查看当前rman配置
4,如配置了rate,自configure channel中移除它
2,如果采用同步io,配置dbwr_io_slaves
这个是什么意思呢?目前一些操作系统支持异常io.但如果你的磁盘不支持它,可以配置dbwr_io_slaves,
可以模拟异步,开启多个固定数量的disk io slaves进程
关于如何优化异步io
参考http://space.itpub.net/9240380/viewspace-757528
这个不用说了,上述链接已言明
3,如果未配置共享内存,配置large_pool_size
何时要配置large_pool_size?
如果alert发现:ksfqxcre: failure to allocate shared memory means sync I/O will be used whenever
async I/O to file not supported natively
表明未开启disk io slave,即未配置dbwr_io_slaves.且共享内存不足;可配置large_pool_size
如何配置large_pool_size?
1,可选项:查看v$sgastat.pool确认对象驻存在内存哪个pool,到底是shared pool或是large pool
(如未配置后者rman备份采用前者)
2,alter sysetm set large_pool_size=分配的备份channels*(16mb + (4 * size_of_tape_buffer));
(解释下:即大池=rman备份分配的通道个数*(16mb + (4 * 备份磁带的buffer大小))
3,配置完后重启rman
4,调节读写拷贝工作过程
可参考:http://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmtunin.htm#BRADV89862
如何确定到底是输出设备(即备份到的设备在此为tape)性能不行还是输入的disk io(存储数据文件的disk)不足,可采用如下方法
1,采用rman之backup validate和backup;比较二者的时间;
2,如果backup validate和backup时间差不多,从磁盘读取就是瓶颈所在,即存储数据文件的disk io不足
如果backup validate明显少于backup的时间,写入到输出的备份设置就是瓶颈所在,即要备份到的tape性能不行
下面我们一个个来讲:
1,调节读的工作
rman不可能马上实时把数据变更的数据块发送到备份的设备上
比如说:在增量备份时,它仅备份上次变更的数据块,如未开启block change tracing
功能;rman就要扫描整个数据文件,以获知哪个数据块发生了变化;
当rman查找这样的变化数据块时就会填充输出buffer;
如果仅仅很小部分的数据块变化了,采用的是sbt磁带备份;rman不会很快填充输出的buffer以保持
磁带流化功能即备份多种速度切换功能
此时,为了提升备份的性能,oracle建议采用level of multiplexing
/**何为多路级别***/
level of multiplexing
即同时进行多个输入文件的读写到同一个rman backup piece中
The number of input files simultaneously read and then written into the same RMAN backup piece.
/***何为rman backup piece****/
用于存储rman backup set的一种物理文件格式;每个rman backup set 包括1或多个物理备份集
/***何为rman backup set*****/
1,一个或多个数据文件,控制文件,spfile or pfile和归档日志文件的备份
2,每个备份集包括1或多个二进制文件
3,上述的二进制文件即备份片(参看上述)
4,每个备份片以rman可识别的文件格式写入并易于恢复
5,它是由rman backup产生的.
6,一般而言,backup set包括一个备份片.
但是如果在allocate channel或configure channel中使用maxpiecesize指定备份片文件的大小,
则一个备份集可能会包含多个备份片文件
简要介绍一众术语后,继续我们的调节工作:
level of multiplexing,就是同时对多个输入文件进行读,并把它们写入到备份片中
此参数从:channel的maxopenfiles配置和每个备份集的输入文件个数,选取其小者为其值
oracle也给出一些关于如何配置level of multiplexing的表格:
是否asm 是否为条带化磁盘 oracle给出的建议方案
-----------------------------------------------------------------------------
no yes 从上述选取小值后,再增加它的值
采用这种方法,其实就是增了rman备份时填充tape buffer的速度;
这样tape buffer就最大可能被送到tape media manger,从而实现tape streaming
no no 这个很简单:增加channel上的maxopenfiles
yes no 配置channel上的maxopenfiles为1或者2
/****最后一讲:如何调节写入拷贝的过程****/
Tuning the Copy and Write Phases
1,如果自输出设备读性能很不错,显然写和拷贝就可能出现了瓶颈问题
2,特别值得一提的是;如果rman发送数据块到了磁带驱动也足以支持tape streaming;
但tape未能streaming;此时sbt 写过程就显然出问题了,如何改进它的写性能呢?
1,如采用full backup,可采用增量backup
2,如备份采用基本压缩算法,可采用高级压缩功能
3,如果数据库主机有多个cpu,备份采用二进制压缩,可以增加channel个数
4,如果备份进行了加密,可采用AES128算法进行加密
aes128算法是一种消耗cpu比较少的算法
5,如果备份到磁带,可尝试作如何调整
1,调节tape io buffer大小
通过allocate channel或configure channel命令中的parms和blksize参数配置
tape io buffer size和具体的os平台有关;
blksize配置可覆盖默认值
2,调节tape media software一些配置参数
包括tape block size
这些对备份性能影响很大
6,如果rman备份到asm,增加channel个数
比如:备份数据库到16物理磁盘的单一asm磁盘组,分配4个通道;最大可为16;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-757532/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-757532/