RMAN 配置信息:
db\_unique\_name 为 RACDB 的数据库的 RMAN 配置参数为: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; \# default 保留一份备份 CONFIGURE BACKUP OPTIMIZATION OFF; \# default CONFIGURE DEFAULT DEVICE TYPE TO DISK; \# default CONFIGURE CONTROLFILE AUTOBACKUP OFF; \# default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; \# default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; \# default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; \# default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; \# default CONFIGURE MAXSETSIZE TO UNLIMITED; \# default CONFIGURE ENCRYPTION FOR DATABASE OFF; \# default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; \# default CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; \# default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; \# default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf\_racdb.f'; \# defaultRMAN 全库备份脚本:
[oracle@oracle rman]$ cat full_rman.sh #!/bin/bash source ~/.bash_profile backtime=`date +"20%y%m%d%H%M%S"` rman target / log=/dbbackup/log/backupall_$backtime.log <<EOF run{ sql 'alter system switch logfile'; allocate channel c1 device type disk; crosscheck backup; sql 'alter system archive log current'; backup database format '/dbbackup/dbback/db_%d_%T_%U'; sql 'alter system archive log current'; backup spfile format '/dbbackup/spfile/spfile_%d_%T_%U'; backup archivelog all format '/dbbackup/logback/arc_%d_%T_%U' skip inaccessible filesperset 5 not backed up 1 times delete input; backup current controlfile format '/dbbackup/controlfileback/cntrl_%d_%T_%U'; crosscheck archivelog all; delete noprompt expired backup; delete noprompt obsolete; delete noprompt backup of database completed before 'sysdate - 7'; release channel c1; } exit EOF echo "backup complete!"RMAN 增量和全量备份脚本:
(此脚本来自于Dave,属于转载)
#!/bin/ksh export LANG=en_US BACKUP_DATE=`date +%d` RMAN_LOG_FILE=${0}.out TODAY=`date` USER=`id|cut -d "(" -f2|cut -d ")" -f1` echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE ORACLE_HOME=/u01/app/Oracle/product/10.2.0/db_1 export ORACLE_HOME RMAN=$ORACLE_HOME/bin/rman export RMAN ORACLE_SID=orcl export ORACLE_SID ORACLE_USER=oracle export ORACLE_USER echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE echo "==========================================">>$RMAN_LOG_FILE echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE echo " ">>$RMAN_LOG_FILE chmod 666 $RMAN_LOG_FILE WEEK_DAILY=`date +%a` case "$WEEK_DAILY" in "Mon") BAK_LEVEL=2 ;; "Tue") BAK_LEVEL=2 ;; "Wed") BAK_LEVEL=2 ;; "Thu") BAK_LEVEL=1 ;; "Fri") BAK_LEVEL=2 ;; "Sat") BAK_LEVEL=2 ;; "Sun") BAK_LEVEL=0 ;; "*") BAK_LEVEL=error esac export BAK_LEVEL=$BAK_LEVEL echo "Today is : $WEEK_DAILY incremental level= $BAK_LEVEL">>$RMAN_LOG_FILE RUN_STR=" BAK_LEVEL=$BAK_LEVEL export BAK_LEVEL ORACLE_HOME=$ORACLE_HOME export ORACLE_HOME ORACLE_SID=$ORACLE_SID export ORACLE_SID $RMAN nocatalog TARGET sys/admin msglog $RMAN_LOG_FILE append <<EOF run { allocate channel c1 type disk; allocate channel c2 type disk; backup incremental level= $BAK_LEVEL skip inaccessible filesperset 5 Database format='/u01/backup/orcl_lev"$BAK_LEVEL"_%U_%T' tag='orcl_lev"$BAK_LEVEL"' ; sql 'alter system archive log current'; backup archivelog all tag='arc_bak' format='/u01/backup/arch_%U_%T' skip inaccessible filesperset 5 not backed up 1 times delete input; backup current controlfile tag='bak_ctlfile' format='/u01/backup/ctl_file_%U_%T'; backup spfile tag='spfile' format='/u01/backup/ORCL_spfile_%U_%T'; release channel c2; release channel c1; } allocate channel for maintenance device type disk; report obsolete; delete noprompt obsolete; crosscheck backup; delete noprompt expired backup; list backup summary; release channel; EOF " # Initiate the command string if [ "$CUSER" = "root" ] then echo "Root Command String: $RUN_STR" >> $RMAN_LOG_FILE su - $ORACLE_USER -c "$RUN_STR" >> $RMAN_LOG_FILE RSTAT=$? else echo "User Command String: $RUN_STR" >> $RMAN_LOG_FILE /bin/sh -c "$RUN_STR" >> $RMAN_LOG_FILE RSTAT=$? fi # --------------------------------------------------------------------------- # Log the completion of this script. # --------------------------------------------------------------------------- if [ "$RSTAT" = "0" ] then LOGMSG="ended successfully" else LOGMSG="ended in error" fi echo >> $RMAN_LOG_FILE echo Script $0 >> $RMAN_LOG_FILE echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE echo >> $RMAN_LOG_FILE /bin/mailx -s "RMAN Backup SID " tianlesoftware@vip.qq.com < $RMAN_LOG_FILE exit $RSTAT