RMAN备份和清理脚本
- !/bin/bash
- set env
. /home/oracle/.bash_profile export DATETIME=`date +%Y_%m_%d_%H:%M:%S` date >> /home/oracle/rman.log echo "--start--" >> /home/oracle/rman.log
- backup start
$ORACLE_HOME/bin/rman target / nocatalog msglog /home/oracle/rman.log append << EOF configure retention policy to recovery window of 7 days; CONFIGURE CONTROLFILE AUTOBACKUP ON;
- delete noprompt expired backup;
- allocate channel for maintenance type disk;
- delete noprompt obsolete device type disk;
delete noprompt obsolete; run { allocate channel f1 type disk maxpiecesize 4G; backup database tag 'full_bak' format '/opt/oracle_back/db_bak/db_%T_%U_%s.bak' plus archivelog; release channel f1; } sql 'alter system archive log current'; run { allocate channel a1 type disk maxpiecesize 4G; backup filesperset 20 archivelog all tag='full_arch' format '/opt/oracle_back/arch_bak/arc_%T_%U_%s.arc'; release channel a1; } sql 'ALTER SYSTEM ARCHIVE LOG CURRENT'; sql "alter database backup controlfile to trace as /opt/oracle_back/cfile_bak/control_$DATETIME.ctl"; delete noprompt archivelog all completed before 'sysdate - 2'; CROSSCHECK BACKUP; CROSSCHECK BACKUPSET; CROSSCHECK COPY; CROSSCHECK ARCHIVELOG ALL; CROSSCHECK BACKUP OF ARCHIVELOG ALL; DELETE NOPROMPT EXPIRED BACKUP; DELETE NOPROMPT EXPIRED BACKUPSET; DELETE NOPROMPT EXPIRED COPY; DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; DELETE NOPROMPT OBSOLETE DEVICE TYPE DISK; DELETE NOPROMPT OBSOLETE; exit; EOF date >> /home/oracle/rman.log echo "--end--" >> /home/oracle/rman.log