oracle 備份指令碼

kidking2010發表於2012-01-12

a、用oracle使用者建立備份目錄
b、 crontab -e
在linux下編輯時間任務(root使用者)
寫入如下
0 4 * * 0-6 su - oracle -c /home/oracle/oraclebackup/backupSH/logicbackup.sh
30 4 * * 0-6  su - oracle -c /home/oracle/oraclebackup/backupSH/hotbackup.sh
0 5 1 * * su - oracle -c /home/oracle/oraclebackup/backupSH/coldbackup.sh


備份指令碼1 logicbackup.sh
#!/bin/sh
backuppath=/home/oracle/oraclebackup/backupData/logicData
current_month=`date +%Y_%m`
current_day=`date +%Y_%m_%d`
mkdir -p ${backuppath}/${current_month}/${current_day}
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
/u01/oracle/10g/bin/exp userid=gdeii/gdeii123@sch206 file=${backuppath}/${current_month}/${current_day}/logic_${current_day}.dmp log=${backuppath}/${current_month}/${current_day}

備份指令碼2hotbackup.sh
#!/bin/ksh 

export LANG=en_US

BACKUP_DATE=`date +%d`

backupDIR=/home/oracle/oraclebackup/backupData/hotData
current_month=`date +%Y_%m`
current_day=`date +%Y_%m_%d`
export rman_back_dir=$backupDIR/$current_month/$current_day
mkdir -p $rman_back_dir

RMAN_LOG_FILE=${rman_back_dir}/rmanlog_${current_day}.log

TODAY=`date`

USER=`id|cut -d "(" -f2|cut -d ")" -f1`

echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE

ORACLE_HOME=/u01/oracle/10g

export ORACLE_HOME

RMAN=$ORACLE_HOME/bin/rman

export RMAN

ORACLE_SID=sch206

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 sys/gdeii123 catalog catalog/catalog@sch206  msglog $RMAN_LOG_FILE append <

run

{
allocate channel c1 type disk;
allocate channel c2 type disk;

backup incremental level $BAK_LEVEL Database format='${rman_back_dir}/dbk_level${BAK_LEVEL}_%U_%T.dbf'  tag='orcl_lev"$BAK_LEVEL"';
sql 'alter system archive log current';
backup archivelog all tag='arc_bak' format='${rman_back_dir}/archlog_level${BAK_LEVEL}_%U_%T';
backup current controlfile tag='bak_ctlfile' format='${rman_back_dir}/ctl__level${BAK_LEVEL}_%U_%T';
backup spfile tag='spfile' format='${rman_back_dir}/orcl_spfile_level${BAK_LEVEL}_%U_%T';

release channel c2;
release channel c1;
}

report obsolete; 

delete noprompt obsolete; 

crosscheck backup; 

delete noprompt expired backup;

list backup summary; 

resync catalog;

EOF

"

 # 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 ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE 

echo >> $RMAN_LOG_FILE 

3 coldbackup.sh 冷備份指令碼
#!/bin/bash
srcPath=/u01/oracle/oradata/sch206
srcdbs=/u01/oracle/10g/dbs

thedate=`date +%Y_%m_%d`

backuppath=/home/oracle/oraclebackup/backupData/coldData/$thedate/
backupdbs=/home/oracle/oraclebackup/backupData/coldData/$thedate/dbs/

mkdir -p $backuppath/dbs

$ORACLE_HOME/bin/sqlplus "/as sysdba" <
shutdown immediate

!cp $srcPath/*.dbf $backuppath
!cp $srcPath/*.ctl $backuppath
!cp $srcPath/*.log $backuppath
!cp $srcdbs/* $backupdbs

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23141985/viewspace-714816/,如需轉載,請註明出處,否則將追究法律責任。

上一篇: oracle 備份指令碼
下一篇: 自動開機
oracle 備份指令碼
請登入後發表評論 登入
全部評論

相關文章