rman異機自動備份配置

一、Linux共享window目錄

1.共享文件夾

創建 一個 目錄(test)並設置 共享,修改 權限;


2.掛載目錄

在linux數據庫服務器上掛載共享 目錄 ,例如掛載在/windows:

#mount -t cifs -o username=administrator,password=xxx //windows_ip/test  /windows

更改/etc/fstab,使其自動掛載,增加如下行。

//windows_ip/test  /windows cifs defaults,username=administrator,password=123456 0  2


二、備份配置

1.開啓歸檔

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter system set log_archive_dest_1='location=/archivelog' scope=both;

SQL>alter database archivelog;

SQL>alter database open;


2.創建腳本及日誌存放目錄,如:

#mkdir -p /scripts/log

#chmod -R 777 /scripts

#mkdir -p /windows/old


3.創建備份腳本

#vi  /scripts/backup.sh

#set the variables depending on your environment......
FULL='Sat'
RETENTION=7
CUMM='Wed'
BACKUP_OLD=/windows/old
BACKUP_DEST=/windows
BACKUP_LOG=/scripts/log  
ERROR_LOG=/scripts
CHECK_HOME=/windows 
ORACLE_USER=oracle
ORACLE_HOME=/oracle/product/db_1
ORACLE_SID=inhis
#define other variable......
BACKUP_DATE=`date +%Y%m%d`
SCHEDULE=`date |awk '{print $1}'`
RMAN=$ORACLE_HOME/bin/rman
#define backup type
if [ $SCHEDULE =  $FULL ];then
BACKUP_TYPE="incremental level 0"
elif [ $SCHEDULE =  $CUMM ];then
BACKUP_TYPE="incremental level 1 CUMULATIVE"
else
BACKUP_TYPE="incremental level 1"
fi
# Check local disk space......
USED=`df -k|grep $CHECK_HOME|awk '{print $5}'|awk -F% '{print $1}'`
if [ -z $USED  ]  || [ $USED -gt 85 ]; then
       echo "At `date` Disk space is almost full or not mounted.please check it!
" >> $BACKUP_LOG/disk.log
       exit 1
fi
#define  rman backup......
RMAN_CMD="
$RMAN target / nocatalog log=$BACKUP_LOG/rman.log <<EOF
RUN {
#backup database......
ALLOCATE CHANNEL ch00 TYPE disk;
backup $BACKUP_TYPE database format '$BACKUP_DEST/bak_%d_%s_%p_%u.bak';
sql 'alter system archive log current';
RELEASE CHANNEL ch00;
# backup all archive logs......
change archivelog all validate;
ALLOCATE CHANNEL ch00 TYPE disk;
backup archivelog all format '$BACKUP_DEST/log_%d_%s_%p_%u.bak' delete all input
;
RELEASE CHANNEL ch00;
#backup  current controlfile......
ALLOCATE CHANNEL ch00 TYPE disk;
copy current controlfile to '$BACKUP_DEST/control.bak';
RELEASE CHANNEL ch00;
}
EOF
"
#start  rman backup......
su - oracle -c "$RMAN_CMD"
#check rman......
if [ $? -ne 0 ]; then
       echo "at `date` backup failed!" >> $ERROR_LOG/err.log
       exit 1
fi
#compress backup file......
tar -cvf   $BACKUP_OLD/$BACKUP_DATE.tar $BACKUP_DEST/*.bak
rm -f $BACKUP_DEST/*.bak
# delete expired  backup......
list=`find $BACKUP_OLD -mtime +$RETENTION`
echo $list
rm -f $list

4.設置執行權限:

#chmod +x backup,sh

5.創建計劃任務

設置計劃任務,如在每天的凌晨兩點發起備份:

#crontab -e

#min          hour         day           month         dayofweek                  command

0                     2           *                   *                         *                            /scripts/backup.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章