(shell)rman備份指令碼

來源:互聯網
上載者:User

1. 全備(包括控制檔案)

[oracle@centos6 scripts]$ cat rman_backup.shsource /home/oracle/.bash_profilerman target / log=/home/oracle/backup/backupall_rman.log<<EOFrun{allocate channel ch1 device type disk;  #分配通道allocate channel ch2 device type disk;sql 'alter system archive log current'; #歸檔當前日誌backup database format '/home/oracle/backup/db_%d_%T_%U';sql 'alter system archive log current';backup archivelog all format '/home/oracle/backup/arch_%t_%s' delete all input;backup format '/home/oracle/backup/con_%s_%p' current controlfile;crosscheck backup;crosscheck archivelog all;delete noprompt expired backup;delete noprompt obsolete;delete noprompt backup of database completed before 'sysdate -15';delete noprompt archivelog all;delete noprompt backup of archivelog all completed before 'sysdate -15';release channel ch1;release channel ch2;}EOF

2. 支援全庫備份及增量備份

[oracle@centos6 scripts]$ cat db_back_rman.sh##===========================================================##   db_bak_rman.sh              ##   created by Robinson         ##   2011/11/07  ##   usage: db_bak_rman.sh <$ORACLE_SID> <$BACKUP_LEVEL>##          BACKUP_LEVEL: ##             F: full backup##             0: level 0##             1: level 1                           ##============================================================#!/bin/bash# User specific environment and startup programsif [ -f ~/.bash_profile ]; then. ~/.bash_profilefiORACLE_SID=${1};                              export ORACLE_SID    RMAN_LEVEL=${2};                              export RMAN_LEVELTIMESTAMP=`date +%Y%m%d%H%M`;                 export TIMESTAMP     DATE=`date +%Y%m%d`;                          export DATE          RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman;   export RMAN_DIR      RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA     #RMAN_LOG=$RMAN_DATA/log;                     export RMAN_LOG     RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log  export RMAN_LOG # Check rman level #======================================================================if [ "$RMAN_LEVEL" == "F" ];then  unset INCR_LVL      BACKUP_TYPE=fullelse      INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}"      BACKUP_TYPE=lev${RMAN_LEVEL} fiRMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP};       export RMAN_FILESSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log;      export SSH_LOGMAXPIECESIZE=4G;                                                export MAXPIECESIZE#Check RMAN Backup Path#=========================================================================if ! test -d ${RMAN_DATA}thenmkdir -p ${RMAN_DATA}fiecho "---------------------------------" >>${SSH_LOG}echo "   " >>${SSH_LOG}echo "Rman Begin  to Working ........." >>${SSH_LOG}echo "Begin time at:" `date` --`date +%Y%m%d%H%M` >>${SSH_LOG}#Startup rman to backup #=============================================================================$ORACLE_HOME/bin/rman log=${RMAN_FILE}.log <<EOFconnect target /run {CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;CONFIGURE BACKUP OPTIMIZATION ON;CONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F';ALLOCATE CHANNEL 'ch1' TYPE DISK maxpiecesize=${MAXPIECESIZE};ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE};set limit channel ch1 readrate=10240;set limit channel ch1 kbytes=4096000;set limit channel ch2 readrate=10240;set limit channel ch2 kbytes=4096000;CROSSCHECK ARCHIVELOG ALL;DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;BACKUP #AS COMPRESSED BACKUPSET ${INCR_LVL}DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}';SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}'DELETE  INPUT;DELETE NOPROMPT OBSOLETE;RELEASE CHANNEL ch1;RELEASE CHANNEL ch2;}sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''";exit;EOFRC=$?cat ${RMAN_FILE}.log >>${SSH_LOG}echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` >>${SSH_LOG}echo >>${SSH_LOG}echo "------------------------" >>${SSH_LOG}echo "------ Disk Space ------" >>${SSH_LOG}df -h >>${SSH_LOG}echo >>${SSH_LOG}if [ $RC -ne "0" ]; then    echo "------ error ------" >>${SSH_LOG}else    echo "------ no error found during RMAN backup peroid------" >>${SSH_LOG}    rm -rf ${RMAN_FILE}.logfi#Remove old backup than 3 days#============================================================================RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`;   export RMDIRecho >>${SSH_LOG}echo -e "------Remove old backup than 3 days ------\n" >>${SSH_LOG}if test -d ${RMDIR}    then    rm -rf ${RMDIR}    RC=$?fiecho >>${SSH_LOG}if [ $RC -ne "0" ]; then    echo -e "------ Remove old backup exception------ \n" >>${SSH_LOG}else    echo -e "------ no error found during remove old backup set peroid------ \n" >>${SSH_LOG}fiexit


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.