1、Linux下oracle备份脚本

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$PATH:$ORACLE_HOME/bin:

export NLS_LANG=AMERICAN_AMERICA.zhs16gbk

export ORACLE_SID=orcl

rman target / nocatalog log=/tmp/rman_full.log append<<EOF

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

backup filesperset 3 database format '/oracle/backup/full_%d_%T_%s_%p';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

backup archivelog all format '/oracle/backup/arch_%d_%T_%s_%p' delete input;

backup current controlfile format '/oracle/backup/ctl_%d_%T_%s_%p';

}

EOF


Linux下删除过期备份的脚本

rman target / nocatalog log=/tmp/rman_delete.log append<<EOF

run{

allocate channel for maintenance type disk;

crosscheck backup;

crosscheck archivelog all;

delete noprompt archivelog until time 'sysdate-1';

delete noprompt obsolete;

}

EOF


注:将脚本添加到crontab中定时执行即可。


2、windows下ORACLE备份脚本

全库备份脚本full_backup.txt

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

backup filesperset 2 database format 'd:\u01\rman\full_%d_%T_%s_%p';

sql 'alter system archive log current';

sql 'alter system archive log current';

sql 'alter system archive log current';

backup archivelog all format 'd:\u01\rman\arch_%d_%T_%s_%p' delete input;

backup current controlfile format 'd:\u01\rman\ctl_%d_%T_%s_%p';

backup spfile format 'd:\u01\rman\spfile_%d_%T_%s_%p';

}

exit


全库备份可执行脚本full_backup.bat

rman target / nocatalog log=d:\u01\rman.log append CMDFILE 'd:\u01\full_backup.txt';


归档日志备份脚本log_backup.txt

run{

backup archivelog all format 'd:\u01\rman\arch_%d_%T_%s_%p' delete input;

}

exit


删除过期备份脚本delete_obsolete.txt

run{

crosscheck backup;

crosscheck archivelog all;

delete noprompt archivelog until time 'sysdate-1';

delete noprompt obsolete; 

}

exit


注:windows下备份需要添加定时任务