RMAN脚本

忘了从哪看到的了,一直在用,觉得还行。

/orabak/scrript 脚本所在目录

/orabak/log rman使用log目录

/orabak/md 数据文件备份目录

/orabak/ctl 控制文件备份目录

/orabak/arch 归档备份目录

[@more@]

备份策略:

每天凌晨2:30备份,周日0级,周四1级,其他时间2级,最多恢复7天的内的状态

rman target /

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;


*在NOCATLOG下模式,控制文件默认保存7天的备份集信息。所以如果制定的备份策略大于7天,则需要修改初始化参数CONTROL_FILE_RECORD_KEEP_TIME,使得CONTROL_FILE_RECORD_KEEP_TIME的值不小于备份策略的天数



0级备份文件rman_level0.rcv

connect target /
run{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/orabak/ctl/ctl_%F';
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
ALLOCATE CHANNEL CH2 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
ALLOCATE CHANNEL CH3 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
BACKUP INCREMENTAL LEVEL 0 TAG 'level 0' DATABASE
PLUS ARCHIVELOG FORMAT '/orabak/arch/arch%T_%U' DELETE ALL INPUT ;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
RELEASE CHANNEL CH3;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE ;


1级备份文件rman_level1.rcv

connect target /
run{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/orabak/ctl/ctl_%F';
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
ALLOCATE CHANNEL CH2 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
ALLOCATE CHANNEL CH3 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
BACKUP INCREMENTAL LEVEL 1 TAG 'level 1' DATABASE
PLUS ARCHIVELOG FORMAT '/orabak/arch/arch%T_%U' DELETE ALL INPUT ;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
RELEASE CHANNEL CH3;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE ;


2级备份文件rman_level2.rcv

connect target /
run{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/orabak/ctl/ctl_%F';
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
ALLOCATE CHANNEL CH2 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
ALLOCATE CHANNEL CH3 DEVICE TYPE DISK FORMAT '/orabak/md/md_%T_%U' maxpiecesize 4g;
BACKUP INCREMENTAL LEVEL 2 TAG 'level 2' DATABASE
PLUS ARCHIVELOG FORMAT '/orabak/arch/arch%T_%U' DELETE ALL INPUT ;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
RELEASE CHANNEL CH3;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE ;


备份脚本文件rman_bak.sh

#!/bin/bash

RUN_USER="oracle"
rq=`date "+%Y%m%d"`
fname="*$rq*"

if [ "$LOGNAME" != "$RUN_USER" ]; then
echo "Please run this script as $RUN_USER " >> /orabak/logs/$rq.log
exit 1
fi

cd $HOME
. .bash_profile

weekname=`date +%A`

case "$weekname" in
Sunday)
echo -n "Today is $weekname,Back oracle Level 0" >> /orabak/log/oracle.log
date "+ %Y-%m-%d %T Start to backup DateBase" >> /orabak/log/oracle.log
rman cmdfile=/orabak/script/rman_level0.rcv msglog=/orabak/log/$rq.log
date "+ %Y-%m-%d %T RMAN BACKUP finished " >> /orabak/log/oracle.log
;;

Thursday)
echo -n "Today is $weekname,Back oracle Level 1" >> /orabak/log/oracle.log
date "+ %Y-%m-%d %T Start to backup DateBase" >> /orabak/log/oracle.log
rman cmdfile=/orabak/script/rman_level1.rcv msglog=/orabak/log/$rq.log
date "+ %Y-%m-%d %T RMAN BACKUP finished " >> /orabak/log/oracle.log
;;

*)
echo -n "Today is $weekname,Back oracle Level 2" >> /orabak/log/oracle.log
date "+ %Y-%m-%d %T Start to backup DateBase" >> /orabak/log/oracle.log
rman cmdfile=/orabak/script/rman_level2.rcv msglog=/orabak/log/$rq.log
date "+ %Y-%m-%d %T RMAN BACKUP finished " >> /orabak/log/oracle.log
;;

esac


使用crontab定时执行rman_bak.sh

crontab -e

添加以下内容

30 02 * * * (/orabak/script/rman_bak.sh > /orabak/log/oracle 2>&1)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20777547/viewspace-1057301/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20777547/viewspace-1057301/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值