一次 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分享Oracle Rman的備份指令碼Oracle指令碼
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- rman 備份指令碼指令碼
- ORACLE NBU調取oracle rman指令碼備份歸檔不自動刪除歸檔Oracle指令碼
- Windows Server Oracle 19c 19.3 RMAN使用RUN指令碼時TAG關鍵字的注意事項WindowsServerOracle指令碼
- ORACLE rman與RMAN-00054&ORA-09945Oracle
- 一鍵部署指令碼指令碼
- oracle建庫指令碼Oracle指令碼
- ORACLE備份指令碼Oracle指令碼
- 練習時的docker部署指令碼Docker指令碼
- 【RMAN】Oracle rman 常用命令參考Oracle
- 通用程式部署shell指令碼指令碼
- oracle_ray.sh 常用的oracle sql功能指令碼OracleSQL指令碼
- MySQL8.0的自動部署指令碼MySql指令碼
- Docker 指令碼化一鍵部署Docker指令碼
- vue自動化部署指令碼Vue指令碼
- Oracle RMAN恢復測試Oracle
- Oracle RMAN備份實戰Oracle
- Oracle OCP(60):RMAN 備份Oracle
- Oracle 11G RAC複製備庫RMAN-03002 RMAN-05501 RMAN-03015 RMAN-03009 RMAN-10038Oracle
- oracle rman 刪除過期的歸檔Oracle
- 實現指令碼自動部署docker指令碼Docker
- Linu部署服務啟停指令碼指令碼
- 【RMAN】Oracle使用rman將11.2.0.4資料庫遷移至Oracle12c命令參考Oracle資料庫
- oracle自動冷備份指令碼Oracle指令碼
- Oracle:GRID 下 root.sh 指令碼Oracle指令碼
- ORACLE常用定時備份指令碼Oracle指令碼
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- Oracle批次生成Merge指令碼程式Oracle指令碼
- oracle手工建庫後rman無法啟用(RMAN-04015)Oracle
- Oracle rman duplicate遷移測試Oracle
- Oracle RMAN 表空間恢復Oracle
- Oracle ADG環境下的RMAN備份策略Oracle
- 【RMAN】Oracle11g透過rman升級到12cOracle
- 前端專案nodejs自動部署指令碼前端NodeJS指令碼
- Oracle運維指令碼-巡檢(RAC版)Oracle運維指令碼
- ORACLE問題處理十個指令碼Oracle指令碼
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼