使用buffer memory 参数来调整rman的性能。
rman 性能调整的目的是分辨一个特定的backup or restore job的瓶颈。
并使用使用rman命令、初始化参数 或者对physical media的调整来提高整体的性能.
由于数据库容量持续变大,在客户的环境中,几十到几百TB的数据库很常见,
server和存储系统也在resource, network,io方面增大容量以支持数据库backup 和restore windows
在此种背景下(against this backdrop),rman的性能调整变得比以往都重要。
本文详细描述了在backup和restore操作期间,rman性能调整中,与buffer memory 相关的guidelines
这些guidelines 以如下系统为目标:
the available I/O exceeds 100 MB/s, while memory, CPU, network consumption,
and tape drive throughput do not constrain overall RMAN performance.
在very high performance configurations中,这是尤为正确的,比如说Exadata。
在这些环境中,默认的rman buffer size 是不充分的(inadequate),需要加大。
本文假设读者对rman 性能调整有一个基本的理解。
如下的连接中有rman tuning的overview:
http://download.oracle.com/docs/cd/E11882_01/backup.112/e10642/rcmtunin.htm#CACJCBDB
RMAN Buffer Usage
在备份期间,datafile blocks 被读到 一批 input buffers之中,在该批input buffers中,
datafile blocks 被验证(validated)、压缩、加密, 并 拷贝到 一批 output buffers 中。
然后,该批output buffers 被写入到 disk(DEVICE TYPE DISK)上的 backup piece 中,
或者tape(DEVICE TYPE SBT)上的 backup piece 中。
这个处理过程被描述(depict)成如下的diagram(流程图):
相反的(Conversely),在restore时,datafile blocks从backup piece中读取到 一批 input buffers中,
在该批 input buffers中,datafile blocks被验证(validated)、解压缩(uncompressed)、解密(decrypted),并拷贝到 output buffers中。
output buffers 被写到 disk上的data file中。
默认情况下,buffers从 pga中被分配,除非 disk io slaves 或者 tape io slaves被使用。
当使用disk io slaves 或者 tape io slaves时, buffers从 sga 或者 large pool中备份分配(若是LARGE_POOL_SIZE被设置的话)
在 V$BACKUP_ASYNC_IO 和 V$BACKUP_SYNC_IO 视图中,可以看到每个rman job 所用到的 buffer的 数量和buffer的大小。
下面的设置rman memory usage的guidelines,是安装 Oracle 版本组织的。
tuning guideline:
当使用下面的带有_(下划线)的参数调整 buffer size时,推荐是:
对于一个给定的操作,同时设置 input buffer 和output buffer。
Oracle Database 11g Release 11.1.0.7 and prior releases
When creating backup sets:
当create backup set时:
input buffers 基于 multiplexing的 level被分配,根据下面的chart:
multiplexing的意思是每个channel 读取的file 个数。
Multiplexing = Min (MAXOPENFILES, FILESPERSET)
Defaults: MAXOPENFILES=8, FILESPERSET=64
表格:
举例,若是MAXOPENFILES=1,每个channel 使用16个buffers,每个buffer 1M,每一个channel分配16MB 的buffer。
拓展:若是MAXOPENFILES=8,每个channel 使用32个buffers,每个buffer 512K,每一个channel分配16MB 的buffer。
Tuning guideline:
第一:input buffer的数量 可以使用如下隐含参数调整:_backup_ksfq_bufcnt
input buffer的大小 可以使用如下隐含参数调整:_backup_ksfq_bufsz
第二:当使用这些参数提高backup I/O的吞吐量时,建议如下:
首先调整_backup_ksfq_bufsz参数,调整为读取一个文件的stripe size,以测试效果确认:该设置没有性能问题。
第三:若是继续需要调整,然后再设置_backup_ksfq_bufcnt 参数,设置为文件stripe过的 disk的数量。
在大的striped 系统中,比如ASM,该参数应该使用以达到一个性能和内存使用的优化平衡。
举一个例子:在你的asm diskgroup 中若是有500个disk,
那么设置_backup_ksfq_bufcnt该参数为500将会为每一个rman channel分配过量的内存。
一个能合理的设置,比如说32 or 64,在性能和内存之间提供一个更好平衡。
当从image copy中create or restoring时:
input buffer的 size为1MB/buffer
input buffer的 number为4 buffers
Tuning guideline:
第一:input buffer size for image copies 可以使用 _db_file_direct_io_count参数来增大。
When creating backup sets or image copies:
output buffers 依据device type被分配:
表格
Tuning guideline:
第一:对 disk backup,output buffer size(大小) 应该使用_db_file_direct_io_count来增大。
第二:请注意_db_file_direct_io_count 会控制 其他的数据库io操作,不仅仅rman,因此该调整应该需要仔细的测试。
第三:对 SBT backup, output buffer size(大小) 应该使用BLKSIZE channel 参数来增大。
第四:注意BLKSIZE 适用于Oracle Secure Backup。在OSB中,buffer sizes 被自动计算以用来优化传输速度。
When restoring from backup sets:
output buffer的 size为128KB/buffer
output buffer的 number为4 buffers
Tuning guideline:
第一:output buffer的number (数量) 可以使用 _backup_ksfq_bufcnt参数来增大。
第二:output buffer的size (大小) 可以使用 _backup_ksfq_bufsz参数来增大。
第三:Note that the default buffer sizes for restoring files are smaller than what are used when backing up those same files.
These buffers should be increased to match the corresponding backup if restore times are significantly slower than the corresponding backups.
When restoring from image copies:
默认的output buffer size 是1MB/buffer
默认的output buffer number 是4 buffers
Tuning guideline:
第一:output buffer size 可以使用_db_file_direct_io_count来增大。
Oracle Database 11g Release 11.1.0.7 + Patch 8369105 (also in Exadata V1 Bundle Patch 2)
Input and output buffers are allocated and tuned largely the same as in the preceding section,
with the exception of the following changes:
第一:When restoring from backup sets, the default output buffer size is increased from 128 KB to 1 MB.
第二:_db_file_direct_io_count is not used to adjust any RMAN buffer sizes. This means that RMAN buffer sizes can be adjusted without affecting any other database I/O.
第三:_backup_ksfq_bufcnt can be used to adjust the number of input and output buffers for all operations using DISK channels.
Oracle Database 11g Release 2
All RMAN I/O operations with ASM files select an optimal buffer size and count based on the allocation unit (AU) size and disk count of the ASM disk group.
Additional parameters are introduced to give more fine-grained control over RMAN buffer allocations. Although these parameters are supported for all RMAN operations, they are primarily intended for use in non-ASM systems, since RMAN operations in ASM will automatically select an optimal buffer configuration.
第一:_backup_seq_bufsz/_backup_seq_bufcnt
o These parameters set the buffer size and count for both creating and restoring backup pieces using SBT channels with third-party media managers.
o Note that these parameters are not needed when using Oracle Secure Backup, as the optimal buffer size is automatically selected.
第二:_backup_disk_bufsz/_backup_disk_bufcnt
o These parameters set the buffer size and count for both creating and restoring backup pieces using DISK channels.
第三:_backup_file_bufsz/_backup_file_bufcnt
o These parameters set the input buffer size and count for all backup operations, and the output buffer size and count for all restore operations.
第四:
Note that _backup_ksfq_bufsz and _backup_ksfq_bufcnt are still supported in Oracle Database 11g Release 2 for compatibility reasons, but it is recommended that you tune the RMAN buffer sizes instead using the above parameters.