1. 程式人生 > >(shell)rman備份指令碼

(shell)rman備份指令碼

1. 全備(包括控制檔案)

[[email protected] scripts]$ cat rman_backup.sh
source /home/oracle/.bash_profile
rman target / log=/home/oracle/backup/backupall_rman.log<<EOF
run
{
allocate channel ch1 device type disk;  #分配通道
allocate channel ch2 device type disk;
sql 'alter system archive log current'; #歸檔當前日誌
backup database format '/home/oracle/backup/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '/home/oracle/backup/arch_%t_%s' delete all input;
backup format '/home/oracle/backup/con_%s_%p' current controlfile;
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt backup of database completed before 'sysdate -15';
delete noprompt archivelog all;
delete noprompt backup of archivelog all completed before 'sysdate -15';
release channel ch1;
release channel ch2;
}
EOF

2. 支援全庫備份及增量備份
[[email protected] scripts]$ cat db_back_rman.sh
##===========================================================
##   db_bak_rman.sh              
##   created by Robinson         
##   2011/11/07  
##   usage: db_bak_rman.sh <$ORACLE_SID> <$BACKUP_LEVEL>
##          BACKUP_LEVEL: 
##             F: full backup
##             0: level 0
##             1: level 1                           
##============================================================
#!/bin/bash
# User specific environment and startup programs

if [ -f ~/.bash_profile ]; 
then
. ~/.bash_profile
fi

ORACLE_SID=${1};                              export ORACLE_SID    
RMAN_LEVEL=${2};                              export RMAN_LEVEL
TIMESTAMP=`date +%Y%m%d%H%M`;                 export TIMESTAMP     
DATE=`date +%Y%m%d`;                          export DATE          
RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman;   export RMAN_DIR      
RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA     
#RMAN_LOG=$RMAN_DATA/log;                     export RMAN_LOG     
RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log  export RMAN_LOG 

# Check rman level 
#======================================================================
if [ "$RMAN_LEVEL" == "F" ];
then  unset INCR_LVL
      BACKUP_TYPE=full
else
      INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}"
      BACKUP_TYPE=lev${RMAN_LEVEL} 
fi

RMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP};       export RMAN_FILE
SSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log;      export SSH_LOG
MAXPIECESIZE=4G;                                                export MAXPIECESIZE

#Check RMAN Backup Path
#=========================================================================

if ! test -d ${RMAN_DATA}
then
mkdir -p ${RMAN_DATA}
fi

echo "---------------------------------" >>${SSH_LOG}
echo "   " >>${SSH_LOG}
echo "Rman Begin  to Working ........." >>${SSH_LOG}
echo "Begin time at:" `date` --`date +%Y%m%d%H%M` >>${SSH_LOG}

#Startup rman to backup 
#=============================================================================
$ORACLE_HOME/bin/rman log=${RMAN_FILE}.log <<EOF
connect target /
run {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F';
ALLOCATE CHANNEL 'ch1' TYPE DISK maxpiecesize=${MAXPIECESIZE};
ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE};
set limit channel ch1 readrate=10240;
set limit channel ch1 kbytes=4096000;
set limit channel ch2 readrate=10240;
set limit channel ch2 kbytes=4096000;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP 
#AS COMPRESSED BACKUPSET 
${INCR_LVL}
DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}'
DELETE  INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL ch1;
RELEASE CHANNEL ch2;
}
sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''";
exit;
EOF
RC=$?

cat ${RMAN_FILE}.log >>${SSH_LOG}
echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` >>${SSH_LOG}

echo >>${SSH_LOG}
echo "------------------------" >>${SSH_LOG}
echo "------ Disk Space ------" >>${SSH_LOG}
df -h >>${SSH_LOG}

echo >>${SSH_LOG}

if [ $RC -ne "0" ]; then
    echo "------ error ------" >>${SSH_LOG}
else
    echo "------ no error found during RMAN backup peroid------" >>${SSH_LOG}
    rm -rf ${RMAN_FILE}.log
fi

#Remove old backup than 3 days
#============================================================================
RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`;   export RMDIR
echo >>${SSH_LOG}
echo -e "------Remove old backup than 3 days ------\n" >>${SSH_LOG}

if test -d ${RMDIR}
    then
    rm -rf ${RMDIR}
    RC=$?
fi

echo >>${SSH_LOG}

if [ $RC -ne "0" ]; then
    echo -e "------ Remove old backup exception------ \n" >>${SSH_LOG}
else
    echo -e "------ no error found during remove old backup set peroid------ \n" >>${SSH_LOG}
fi

exit


相關推薦

(shell)rman備份指令碼

1. 全備(包括控制檔案) [[email protected] scripts]$ cat rman_backup.sh source /home/oracle/.bash_profile rman target / log=/home/oracle/backu

linux rman備份指令碼

nocatalog下全備SKIP 選項 Excludes datafiles or archived redo logs from the backup set according to the criteria specified by the following key

linux 下RMAN備份shell指令碼

       RMAN備份對於Oracle資料庫的備份與恢復簡單易用,成本低廉。對於使用非catalog方式而言,將RMAN指令碼嵌入到shell指令碼,然後再通過crontab來實現中小型資料庫資料庫備份無疑是首選。本文提供了一個簡單易用的基於linux shell下的RM

shell腳本 rman備份

tar shell腳本 cat rman pre base acl oracl $1 #!/bin/bash if [ $1 ] then backup_level=$1 else backup_level=0 fi backup_user=sys backup_use

RAC下RMAN備份的一些問題 - RMAN指令碼分配通道連線不同的節點

最近RAC下的一個備份指令碼,在分配通道的時候,發現不同的通道連線到了不同的節點上。這樣也存在一些弊端,比如備份檔案是分散在兩個不同的節點上的。 而且備份資料不是均勻分佈的。主要還是看美每個通道都備份了那些表空間等等 --兩個節點上的目錄路徑都一樣,比如都有/rmanbackup這

自動rman備份計劃(帶指令碼原始碼)

根據自己對rman的理解,實踐後可行的指令碼,每月1日0級備份,每週末一級備份,每週除週末二級備份 [[email protected] ~]# crontab -l -u oracle 59 2 1 * * /home/oracle/rman/rmback

shell】gerrit同步備份指令碼的實現

本期分享下gerrit如何實現備份,由於之前的一臺程式碼伺服器直接down掉,所以為了以防萬一,開始備份gerrit資料,有人說,gerrit不過是個審查程式碼的工具,備份這個做什麼,git是分散式程式碼管理的,即使伺服器不工作了,很多人本地的程式碼也是儲存著的,慌什麼!!!說得對,git管理的程式碼不會丟失

Shell指令碼使用匯總整理——mysql資料庫5.7.8以後備份指令碼

Shell指令碼使用匯總整理——mysql資料庫5.7.8以後備份指令碼 Shell指令碼使用的基本知識點彙總詳情見連線: https://www.cnblogs.com/lsy-blogs/p/9223477.html 指令碼分為三部分配置資訊、指令碼檔案、定時任務; 1、配置資訊: use

RMAN 備份常用指令碼 && RAC RMAN

 OS:RHEL 3;RMAN 備份資訊儲存在恢復目錄中,恢復目錄建立在所要備份資料庫(testdb)以外的另一個數據庫(cata)上。 1. 建立 RMAN 使用者(create_rmanuser.sql)create user rmanuser identified by

shell作業mysql自動建立檢視以及備份指令碼

前提:已經安裝並且配置好了資料庫軟體 1.要求:新建tom,harry,natasha三個資料庫,然後備份,新建表格並且檢視 指令碼如下 #!/bin/bash MYUSER=root MYPASS=westos MYCMD="mysql -u$MYUSER -p$MYPASS" MY

rman 自動備份指令碼( aix、centos)

AIX RMAN備份指令碼 1、檢視並配置定時指令碼crontab[[email protected] /]#crontab -l #oracle_backup #0 1 * * 0 su - oracle -c /oraback/scripts/orcl_fu

RMAN備份計劃及指令碼

最近新交接了一個專案,對專案的備份機制不太瞭解,所以找到備份指令碼研究了下,初學者,憑自己的理解加了註釋避免遺忘,貼出來如有不足的請多多指教 $crontab -l               ##先檢視執行計劃 00 01 20 * * /u02/rman/scripts

RMAN多種備份指令碼分享

1.關於RMAN備份的相關引數介紹: 命令列引數 描述 TARGET 為目標資料庫定義的一個連線字串,當連線到一個目標資料庫時,該連續是SYSDBA連線。該使用者擁有啟動和關閉資料庫的權利,必須屬於OSDBA組,必須建立一個口令檔案允許SYSDBA連線。

創建RMAN備份 恢復目錄數據庫

efault 只讀表空間 table oracl files 最好 本地 let rac 這是前段時間給客戶做的RMAN備份策略,今天有時間整理出來,希望對大家有些幫助,如有不對的地方歡迎大家給予指點,謝謝! 創建成恢復目錄數據庫 如果不是在本地配置RMAN 恢復目錄,

RMAN備份腳本

error sys 歸檔日誌 rman備份 comm eof more control cross #!/bin/sh#-----------------------------------------------------------------------------

常用的shell備份數據庫、備份網站、切割訪問日誌)

mnt path code ash rep %d nginx -name kill 備份網站程序 #!/bin/bash /bin/tar czf /mnt/backup_website/web_$(date +%Y%m%d_%H%M%S).gz.tar /mnt/www

一周RMAN備份腳本

back del rman備份 connect oracle time obsolete get dbi #! /bin/bash#crontab---->00 20 * * 0 su - oracle -c ‘/scripts/oracle_full_backup.

Oracle數據庫誤刪文件導致rman備份報錯RMAN-06169解決辦法

是什麽 miss read data- 刪除表空間 nts 系統 刪除表 erro Oracle數據庫誤刪文件導致rman備份報錯RMAN-06169解決辦法 可能是誤刪文件導致在使用rman備份時候出現以下提示 RMAN-06169: could not read fil

生產系統RMAN備份失敗ORA-00245

ora 00245 control 一、環境描述AIX 6.1Oracle 11.2.0.3 三節點RAC二、問題描述1.全庫備份出錯Starting Control File and SPFILE Autobackup at 04-NOV-2017 10:54:04released channe

[20171130]關於rman備份疑問.txt

byte occurs location 數據文件 fill online mem pda 11g [20171130]關於rman備份疑問.txt--//前面測試太亂,重新做一些rman as copy相關測試.1.環境:SCOTT@book> @ &r/v