码迷,mamicode.com
首页 > 其他好文 > 详细

RMAN --full --incr0 --incr1三合一脚本

时间:2015-06-01 16:44:44      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

脚本原创,盗转死妈

http://blog.csdn.net/ashic/article/details/46311573

-h 查看帮助信息

[oracle@gc1 ~]$ sh backup.sh -h
The following information teach you how to use this script
        backup.sh --full
        backup.sh --incr0 <RMAN_HOME>
        backup.sh --incr1 <RMAN_HOME>
 THE <RMAN_HOME> is the place where you want to store the backup
 After you set the RMAN_HOME , The script will create the following directory:
        -- 2015_06_01
                |-- archlog                     --This directory store your archivelog backup
                |-- ctlfile                     --This directory store your controlfile bakcup
                |-- data                        --This directory store your backup
                |    |-- incr0                  --This is your incr0 backupset
                 -- log                         --This is your backup log directory
                     |-- dbbak.log              --This  log records the backup start and finish time points
                     |-- incr0_2015-06-01.log   --This your backup log records the rman output information
        backup.sh --help
Usage:
  backup.sh --full <rman full backup>
  backup.sh --incr0 <incremental 0 bakcup>
  backup.sh --incr1 <incremental 1 backup>
  backup.sh --help <help>



#!/bin/bash

cmd=$1
script_name=`basename $0`
RMAN_HOME=$2/`date +%Y_%m_%d`


print_usage() {                                                                                                                               
  echo "Usage:"                                                                                                                               
  echo "  $script_name --full <rman full backup>"                                                                                
  echo "  $script_name --incr0 <incremental 0 bakcup>"                                                                                                        
  echo "  $script_name --incr1 <incremental 1 backup>"                                                                                                     
  echo "  $script_name --help <help>"                                                                                                                                                    



print_help() {
echo "The script was written by FAN"
echo "The following information teach you how to use this script"
echo " $script_name --full"
echo " $script_name --incr0 <RMAN_HOME>"
echo " $script_name --incr1 <RMAN_HOME>"
echo " THE <RMAN_HOME> is the place where you want to store the backup"
echo " After you set the RMAN_HOME , The script will create the following directory:"
echo " -- 2015_06_01"
echo " |-- archlog --This directory store your archivelog backup"
echo " |-- ctlfile --This directory store your controlfile bakcup"
echo " |-- data --This directory store your backup"
echo " |    |-- incr0 --This is your incr0 backupset"
echo " -- log --This is your backup log directory"
  echo "                     |-- dbbak.log --This log records the backup start and finish time points"
  echo "     |-- incr0_2015-06-01.log--This your backup log records the rman output information"
echo " $script_name --help"
print_usage
}                     


full() {
#-----------------------script env-----------------------


local LOGFILE=$RMAN_HOME/$datedir/log/dbbak.log


local LOGDATE=`date +%Y-%m-%d`
local RMANLOG=$RMAN_HOME/$datedir/log/full_${LOGDATE}.log


if [ ! -d ${RMAN_HOME} ];
  then mkdir -p $RMAN_HOME
  mkdir $RMAN_HOME/archlog
  mkdir $RMAN_HOME/ctlfile
  mkdir $RMAN_HOME/data
  mkdir $RMAN_HOME/log
  mkdir $RMAN_HOME/data/full
  fi


if [ ! -f ${LOGFILE} ];
  then touch ${LOGFILE}
  fi


if [ ! -f ${RMANLOG} ];
   then touch ${RMANLOG}
        fi
#-------------start backup-----------------


echo "-------------------------Rman full backup -------------------------" >> ${LOGFILE}
echo "backup_full start time:" `date +%Y-%m-%d_%H:%M:%S` >> ${LOGFILE}
echo "----------------------Rman Database backup_full ------------"`date +%Y-%m-%d_%H:%M:%S` >${RMANLOG}


$ORACLE_HOME/bin/rman  target / <<EOF >> ${RMANLOG}
run
{
 delete noprompt obsolete;
 crosscheck archivelog all;
 delete noprompt expired archivelog all;
 allocate channel c1 type disk MAXPIECESIZE 5g;
 allocate channel c2 type disk MAXPIECESIZE 5g;
 allocate channel c3 type disk MAXPIECESIZE 5g;
 allocate channel c4 type disk MAXPIECESIZE 5g;
 allocate channel c5 type disk MAXPIECESIZE 5g;
 backup AS COMPRESSED BACKUPSET database tag ‘fullbackup‘ filesperset 3 format ‘$RMAN_HOME/data/full/db_full_%T_%d_%t_%s_%p.rbck‘ include current controlfile;
 backup AS COMPRESSED BACKUPSET format ‘$RMAN_HOME/archlog/arch_full_%T_%d_%t_%s_%p.rbck‘ archivelog all delete input;
 backup current controlfile format ‘$RMAN_HOME/ctlfile/ctl_%d_%T_%s_%p_%t.rbck‘;
 crosscheck backup;
 delete noprompt expired backup;
 release channel c1;
 release channel c2;
 release channel c3;
 release channel c4;
 release channel c5;
}
exit;
EOF


echo "backup_full finish! check in :" ${RMANLOG} >> ${LOGFILE}
echo "backup_full end time:" `date +%Y-%m-%d_%H:%M:%S` >> ${LOGFILE}
echo "-------------------------------full_end-----------------------------------" >> ${LOGFILE}
#end of file
echo "Full backup complete,your backup are in $RMAN_HOME"
}




incr0() {
#-----------------------script env-----------------------


    
local LOGFILE=$RMAN_HOME/$datedir/log/dbbak.log


local LOGDATE=`date +%Y-%m-%d`
local RMANLOG=$RMAN_HOME/$datedir/log/incr0_${LOGDATE}.log


if [ ! -d ${RMAN_HOME} ];
  then mkdir -p $RMAN_HOME
  mkdir $RMAN_HOME/archlog
  mkdir $RMAN_HOME/ctlfile
  mkdir $RMAN_HOME/data
  mkdir $RMAN_HOME/data/incr0
  mkdir $RMAN_HOME/log
  fi


if [ ! -f ${LOGFILE} ];
  then touch ${LOGFILE}
  fi


if [ ! -f ${RMANLOG} ];
   then touch ${RMANLOG}
        fi
#-------------start incr0 backup-----------------


echo "-------------------------Rman incr0 backup -------------------------" >> ${LOGFILE}
echo "backup_incr0 start time:" `date +%Y-%m-%d_%H:%M:%S` >> ${LOGFILE}
echo "----------------------Rman Database backup_incr0 ------------"`date +%Y-%m-%d_%H:%M:%S` >${RMANLOG}


$ORACLE_HOME/bin/rman  target / <<EOF >> ${RMANLOG}
run
{
 delete noprompt obsolete;
 crosscheck archivelog all;
 delete noprompt expired archivelog all;
 allocate channel c1 type disk MAXPIECESIZE 5g;
 allocate channel c2 type disk MAXPIECESIZE 5g;
 allocate channel c3 type disk MAXPIECESIZE 5g;
 allocate channel c4 type disk MAXPIECESIZE 5g;
 allocate channel c5 type disk MAXPIECESIZE 5g;
 backup AS COMPRESSED BACKUPSET incremental level 0 database tag ‘incr0backup‘ filesperset 3 format ‘$RMAN_HOME/data/incr0/db_full_%T_%d_%t_%s_%p.rbck‘ include current controlfile;
 backup AS COMPRESSED BACKUPSET format ‘$RMAN_HOME/archlog/arch_full_%T_%d_%t_%s_%p.rbck‘ archivelog all delete input;
 backup current controlfile format ‘$RMAN_HOME/ctlfile/ctl_%d_%T_%s_%p_%t.rbck‘;
 crosscheck backup;
 delete noprompt expired backup;
 release channel c1;
 release channel c2;
 release channel c3;
 release channel c4;
 release channel c5;
}
exit;
EOF


echo "backup_incr0 finish! check in :" ${RMANLOG} >> ${LOGFILE}
echo "backup_incr0 end time:" `date +%Y-%m-%d_%H:%M:%S` >> ${LOGFILE}
echo "-------------------------------incr0_end-----------------------------------" >> ${LOGFILE}
#end of file
echo "Incremental 0 backup complete,your backup are in $RMAN_HOME"
}




incr1() {
#-----------------------script env-----------------------






local LOGFILE=$RMAN_HOME/$datedir/log/dbbak.log


local LOGDATE=`date +%Y-%m-%d`
local RMANLOG=$RMAN_HOME/$datedir/log/incr1_${LOGDATE}.log


if [ ! -d ${RMAN_HOME} ];
  then mkdir -p $RMAN_HOME
  mkdir $RMAN_HOME/archlog
  mkdir $RMAN_HOME/ctlfile
  mkdir $RMAN_HOME/data
  mkdir $RMAN_HOME/data/incr1
  mkdir $RMAN_HOME/log
  fi


if [ ! -f ${LOGFILE} ];
  then touch ${LOGFILE}
  fi


if [ ! -f ${RMANLOG} ];
   then touch ${RMANLOG}
        fi
#-------------start incr1 backup-----------------


echo "-------------------------Rman incr1 backup -------------------------" >> ${LOGFILE}
echo "backup_incr1 start time:" `date +%Y-%m-%d_%H:%M:%S` >> ${LOGFILE}
echo "----------------------Rman Database backup_incr1 ------------"`date +%Y-%m-%d_%H:%M:%S` >${RMANLOG}


$ORACLE_HOME/bin/rman  target / <<EOF >> ${RMANLOG}
run
{
 delete noprompt obsolete;
 crosscheck archivelog all;
 delete noprompt expired archivelog all;
 allocate channel c1 type disk MAXPIECESIZE 5g;
 allocate channel c2 type disk MAXPIECESIZE 5g;
 allocate channel c3 type disk MAXPIECESIZE 5g;
 allocate channel c4 type disk MAXPIECESIZE 5g;
 allocate channel c5 type disk MAXPIECESIZE 5g;
 backup AS COMPRESSED BACKUPSET incremental level 1 database tag ‘incr1backup‘ filesperset 3 format ‘$RMAN_HOME/data/incr1/db_full_%T_%d_%t_%s_%p.rbck‘ include current controlfile;
 backup AS COMPRESSED BACKUPSET format ‘$RMAN_HOME/archlog/arch_full_%T_%d_%t_%s_%p.rbck‘ archivelog all delete input;
 backup current controlfile format ‘$RMAN_HOME/ctlfile/ctl_%d_%T_%s_%p_%t.rbck‘;
 crosscheck backup;
 delete noprompt expired backup;
 release channel c1;
 release channel c2;
 release channel c3;
 release channel c4;
 release channel c5;
}
exit;
EOF


echo "backup_incr1 finish! check in :" ${RMANLOG} >> ${LOGFILE}
echo "backup_incr1 end time:" `date +%Y-%m-%d_%H:%M:%S` >> ${LOGFILE}
echo "-------------------------------incr1_end-----------------------------------" >> ${LOGFILE}
#end of file
echo "Incremental 1 backup complete,your backup are in $RMAN_HOME"
}


case "$cmd" in                                                                                                                                
--help)                                                                                                                                       
print_help
;;
-h)
print_help
;;
--h)
print_help
;;
--full)
full
;;
--incr0)
incr0
;;
--incr1)
incr1
;;
esac

RMAN --full --incr0 --incr1三合一脚本

标签:

原文地址:http://blog.csdn.net/ashic/article/details/46311573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!