Oracle RMAN备份

时间:2022-05-04 04:36:08

#crontab定时任务(周一全量,周二至周日增量)

30 0 * * 1 nohup sh /data/rman/script/rmanfull.sh > /data/rman/script/rman.log &
30 0 * * 0,2,3,4,5,6 nohup sh /data/rman/script/rmanlevel1.sh > /data/rman/script/rman.log &

 

#level 0全量备份脚本rmanfull.sh

#!/bin/ksh
. /home/oracle/.bash_profile
rman target / nocatalog log=‘/data/rman/script/rmanfull.log‘ append <<EOF
run
{
allocate channel char1 type disk format ‘/data/rman‘;
allocate channel char2 type disk format ‘/data/rman‘;
sql ‘alter system archive log current‘;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt expired archivelog all;
backup incremental level 0 database tag=‘dbfilebak‘ format ‘/data/rman/dbfile_%d_%t_%s_%p‘ filesperset 5;
backup archivelog all not backed up 1 times tag=‘archlogbak‘ format ‘/data/rman/archlog_%d_%t_%s_%p‘ filesperset 5;
backup current controlfile tag=‘controlbak‘ format ‘/data/rman/control_%d_%t_%s_%p‘;
backup spfile tag=‘spfilebak‘ format ‘/data/rman/spfile_%d_%t_%s_%p‘;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before ‘sysdate -30‘;
delete noprompt backupset completed before ‘sysdate -17‘;
release channel char1;
release channel char2;
}
exit
EOF

 

#level 1增量备份脚本rmanlevel1.sh

#!/bin/ksh
. /home/oracle/.bash_profile
rman target / nocatalog log=‘/data/rman/script/rmanlevel1.log‘ append <<EOF
run
{
allocate channel char1 type disk format ‘/data/rman‘;
allocate channel char2 type disk format ‘/data/rman‘;
sql ‘alter system archive log current‘;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt expired archivelog all;
backup incremental level 1 database tag=‘dbfilebak‘ format ‘/data/rman/dbfile_%d_%t_%s_%p‘ filesperset 5;
backup archivelog all not backed up 1 times tag=‘archlogbak‘ format ‘/data/rman/archlog_%d_%t_%s_%p‘ filesperset 5;
backup current controlfile tag=‘controlbak‘ format ‘/data/rman/control_%d_%t_%s_%p‘;
backup spfile tag=‘spfilebak‘ format ‘/data/rman/spfile_%d_%t_%s_%p‘;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired backup;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before ‘sysdate -30‘;
delete noprompt backupset completed before ‘sysdate -17‘;
release channel char1;
release channel char2;
}
exit
EOF