shell 备份oracle数据库数据库,Shell脚本实现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  4 19: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

do

case "$option" in

p)

BACK_PATH="$OPTARG"

;;

l)

if

[ "$OPTARG" == 0 ] ;

then

LEVEL=0

elif

[ "$OPTARG" == 1 ] ;

then

LEVEL=1

else        echo "Level 0 or 1 is recommended. You should better choose 0 for full backup or 1 for incremental backup"

exit 1

fi

;;

\?)

echo "Usage:  [-p ] [-l]"

echo "-p : the path in which backup files will be allocated"

echo "-l : RMAN backup level"

exit 1

;;

esac

done

#:            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 "

fi

if [ -z "$LEVEL" ] ;

then

if [ "$weekday" == 1 ] ;

then LEVEL=0

else LEVEL=1

fi

fi

BACK_FORMAT="$BACK_PATH"/db"$LEVEL"'_%d_%T_%u'

echo "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

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值