当前位置:首页 > 数据库 > Oracle

oracle 备份脚本

   本文是一个shell脚本。主要用于Oracle 数据库备份。默认情况下,在周一晚上进行全备。其他时间进行累积增量备份。

  使用方法:

  假如脚本保存名为: oracle_backup.sh

  使用方法为 oracle_backup.sh -p $ORACLE_DIRECTORY -L $BACKUP_LEVEL

  ORACLE_DIRECTORY 可从dba_directories 里查询所得。

  BACKUP_LEVEL: 0(全备) 1 增量。

 

#!/bin/sh
###############################################################
#: This script is used to backup Oracle database with RMAN.   #
#: A full backup will be taken early moring on Monday .       #
#: I recomment that the incremental backup should be taken on #
#: every day except Monday.                                   #
#: Made by Halberd(Asiainfo-PMO) , 20160827                   #
#: Modify Records:                                            #
#: 1.                                                         #
#: Thu May  419:42:54 CST 2017                               #
#: halberd                                                    #
#   add getopts . make the scripts more flexible              #
###############################################################


#: initial environment

source ~/.bash_profile

#: judge if parameters are offered

[ $# == 0 ] && echo -e "Usage :: $0 -[pl]n p --> backup path n l --> backup level with 0(full) or 1(incremental) n examples:: n $0 -p /home/oracle -l 1" && exit 1

#: variables setting
#:             attach the arguments values to their variables
while getopts p:l: option
docase"$option"in
    p)
            BACK_PATH="$OPTARG"
        ;;
  l)
            if
        [ "$OPTARG" == 0 ] ;
        then
        LEVEL=0elif
        [ "$OPTARG" == 1 ] ;
        then
        LEVEL=1elseecho"Level 0 or 1 is recommended. You should better choose 0 for full backup or 1 for incremental backup"
                exit 1fi
        ;;
        ?)
            echo"Usage:  [-p <PATH>] [-l]"echo"-p : the path in which backup files will be allocated"echo"-l : RMAN backup level"
            exit 1
        ;;
    esacdone

#:             initial other basic variables

md=`date +%m%d`
weekday=`date +%w`

if [ -z "$BACK_PATH" ] ;
then
    BACK_PATH="$ORACLE_HOME"/dbs
    echo -e "WARNING :: The backup piecies will be stored in $ORACLE_HOME/dbs .n "fiif [ -z "$LEVEL" ] ;
thenif [ "$weekday" == 1 ] ;
    then LEVEL=0else LEVEL=1fifi
   
BACK_FORMAT="$BACK_PATH"/db"$LEVEL"‘_%d_%T_%uecho"BACKUP_PATH: $BACK_PATH"echo"BACKUP_LEVEL:""$LEVEL"echo"BACKUP_FORMAT: $BACK_FORMAT"

#: generate the rman commands
back_comm=run{     
allocate channel c1 type disk;n
allocate channel c2 type disk;n
allocate channel c3 type disk;n
backup as compressed backupset incremental level "$LEVEL" format ‘"$BACK_FORMAT"‘ database include current controlfile plus archivelog delete input;n
release channel c1;n
release channel c2;n
release channel c3;n
}n
crosscheck archivelog all;n
delete noprompt expired archivelog all;n
report obsolete;n
delete noprompt obsolete;n
exit

#: execute rman backup
 echo -e $back_comm| rman target sys/oracle log "$BACK_PATH"/rman_"$md".log
exit

 

原文:http://www.cnblogs.com/halberd-lee/p/7807047.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐