RMAN备份策略

RMAN备份策略

1 备份效率的考虑

  提高备份效率,即提高RMAN性能和吞吐量,相关的参数有并行通道数输入数据文件数备份集大小备份片数

  并行的数目决定了开启通道的个数,当然也可以在RUN{}中指定通道来决定备份与恢复的并行程度。如果在RUN{}中指定了通道配置,将覆盖掉环境配置参数中指定的默认并行度

  通常一个通道对应一个备份集

  参数影响可有全局和局部两个层次,基本上分为:

PARALLELISM:     保存在RMAN存储库。

CONFIGURE CHANNEL:      更新配置,保存在RMAN存储库。如:RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/u01/backup/rman/%U.bak';

ALLOCATE CHANNEL:      限于run{},不保存

BACKUP:      限于本次backup语句,不保存

1channel在一个时刻只能通过一个backupset

1backupset可以装在多个inputfile(最多64)

1backupset可以对应多个backup piece

1.1 使用FILESPERSET参数限制备份集中的输入文件数

  指定每个备份集中一次可以包含输入文件最大数,该参数默认值为64。如果每个备份集中备份8个文件,数据库有20个文件,那将只生成3个备份集,得到3个备份片,虽然开了4个通道,但并行度是3,有1个通道闲置。例:

RMAN> RUN{

ALLOCATE CHANNEL c1 DEVICE TYPE disk;

ALLOCATE CHANNEL c2 DEVICE TYPE disk;

ALLOCATE CHANNEL c3 DEVICE TYPE disk;

ALLOCATE CHANNEL c4 DEVICE TYPE disk;

BACKUP DATABASE FILESPERSET 8;

}

  假如取消ALLOCATE CHANNEL语句,则通道数按全局变量PARALLELISM指定,假定为1,有20个文件,FILESPERSET=8一个通道干活,8个文件组成一个备份集,每备份集对一个备份片,完成一个备份集再接下一个备份集。串行的跑三趟

1.2 使用MAXPIECESIZE参数限制备份片大小

RMAN> run{

allocate channel c1 device type disk MAXPIECESIZE 300M;

backup datafile 1 format '/u01/backup/rman/%U.bak';

}

限定了最大备份片为300M,如果输出文件是800M(注意不是限制输入文件),则会在一个备份集中生成3个备份片

1.3 使用maxsetsize参数限制备份集大小

RMAN> backup database maxsetsize 800m format '/u01/backup/rman/%U.bak';

一个通道产生了多个备份集,每个备份集对一个备份片

注意:作为基本原则,一个备份集只能占一个通道,一个输入数据文件不能分成多个备份集,所以这里必须满足:最大输入文件size<maxsetsize

1.4 使用SECTION SIZE子句设置多段备份(multisection backup

  通常一个数据文件只能占用一个通道,如何使单一数据文件也能并行备份呢?对于某个较大的datafile,为提高备份效率,可以考虑采用多道关键字SECTION SIZE,并行化这个大文件的备份

  使用SECTION SIZE子句设置多段备份(multisection backup

RMAN> RUN{

ALLOCATE CHANNEL c1 DEVICE TYPE disk;

ALLOCATE CHANNEL c2 DEVICE TYPE disk;

ALLOCATE CHANNEL c3 DEVICE TYPE disk;

BACKUP DATAFILE 1 SECTION SIZE 150M format '/u01/backup/rman/%U.bak';

}

注意:SECTION SIZE隐含限定maxpiecesize,maxpiecesize全局生效时不能使用SECTION SIZE。(考点)所以,要使用SECTION SIZEmaxpiecesize只能在allocate channel中说明

 

2 rman增量热备

2.1 rman备份策略

备份策略:每周日执行0级备份,周一至周六每天执行1级增量备份

配置保留策略redundancy 2,开启控制文件自动备份

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;

2.2 增量备份脚本

创建存放脚本的目录

mkdir /home/oracle/rman_hot_scripts

创建0级增量备份脚本

vi /home/oracle/scripts/rman_level0.sh

写入:

#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export
PATH=/u01/app/oracle/product/19.3.0/dbhome_1/bin:/u01/app/oracle/product/19.3.0/dbhome_1/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin
rman target / << EOF
run{
crosscheck backup;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level 0 database format '/u01/backup/rman/db_%U.bak' plus archivelog format '/u01/backup/rman/arch_%U.bak';
backup current controlfile format '/u01/backup/rman/ctl_%U.bak';
report obsolete device type disk;
delete noprompt obsolete device type disk;
delete noprompt expired backup device type disk;
release channel c1;
release channel c2;
} 
EOF
exit
rman_level0.sh

创建1级增量备份脚本

vi /home/oracle/scripts/rman_level1.sh

写入:

#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export
PATH=/u01/app/oracle/product/19.3.0/dbhome_1/bin:/u01/app/oracle/product/19.3.0/dbhome_1/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin
rman target / << EOF
run{
crosscheck backup;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level 1 database format '/u01/backup/rman/db_%U.bak' plus archivelog format '/u01/backup/rman/arch_%U.bak';
backup current controlfile format '/u01/backup/rman/ctl_%U.bak';
report obsolete device type disk;
delete noprompt obsolete device type disk;
delete noprompt expired backup device type disk;
release channel c1;
release channel c2;
} 
EOF
exit
rman_level1.sh

chmod a+x /home/oracle/rman_hot_scripts/rman_level0.sh
chmod a+x /home/oracle/rman_hot_scripts/rman_level1.sh

2.3 测试脚本执行

./home/oracle/rman_hot_scripts/rman_level0.sh
./home/oracle/rman_hot_scripts/rman_level1.sh

2.4 编写crontab计划任务

测试环境:整点进行0级备份,每15分钟1级增量备份一次

crontab -e

写入计划任务:

0 * * * * /home/oracle/rman_hot_scripts/rman_level0.sh >> /u01/backup/rman/orcl_rman_L0_`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1
15,30,45 * * * * /home/oracle/rman_hot_scripts/rman_level1.sh >> /u01/backup/rman/orcl_rman_L1_`date +\%Y\%m\%d_\%H\%M\%S`.log 2>&1

时间格式如下:

f1   f2  f3  f4   f5   program
 *    *    *    *     *
 -    -     -    -    -
 |     |     |     |     |
 |     |     |     |    +-------- 星期中星期几 (0 - 6) (星期天0)
 |     |     |    +------------ 月份 (1 - 12) 
 |     |    +---------------- 一个月中的第几天 (1 - 31)
 |    +------------------- 小时 (0 - 23)
+----------------------- 分钟 (0 - 59)

查看备份情况是否正常,查看相关备份日志,查看obsolete备份、归档是否删除正常

posted @ 2021-07-10 19:33  chchcharlie、  阅读(952)  评论(0编辑  收藏  举报