脚本参数:
b backup path
l backup level with 0(full) or 1(incremental)
s the user SYS pawword
不利用参数则采用默认,默认备份路径为:$ORACLE_BASE/flash_recovery_area/ORCL/backupset 。备份默认级别则为:周日全备,其他增量备份。默认sys密码为:123456(密码可在脚本修改)。自动删除过期备份。采用自动分配通道进行备份。
脚本代码如下:
#!/bin/bash
#This script is used to backup Oracle database with RMAN
#last time: 2019.2.27
[ $# == 0 ] && echo -e " b backup path \n l backup level with 0(full) or 1(incremental) \n s the user SYS pawword "
#: variables setting
while getopts b:l:s: option
do
case "$option" in
b)
BACK_PATH="$OPTARG"
;;
l)
if
[ "$OPTARG" == 0 ] ;
then
LEVEL=0
elif
[ "$OPTARG" == 1 ] ;
then
LEVEL=1
else echo "this script Provide only level "0" or "1" backup"
exit 1
fi
;;
s)
PASSWD="$OPTARG"
;;
\?)
echo "-b : the path in which backup files"
echo "-l : RMAN backup level"
echo "-s : the user SYS pawword"
exit 1
;;
esac
done
weekday='date +%w'
if [ -z "$BACK_PATH" ] ;
then
BACK_PATH="$ORACLE_BASE"/flash_recovery_area/ORCL/backupset
echo -e "WARNING :: The backup piecies will be stored in $ORACLE_BASE/flash_recovery_area/ORCL/backupset\n "
fi
if [ -z "$LEVEL" ] ;
then
if [ "$weekday" == 1 ] ;
then LEVEL=0
else LEVEL=1
fi
fi
if [ -z "$PASSWD" ] ;
then
PASSWD="123456"
fi
BACK_FORMAT="$BACK_PATH"/db"$LEVEL"'_%d_%T_%u'
echo "BACKUP_PATH: $BACK_PATH"
echo "BACKUP_LEVEL:" "$LEVEL"
echo "BACKUP_FORMAT: $BACK_FORMAT"
back_cmd='
run{
backup as compressed backupset incremental level '"$LEVEL"' format '\'"$BACK_FORMAT"\'' database include current controlfile plus archivelog delete input;\n
crosscheck archivelog all;\n
}
crosscheck archivelog all;\n
delete noprompt expired archivelog all;\n
report obsolete;\n
delete noprompt obsolete;\n
exit
'
#excute rman cmd
echo -e $back_cmd|rman target sys/$PASSWD
exit