創建一個目錄放備份腳本
mkdir rman_scripts
創建RMAN刪除腳本
vim delete_rman.dat
鍵入以下內容:
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE disk;
run{
allocate channel d1 device type disk;
allocate channel d2 device type disk;
delete obsolete recovery window of 7days;
release channel d1;
release channel d2;
}
保存退出
創建RMAN備份腳本
vim rman_full.sh
鍵入以下內容:
注意修改環境變量、備份位置及tag的部分
#!/bin/bash
#設置環境變量
ORACLE_SID=limsdb
ORACLE_BASE=/u01/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
PATH=$PATH:$ORACLE_HOME/bin
RMAN_LOG=/u01/backup/logs/bpmdb_fullbk_`date +"%Y.%m.%d_%H.%M.%S"`.log
export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH RMAN_LOG
#輸出Rman備份開始時間到日誌
START_DATE=`date +"%Y-%m-%d %H:%M:%S"`
echo Rman備份開始_當前時間: $START_DATE>$RMAN_LOG
#執行Rman備份
#su - oraps -c"
rman target / msglog=$RMAN_LOG append<
run {
allocate channel ch00 type disk;
allocate channel ch01 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level=0 database format='/u01/backup/rman/orcl_incr0_%T_%t_%U'tag='lims_lev0';
sql'alter system archive log current';
backup archivelog all tag='lims_arc_bak'format='/u01/backup/rman/orcl_arch_%T_%t_%U'delete input;
backup current controlfile tag='lims_ctlfile'format='/u01/backup/rman/ctl_file_%T_%t_%U';
backup spfile tag='lims_spfile'format='/u01/backup/rman/spfile_%U_%T';
crosscheck backupset;
delete noprompt expired backup;
delete noprompt obsolete;
release channel ch00;
release channel ch01;
}
EOF
#輸出Rman備份結束時間到日誌
echo Rman備份結束_當前時間: `date +"%Y-%m-%d %H:%M:%S"`>>$RMAN_LOG
#根據日誌輸出內容檢索錯誤信息
strRet=''
strRet=`awk'/ERROR MESSAGE/'$RMAN_LOG`
if [ -z"$strRet"] ;
then
echo SUCCESS!>>$RMAN_LOG
exit 0 ;
else
echo ERROR!>>$RMAN_LOG
exit 1 ;
fi
保存退出
利用crontab創建定時任務
沒有crontab就安一個,在此不再贅述
查看定時任務列表
crontab -l
編輯定時任務列表
crontab -e
鍵入以下內容:
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#backup of database
30 0 * * * /home/oracle/rman_scripts/rman_full.sh>/dev/null 2>/home/oracle/rman_scripts/error.log
END