一次 oracle rman 指令碼的部署
由於資料庫的資料量不大, 因此在部署過程中直接採用了nfs 的掛載 , 然後將rman備份路徑直接指向nfs 的掛載, 在生產環境中有足夠的空間,考慮到rman的效能,頻寬影響,建議將rman備到本地,因為nfs 的速度真的不可恭維。
以下是部署步驟:
(1) 檢視control_file_record_keep_time 引數
此引數影響控制檔案愛你中儲存備份記錄的時間,備份記錄包括完全的資料庫備份記錄, 以及指定的資料檔案, 控制檔案, 引數檔案和歸檔目錄的備份記錄,引數control_file_record_keep_time以天為單位(預設單位為7天),因此採用nocatalog 的方式備份時建議: 將引數control_file_record_keep_time的值設定為不小於資料庫的備份儲存週期
[@more@]由於資料庫的資料量不大, 因此在部署過程中直接採用了nfs 的掛載 , 然後將rman備份路徑直接指向nfs 的掛載, 在生產環境中有足夠的空間,考慮到rman的效能,頻寬影響,建議將rman備到本地,因為nfs 的速度真的不可恭維。
以下是部署步驟:
(1) 檢視control_file_record_keep_time 引數
此引數影響控制檔案愛你中儲存備份記錄的時間,備份記錄包括完全的資料庫備份記錄, 以及指定的資料檔案, 控制檔案, 引數檔案和歸檔目錄的備份記錄,引數control_file_record_keep_time以天為單位(預設單位為7天),因此採用nocatalog 的方式備份時建議: 將引數control_file_record_keep_time的值設定為不小於資料庫的備份儲存週期
SQL> show parameter control_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
SQL> alter system set control_file_record_keep_time=15;
System altered.
SQL> show parameter control_file_re
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 15
(2) 部署備份指令碼 (此指令碼感謝david 大師的提供,本人作了小小的改動)
[oracle@dev121 ~]$ cat /backup/script/incremental_backup.sh
######################################################################
##incremental__backup.sh ##
## created by Tianlesoftware ##
## modify by Gabriel ##
## 2011-04-22 ##
#########################################################################
#!/bin/bash
#export LANG=en_US
source /home/oracle/.bash_profile
BACKUP_DATE=`date +%Y%m%d`
RMAN_LOG_FILE=/backup/script/"$BACKUP_DATE".log
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 TARGET / msglog $RMAN_LOG_FILE append <
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level= $BAK_LEVEL skip inaccessible filesperset 5 Database format='/backup/rmanback/${ORACLE_SID}_lev${BAK_LEVEL}_%U_%T' tag='orcl_lev${BAK_LEVEL}' ;
sql 'alter system archive log current';
backup archivelog all tag='arc_bak' format='/backup/rmanback/arch_%U_%T' skip inaccessible filesperset 5 not backed up 1 times delete input;
backup current controlfile tag='bak_ctlfile' format='/backup/rmanback/ctl_file_%U_%T';
backup spfile tag='spfile' format='/backup/rmanback/${ORACLE_SID}_spfile_%U_%T';
release channel c2;
release channel c1;
}
allocate channel for maintenance device type disk;
report obsolete;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt backup of database completed before 'sysdate -7';
delete noprompt archivelog all;
delete noprompt backup of archivelog all completed before 'sysdate -7';
list backup summary;
release channel;
EOF
RSTAT=$?
#allocate channel for maintenance device type disk;
#report obsolete;
#delete noprompt obsolete;
#crosscheck backup;
#delete noprompt expired backup;
#list backup summary;
#release channel;
#"
#if the rman using catalog you must add the line in the end of RUN_STR
#resync catalog;
# 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 " @sf-express.com < $RMAN_LOG_FILE
exit $RSTAT
此指令碼在shell 內部對時間進行判斷 備份策略為:
(A) 星期天做 0級增量備份
(B) 星期四做1級增量備份(即在星期天的基礎上做增量備份),
(C) 其餘天數做2級增量備份(做前一天的增量備份)
(3) 定製時間任務,讓指令碼定期執行
[oracle@dev121 ~]$ crontab -l
30 0 * * * /backup/script/incremental_backup.sh >/dev/null 2>&1 &
此次部署基本完成,透過一個多星期的觀察 沒有發生異常!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8117479/viewspace-1052312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一次rman 指令碼的部署指令碼
- Oracle rman 指令碼Oracle指令碼
- WINDOWS下 部署 rman 全備指令碼Windows指令碼
- oracle linux rman 指令碼OracleLinux指令碼
- oracle RMAN備份指令碼Oracle指令碼
- 分享Oracle Rman的備份指令碼Oracle指令碼
- [Oracle] rman備份的指令碼(1)Oracle指令碼
- ORACLE RMAN備份的指令碼配置Oracle指令碼
- [Oracle] rman備份指令碼(2)Oracle指令碼
- oracle rman備份指令碼收集Oracle指令碼
- oracle 10g rman 指令碼Oracle 10g指令碼
- oracle rman 定時備份指令碼Oracle指令碼
- rman指令碼指令碼
- oracle11g Rman 備份指令碼Oracle指令碼
- unix、linux oracle rman匯出指令碼LinuxOracle指令碼
- [Rman]Oracle Rman增量備份Level012指令碼Oracle指令碼
- 水煮oracle41----shell指令碼中對oracle的sql*plus和rman工具的指令碼呼叫和嵌入Oracle指令碼SQL
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Oracle生產環境RMAN備份指令碼Oracle指令碼
- 【RMAN】RMAN指令碼中使用替換變數--windows 下rman全備指令碼指令碼變數Windows
- 使用rman備份的指令碼指令碼
- Rman備份的shell指令碼指令碼
- RAC模式下的rman指令碼模式指令碼
- Rman的映象拷貝指令碼指令碼
- rman 備份指令碼指令碼
- rman儲存指令碼指令碼
- rman備份指令碼指令碼
- Oracle 11g RMAN multiplexing 備份指令碼Oracle指令碼
- rman備份的shell指令碼(例子)指令碼
- rman 全備份指令碼指令碼
- rman增量備份指令碼指令碼
- rman實用指令碼集指令碼
- 自動化RMAN指令碼指令碼
- windows rman備份指令碼Windows指令碼
- RMAN恢復指令碼案例指令碼
- RMAN常用備份指令碼指令碼
- rman的備份檢視的指令碼指令碼
- Oracle 11g EXPDP、RMAN自動備份SHELL指令碼Oracle指令碼