Tuning the Oracle RMAN BACKUP Command


The MAXPIECESIZE parameter specifies the maximum size of each backup piece created on the channel.


The FILESPERSET parameter specifies the maximum number of files to place in a backup set. If you allocate only one channel, then you can use this parameter to make RMAN create multiple backup sets. For example, if you have 50 input data files and two channels, you can set FILESPERSET=5 to create 10 backup sets. This strategy can prevent you from splitting a backup set among multiple tapes.

The MAXOPENFILES parameter setting depends on your disk subsystem characteristics. If you use ASM, then set it to 1 or 2. Otherwise, if your data is striped, then you may want to set this higher. To gain performance, increase either the number of files per backup set, or this parameter. If you are not using ASM or striping of any kind, then try increasing MAXOPENFILES.

The BACKUP DURATION option of the BACKUP command can be used in different ways. If you specify a shorter duration than needed for the backup to complete, then you can use this to keep the backup activity inside a specific time window. In specific cases, the partial backup that does complete is not lost.

Also, this option has two modifiers:
        MINIMIZE TIME: The backup runs as fast as possible.
        MINIMIZE LOAD: The backup attempts to use the full amount of time available in the window. This reduces load on the system.

Tuning RMAN Backup Performance
        Follow this set of steps to obtain the best backup performance:
        Remove RATE settings from configured and allocated channels. The RATE parameter is used to set the maximum number of bytes (default), kilobytes (K), megabytes (M), or gigabytes (G) that RMAN reads each second on the channel. It sets an upper limit for bytes read so that RMAN does not consume too much disk bandwidth and degrade performance. If your backup is not streaming to tape, ensure that the RATE parameter is not set on the ALLOCATE CHANNEL or CONFIGURE CHANNEL command.
        Set DBWR_IO_SLAVES if you use synchronous disk I/O. If your disk does not support asynchronous I/O, then try setting the DBWR_IO_SLAVES initialization parameter to a nonzero value. Any nonzero value for DBWR_IO_SLAVES causes a fixed number (four) of disk I/O slaves to be used for backup and restore, simulating asynchronous I/O. If I/O slaves are used, I/O buffers are obtained from the SGA. The large pool is used if configured. Otherwise, the shared pool is used.

Note: By setting DBWR_IO_SLAVES, the database writer processes will use slaves as well. You may need to increase the value of the PROCESSES initialization parameter.
        Set LARGE_POOL_SIZE as described on the next page.
        Tune RMAN tape streaming performance bottlenecks.
        Use V$ views

Setting LARGE_POOL_SIZE FOR RMAN Tuning
        The requests for contiguous memory allocations from the shared pool are small, usually under
5 KB in size. It is possible that a request for a large contiguous memory allocation can fail or require significant memory housekeeping to release the required amount of contiguous memory. The large pool may be able to satisfy the memory request. The large pool does not have a least recently used list, so Oracle does not attempt to age memory out of the large pool.
        Use the LARGE_POOL_SIZE initialization parameter to configure the large pool. Query V$SGASTAT.POOL to see in which pool (shared pool or large pool) the memory for an object resides. The suggested value for LARGE_POOL_SIZE is calculated as:
        #_of_allocated_channels * (16 MB + (4*size_of_tape_buffer ))
        For backups to disk, the tape buffer is obviously 0, so set LARGE_POOL_SIZE to 16 MB. For tape backups, the size of a single tape buffer is defined by the RMAN channel parameter BLKSIZE, which defaults to 256 KB. Assume a case in which you are backing up to two tape drives. If the tape buffer size is 256 KB, then set LARGE_POOL_SIZE to 18 MB. If you increase BLKSIZE to 512 KB, then increase LARGE_POOL_SIZE to 20 MB.

Note: The large pool is used only for disk buffers when DBWR_IO_SLAVES > 0 and for tape buffers when BACKUP_TAPE_IO_SLAVES = TRUE. If you are using Automatic Shared Memory Management, the large pool is sized automatically in response to system workload.