在理解备份优化之前首先要晓得 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 备份的工夫,因为不必扫描整个数据文件。然而块跟踪也会带来其余的一些开销。所以要依据理论状况决定是否启用块跟踪。