您的位置:首页 > 其它

rman自动备份恢复脚本

2013-04-10 15:49 204 查看
源端每周日全备:

#/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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: