centos下通过RMAN配置自动增量备份
系统: centos 5.5
数据库: oracle 11gR2
1.备份策略
周日执行 0 级的 incremental 备份
周一执行 2 级的 incremental 备份
周二执行 2 级的 incremental 备份
周三执行 1 级的 incremental 备份
周四执行 2 级的 incremental 备份
周五执行 2 级的 incremental 备份
周六执行 2 级的 incremental 备份
2.生成三个 rman 调用的备份脚本(0 级,1 级,2 级)
先创建需要的目录
mkdir –p /u01/backup/ 存放备份脚本的目录
mkdir /u01/backup/ 存放备份的目录
0级脚本:
[root@rac1 backup]# more backup_lv0.sql
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 0 database
include current controlfile format '/u01/backup/backup_%T_%s_%p.lv0'
plus archivelog delete all input format '/u01/backup/backup_%T_%s_%p.arc';
release channel c1;
release channel c2;
}
1级脚本:
[root@rac1 backup]# more backup_lv1.sql
run {
allocate channel c1 type disk;
backup incremental level 1 database include current controlfile
format '/u01/backup/backup_%T_%s_%p.lv1';
release channel c1;
}
2级脚本:
[root@rac1 backup]# more backup_lv2.sql
run {
allocate channel c1 type disk;
backup incremental level 2 database include current controlfile
format '/u01/backup/backup_%T_%s_%p.lv2';
release channel c1;
}
3.创建自动备份的shell程序
[root@rac1 backup]# more backup.sh
#!/bin/bash
#edit: daniel
#date:2012-03-08
#auto backup database
#load Environment variables
source /home/oracle/.bash_profile
myweek=`date +%a`
mydate=`date +%Y%m%d`
mydir=/u01/backup
#Sunday
if [ "$myweek" == "Sun" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv0.sql
fi
#Monday
if [ "$myweek" == "Mon" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv2.sql
fi
#Tuesday
if [ "$myweek" == "Tue" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv2.sql
fi
#Wednesday
if [ "$myweek" == "Wed" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv1.sql
fi
#Thursday
if [ "$myweek" == "Thu" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv2.sql
fi
#Friday
if [ "$myweek" == "Fri" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv2.sql
fi
#Saturday
if [ "$myweek" == "Sat" ]; then
rman target / msglog=${mydir}/backup_${mydate}.log cmdfile=${mydir}/backup_lv2.sql
fi
4.用cron创建定时执行任务,默认情况下,cron为开机自动启动的
执行 crontab –e 添加以下语句:
00 01 * * * sh /u01/backup/backup.sh
保存退出
(00 表示分钟 01 表示小时 后面三个*表示日期和星期,因为这里每天都要执行,所以用*
表示,整条语句表示每天的 1:00 开始执行备份脚本)
[oracle@rac1 ~]$ /sbin/chkconfig --list
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
avahi-daemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
avahi-dnsconfd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
bluetooth 0:off 1:off 2:on 3:on 4:on 5:on 6:off
capi 0:off 1:off 2:off 3:off 4:off 5:off 6:off
conman 0:off 1:off 2:off |