rman自动备份恢复脚本

源端每周日全备:
#/bin/sh
source ~/.bash_profile
export BACKUP_DATE=`date +%Y%m%d`
export BACKUP_PATH=/orabak
echo `mkdir -p ${BACKUP_PATH}/${BACKUP_DATE}/backupset`
echo `mkdir -p ${BACKUP_PATH}/${BACKUP_DATE}/archivelog`
echo `mkdir -p ${BACKUP_PATH}/${BACKUP_DATE}/controlfile`
rman target / nocatalog msglog=$BACKUP_PATH/${BACKUP_DATE}/bak_0_$BACKUP_DATE.log << EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 database tag='level_0' format '$BACKUP_PATH/${BACKUP_DATE}/backupset/level_0_%d_%T_%s_%U';
sql 'alter system archive log current';
backup archivelog all  format '$BACKUP_PATH/${BACKUP_DATE}/archivelog/arch_level_0_%d_%T_%s_%U';
release channel c1;
release channel c2;
release channel c3;
}
backup current controlfile tag='bak_ctlfile' format '$BACKUP_PATH/${BACKUP_DATE}/controlfile/ctl_file_%U_%T';
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
report obsolete;
delete noprompt obsolete;
exit
EOF
cd /orabak
rsync -av $BACKUP_DATE --password-file=/etc/.rsync.pass oracle@10.0.31.12::orabak
 

源端每日增量备份:
#/bin/sh
source ~/.bash_profile
export BACKUP_DATE=`date +%Y%m%d`
export BACKUP_PATH=/orabak
echo `mkdir -p ${BACKUP_PATH}/${BACKUP_DATE}/backupset`
echo `mkdir -p ${BACKUP_PATH}/${BACKUP_DATE}/archivelog`
echo `mkdir -p ${BACKUP_PATH}/${BACKUP_DATE}/controlfile`
rman target / nocatalog msglog=$BACKUP_PATH/${BACKUP_DATE}/bak_1_$BACKUP_DATE.log << EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 1 database tag='level_1' format '$BACKUP_PATH/${BACKUP_DATE}/backupset/level_1_%d_%T_%s_%U';
sql 'alter system archive log current';
backup archivelog from time "to_date(to_char(sysdate-1,'yyyy-mm-dd')||' 05:00:00','yyyy-mm-dd hh24:mi:ss')" until time "sysdate"  format '$BACKUP_PATH/${BACKUP_DATE}/archivelog/arch_level_0_%d_%T_%s_%U';
backup current controlfile tag='bak_ctlfile' format '$BACKUP_PATH/${BACKUP_DATE}/controlfile/ctl_file_%U_%T';
release channel c1;
release channel c2;
release channel c3;
}
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
report obsolete;
delete noprompt obsolete;
exit
EOF
cd /orabak
rsync -av $BACKUP_DATE --password-file=/etc/.rsync.pass oracle@10.0.31.12::orabak

linux定时调用备份任务:
[oracle@oracle03 rman_script]$ crontab -l
30 05 * * 1,2,3,4,5,6 /orabak/rman_script/lev_1_bak.sh
30 05 * * 0 /orabak/rman_script/full_bak.sh

 

目标端定时还原脚本:
[oracle@gzrmzdata2006 rman_script]$ more recover_db.sh
#/bin/sh
source ~/.bash_profile
export BACKUP_DATE=`date +%Y%m%d`
export OLD_BACKUP_DATE=`date +%Y%m%d -d "-8days"`
/opt/app/oracle/product/11.2.0/db_1/bin/sqlplus "/as sysdba" << EOF
spool /orabak/${BACKUP_DATE}/reboot_db.log
shutdown immediate
startup nomount
spool off 
exit
EOF
rman target sys/*******@erptar3  auxiliary sys/******@molarac_test msglog=/orabak/${BACKUP_DATE}/recover_$BACKUP_DATE.log <<
EOF
DUPLICATE TARGET DATABASE TO molarac;
exit
EOF
/opt/app/oracle/product/11.2.0/db_1/bin/sqlplus "/as sysdba" << EOF
spool /orabak/${BACKUP_DATE}/inituser.log
alter user MBS7_OPC identified by MBS7_OPC_2012;
alter user MBS7_INV identified by MBS7_INV_2012;
alter user MBS7_MSG identified by MBS7_MSG_2012;
alter user MBS7_PCM identified by MBS7_PCM_2012;
alter user MBS7_PMC identified by MBS7_PMC_2012;
alter user MBS7_HQS identified by MBS7_HQS_2012;
alter user MBS7_TMS identified by MBS7_TMS_2012;
alter user MBS7_CRM identified by MBS7_CRM_2012;
alter user MBS7_AP identified by MBS7_AP_2012;
alter user MBS7_TMSTEMP identified by MBS7_TMSTEMP_2012;
alter user MBS7_AR identified by MBS7_AR_2012;
alter user MBS7_SCM identified by MBS7_SCM_2012;
spool off
exit
EOF
cd /orabak
rm -rf $OLD_BACKUP_DATE


ps:expdp备份脚本:

#/bin/sh
. /home/oracle/.bash_profile
now=`date +%Y%m%d`
yesterday=`date +%Y%m%d -d "-1days"`
dmpfile=erprac_$now.dmp
logfile=erprac_$now.log
old_dmpfile=erprac_$yesterday.dmp
old_logfile=erprac_$yesterday.log
echo start exp $dmpfile ...
expdp "'/ as sysdba'"  DUMPFILE=$dmpfile logfile=$logfile DIRECTORY=dir1 SCHEMAS=mbs7_oms,mbs7_crm,mbs7_msg,mbs7_ap,mbs7_ar,mbs7_inv,mbs7_pmc,mbs7_scm,mbs7_tms,mbs7_tmstemp,mbs7_opc,mbs7_hqs
cd /home/oracle/expdp
rsync -a $dmpfile --password-file=/etc/.rsync.pass oracle@10.0.31.15::expdp
rm -rf $old_dmpfile
rm -rf $old_logfile

 

impdp还原脚本:

#/bin/sh
. /home/oracle/.bash_profile
now=`date +%Y%m%d`
yesterday=`date +%Y%m%d -d "-1days"`
dmpfile=erprac_$now.dmp
logfile=erprac_$now.log
old_dmpfile=erprac_$yesterday.dmp
old_logfile=erprac_$yesterday.log
echo start imp $dmpfile ...
/opt/app//oracle/product/11.2.0/db_1/bin/sqlplus "/as sysdba" <<EOF
spool /opt/expdp/inituser.log
drop user mbs7_oms cascade;
drop user mbs7_crm cascade;
drop user mbs7_msg cascade;
drop user mbs7_ap cascade;
drop user mbs7_ar cascade;
drop user mbs7_inv cascade;
drop user mbs7_pmc cascade;
drop user mbs7_scm cascade;
drop user mbs7_tms cascade;
drop user mbs7_tmstemp cascade;
drop user mbs7_opc cascade;
drop user mbs7_hqs cascade;
exit;
spool off 
EOF
impdp "'/ as sysdba'"  DUMPFILE=$dmpfile logfile=$logfile DIRECTORY=dir1  parallel=12
cd /opt/expdp
rm -rf $old_dmpfile
rm -rf $old_logfile 

FROM: http://ftc007.blog.163.com/blog/static/19657165020128575224666/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值