在理解备份优化之前首先要晓得RMAN 备份的原理:

当RMAN 发动备份工作时,会开启相应的通道工作,每一个通道在数据库服务器都有一个绝对应的服务过程,RMAN 会首先调用DBMS_RCVMAN 包读取管制文件,确定数据文件的寄存地位等信息,获取该信息后,RMAN 将调用DBMS_BACKUP_RESTORE 包对数据文件进行读取并备份。读取过程就是基于RMAN 备份的算法规定来编译须要备份的文件列表。RMAN 执行备份操作时,会申请Oracle 的共享内存段来创立本人备份缓冲区,与通道绝对应的服务过程会去扫描数据文件中的数据块,并且将须要备份的数据块读入到输出缓冲区中,当输出缓冲区被填满时,会被转移到输入缓冲区,在转移的过程中,也会对数据块进行检测,检测是否有损坏的数据块,当输入缓冲区被填满时,就会造成备份片,与通道绝对应的服务过程最终会将其写入到指定备份片的地位。

所有的备份复原不能千篇一律,须要符合不同客户的生产环境针对性的去调整和优化,否则很有可能会导致生产环境呈现问题。生产环境场景有:备份磁盘空间有余、存储I/O 慢、存储很快且cpu 资源足够等。

RMAN 备份的长处如下(以11g 为例):

1 )RMAN 会检测数据坏块

2 ) 不须要开热备,额定的重做会缩小

3 )RMAN 备份只备份应用过的块

4 )RMAN 备份具备压缩个性

5 ) 反对增量备份策略

对于不同的场景咱们须要给出不同的优化办法:

场景一:划分的备份文件零碎空间有余:
存在这么一种状况,查询数据库大小略大于备份空间大小咱们怎么解决?

这就要从rman 的备份个性说起两个概念:

1 )null block compression

2 )unused block compression

10.1 版本 RMAN 的压缩形式为空值压缩(null compression ),当扫描数据块进行备份时,能够进行空值压缩,对块头为空的块,在从输出缓冲区转移到输入缓冲区时将其过滤掉,不会去备份已调配但未被格式化的块。

在10.2 版本RMAN 的压缩形式又呈现一种未应用块压缩(unused block compression ),这种压缩形式是过滤掉不蕴含数据的数据块,就是该数据块曾经被应用过(被格式化过),然而不蕴含数据。

只有在满足以下条件的时候,Unused Block Compression 会起作用:

1 )初始化参数COMPATIBLE=10.2 或者更新的版本
2 )数据文件是本地管理模式

3 )齐全备份或0 级备份

4 )备份的指定地位在磁盘上

所以备份进去的备份片相当于被压缩过,所以这也是rman 游戏备份工具一个很重要的个性,缩小不必要的空间节约。

场景二:备份文件零碎空间十分小
这时候咱们很容易想到rman 的压缩个性,rman 可能应用二进制压缩算法进行备份,这个二进制的压缩算法可能大大的缩小备份集所须要的磁盘空间,通常状况下压缩比会达到2-4 倍

应用这种压缩形式的命令如下:

rman> backup as compressed backupset database;

1 )启用压缩将耗费更多的CPU 资源。。

2 )启用压缩备份耗时略有减少

3 )节俭存储备份的空间

场景三:备份片很大,备份工夫较长
放慢备份速度的办法无非是开并行,这里波及到两个关键词:通道、并行

主动调配通道(CHANNEL ):

Configure 命令来实现通道配置。如果没有用手工形式为RMAN 调配通道,RMAN 将利用预约义的设置来为命令主动调配通道

RMAN>Configure channel device type disk format ‘xxx’;

可配置主动调配多个通道

手工调配通道(PARALLELISM ):

allocate channel 命令进行调配通道,这个命令只能放在run 命令块中,并且它调配的通道也只作用于本run 块内的命令。

run {

Allocate channel d1 device type disk format ‘xxx’;

Allocate channel d2 device type disk format ‘xxx’;

Backup database;

release channel d1 ;

release channel d2 ;

}

留神 如果配置的通道个数据小于 PARALLELISM ,如 PARALLELISM 为 5 , configure channl 1 , 2 , 3 则 1 , 2 , 3 指定的配置备份 4 , 5 按默认的配置来备份。如果配置的通道大于 PARALLELISM , PARALLELISM 为 3 ,配置 5 个通道,则通道 4 , 5 被疏忽

一个 CPU 任一时刻只能解决一个事务,并行度不能超过 CPU 数量。

场景四:数据库数据量很宏大,增量备份须要较长时间
这里须要关上一个数据库的个性:块跟踪

1 )块批改跟踪会记录数据文件里每个块的更新信息,这些跟踪信息保留在跟踪文件里。当启动块批改跟踪后,RMAN 应用跟踪文件里的信息,只读取扭转的www.sangpi.com块信息,而不必在对整个数据文件进行扫描,从而进步了RMAN 备份的性能。

2 )块批改跟踪默认是禁用的,如果启用了增量备份,那么倡议开启块批改跟踪。 启用BCT 后,不须要其余的保护操作。

3 )在备份期间,批改跟踪会保护曾经标记为更改的块的位图信息。Oracle 会主动治理批改跟踪文件的大小,只保留最近最近8 次块更改的信息。 超过8 次,那么最后面的块位图信息会被以后的更改笼罩。

4 )第一个0 级的增量备份扫描整个数据文件。随后的增量备份应用块跟踪文件的信息,只扫描自上次备份以来被标记为更改的块。

5 )如果是RAC 环境,块跟踪文件必须放在共享设施上。

6 )数据库在open 或者 mounted 状态都能够启用块跟踪.

关上块跟踪:

(1 ) 查看是否设置门路

SQL> showparameter db_create_file_dest

NAME TYPE VALUE


db_create_file_dest string

(2 ) 设置寄存块跟踪文件门路

SQL> alter system set db_create_file_dest = 'oracle/blkch' scope=both sid='*';

System altered.

(3 ) 查看设置门路

SQL> show parameter db_create_file_dest

NAME TYPE VALUE


db_create_file_dest string oracle/blkch

SQL>

(4 ) 关上块跟踪

SQL> alter database enable block change tracking;

Database altered.

也能够间接指定目录或者复用已存在的文件

SQL>alter database enable block change tracking using file 'oracle/blkch/blkch.chg' reuse;

禁用块跟踪:

SQL>alter database disable block change tracking;

查看块跟踪是否可用:

SQL> select status, filename fromv$block_change_tracking;

STATUS FILENAME


ENABLED /oracle/blkch/blkch.chg

留神 快跟踪应用场景个别有两种: 1 、惯例含有增量备份的 RMAN 备份策略; 2 、利用于 XTTS 迁徙,能够无效放慢增量数据的备份。

在应用 RMAN 增量备份的状况下,启用块跟踪,在做增量备份时会缩短 RMAN 备份的工夫, 因为不必扫描整个数据文件。 然而块跟踪也会带来其余的一些开销。 所以要依据理论状况决定是否启用块跟踪。