Oracle數據庫定時增量備份腳本

創建一個目錄放備份腳本

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

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