温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

rman备份脚本shell版

发布时间:2020-07-21 02:56:16 来源:网络 阅读:571 作者:lq2011 栏目:关系型数据库

1、数据库全备到硬盘

[oracle@centos7 scripts]$ cat rman_backup.sh   source /home/oracle/.bash_profile   rman target / log=/home/oracle/backup/backupall_rman.log<<EOF   run   {   allocate channel ch2 device type disk;  #分配通道   allocate channel ch3 device type disk;   sql 'alter system archive log current'; #归档当前日志   backup database format '/home/oracle/backup/db_%d_%T_%U';    #备份数据文件 sql 'alter system archive log current';   backup archivelog all format '/home/oracle/backup/arch_%t_%s' delete all input;   #备份归档文件 backup format '/home/oracle/backup/con_%s_%p' current controlfile;    #备份控制文件 crosscheck backup;   crosscheck archivelog all;   delete noprompt expired backup;   delete noprompt obsolete;   delete noprompt backup of database completed before 'sysdate -15';    #删除15天之前的数据库备份集 delete noprompt archivelog all;   delete noprompt backup of archivelog all completed before 'sysdate -15';  #删除15天之前的归档备份集 release channel ch2;   release channel ch3;   }   EOF

2、增量备份脚本

     0级增量


[oracle@centos7 scripts]$ cat rman_backup_level0.sh   source /home/oracle/.bash_profile   rman target / log=/home/oracle/backup/backupall_rman.log<<EOF   run   {   allocate channel ch2 device type disk;  #分配通道   allocate channel ch3 device type disk;   sql 'alter system archive log current'; #归档当前日志   backup incremental level 0 database format '/home/oracle/backup/db_level0_%d_%T_%U';    #备份数据文件 sql 'alter system archive log current';   backup archivelog all format '/home/oracle/backup/arch_level0_%t_%s' delete all input;   #备份归档文件 backup format '/home/oracle/backup/con_level0_%s_%p' current controlfile;    #备份控制文件 crosscheck backup;   crosscheck archivelog all;   delete noprompt expired backup;   delete noprompt obsolete;   delete noprompt backup of database completed before 'sysdate -15';    #删除15天之前的数据库备份集 delete noprompt archivelog all;   delete noprompt backup of archivelog all completed before 'sysdate -15';  #删除15天之前的归档备份集 release channel ch2;   release channel ch3;   }   EOF

     1级增量


[oracle@centos7 scripts]$ cat rman_backup_level1.sh   source /home/oracle/.bash_profile   rman target / log=/home/oracle/backup/backupall_rman.log<<EOF   run   {   allocate channel ch2 device type disk;  #分配通道   allocate channel ch3 device type disk;   sql 'alter system archive log current'; #归档当前日志   backup incremental level 1 database format '/home/oracle/backup/db_level1_%d_%T_%U';    #备份数据文件 sql 'alter system archive log current';   backup archivelog all format '/home/oracle/backup/arch_level1_%t_%s' delete all input;   #备份归档文件 backup format '/home/oracle/backup/con_level1_%s_%p' current controlfile;    #备份控制文件 crosscheck backup;   crosscheck archivelog all;   delete noprompt expired backup;   delete noprompt obsolete;   delete noprompt backup of database completed before 'sysdate -15';    #删除15天之前的数据库备份集 delete noprompt archivelog all;   delete noprompt backup of archivelog all completed before 'sysdate -15';  #删除15天之前的归档备份集 release channel ch2;   release channel ch3;   }   EOF

注意:1级备份需要在0级备份的基础上执行。


3、支持全备和增量备份

[oracle@centos7 scripts]$ cat db_back_rman.sh   ##===========================================================   ##   db_bak_rman.sh                 ##   created by Robinson            ##   2017/12/15     ##   usage: db_bak_rman.sh <$ORACLE_SID> <$BACKUP_LEVEL>   ##          BACKUP_LEVEL:    ##             F: full backup   ##             0: level 0   ##             1: level 1                              ##============================================================   #!/bin/bash   # User specific environment and startup programs      if [ -f ~/.bash_profile ];    then   . ~/.bash_profile   fi      ORACLE_SID=${1};                              export ORACLE_SID       RMAN_LEVEL=${2};                              export RMAN_LEVEL   TIMESTAMP=`date +%Y%m%d%H%M`;                 export TIMESTAMP        DATE=`date +%Y%m%d`;                          export DATE             RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman;   export RMAN_DIR         RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA        #RMAN_LOG=$RMAN_DATA/log;                     export RMAN_LOG        RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log  export RMAN_LOG       # Check rman level    #======================================================================   if [ "$RMAN_LEVEL" == "F" ];   then  unset INCR_LVL         BACKUP_TYPE=full   else         INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}"         BACKUP_TYPE=lev${RMAN_LEVEL}    fi      RMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP};       export RMAN_FILE   SSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log;      export SSH_LOG   MAXPIECESIZE=4G;                                                export MAXPIECESIZE      #Check RMAN Backup Path   #=========================================================================      if ! test -d ${RMAN_DATA}   then   mkdir -p ${RMAN_DATA}   fi      echo "---------------------------------" >>${SSH_LOG}   echo "   " >>${SSH_LOG}   echo "Rman Begin  to Working ........." >>${SSH_LOG}   echo "Begin time at:" `date` --`date +%Y%m%d%H%M` >>${SSH_LOG}      #Startup rman to backup    #=============================================================================   $ORACLE_HOME/bin/rman log=${RMAN_FILE}.log <<EOF   connect target /   run {   CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;   CONFIGURE BACKUP OPTIMIZATION ON;   CONFIGURE CONTROLFILE AUTOBACKUP ON;   CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F';   ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE};   ALLOCATE CHANNEL 'ch3' TYPE DISK maxpiecesize=${MAXPIECESIZE};   set limit channel ch2 readrate=10240;   set limit channel ch2 kbytes=4096000;   set limit channel ch3 readrate=10240;   set limit channel ch3 kbytes=4096000;   CROSSCHECK ARCHIVELOG ALL;   DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;   BACKUP    #AS COMPRESSED BACKUPSET    ${INCR_LVL}   DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}';   SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';   BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}'   DELETE  INPUT;   DELETE NOPROMPT OBSOLETE;   RELEASE CHANNEL ch2;   RELEASE CHANNEL ch3;   }   sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''";   exit;   EOF   RC=$?      cat ${RMAN_FILE}.log >>${SSH_LOG}   echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` >>${SSH_LOG}      echo >>${SSH_LOG}   echo "------------------------" >>${SSH_LOG}   echo "------ Disk Space ------" >>${SSH_LOG}   df -h >>${SSH_LOG}      echo >>${SSH_LOG}      if [ $RC -ne "0" ]; then       echo "------ error ------" >>${SSH_LOG}   else       echo "------ no error found during RMAN backup peroid------" >>${SSH_LOG}       rm -rf ${RMAN_FILE}.log   fi      #Remove old backup than 3 days   #============================================================================   RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`;   export RMDIR   echo >>${SSH_LOG}   echo -e "------Remove old backup than 3 days ------\n" >>${SSH_LOG}      if test -d ${RMDIR}       then       rm -rf ${RMDIR}       RC=$?   fi      echo >>${SSH_LOG}      if [ $RC -ne "0" ]; then       echo -e "------ Remove old backup exception------ \n" >>${SSH_LOG}   else       echo -e "------ no error found during remove old backup set peroid------ \n" >>${SSH_LOG}   fi      exit


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI