Oracle 数据库增量备份周计划脚本

简介: ####------------------------------------------------------------------------------######    shell db_incremental_database_backup.
####------------------------------------------------------------------------------####
##    shell db_incremental_database_backup.sh          
##    author  zongziheng                                         
##    date    2017.01.20                                         
##    func The path and date are set as required                 
##    use meth    ./rmanbackup_lev_sjz.sh BACKUP_DEST ORACLE_HOME ORACLE_SID           
## alter system set db_create_file_dest = '/u01/app/oracle/oradata/';                                      
## alter database enable block change tracking;                                                                        
## alter database enable block change tracking using file '/../../blcok...';                                  
####------------------------------------------------------------------------------####
  
#!/bin/bash

export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
backtime=`date +"20%y%m%d%H%M%S"`

RMAN_BACKUP_DATA_DEST=$1
RMAN_LOG_FILE=${RMAN_BACKUP_DATA_DEST}/rmanback_lev_${backtime}.log

BACKUP_DATE=`date +%d`
TODAY=`date`
CURRENT_USER=`id|cut -d "(" -f2|cut -d ")" -f1`
echo "-----------------$TODAY-------------------">$RMAN_LOG_FILE
 
export ORACLE_HOME=$2 
export RMAN=${ORACLE_HOME}/bin/rman
export ORACLE_SID=$3 
export ORACLE_USER=oracle
 
echo "ORACLE_SID: $ORACLE_SID">>$RMAN_LOG_FILE
echo "ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
echo "ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
echo "==========================================">>$RMAN_LOG_FILE
echo "BACKUP DATABASE BEGIN......">>$RMAN_LOG_FILE
echo "                   ">>$RMAN_LOG_FILE
 
#touch $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
 
CURRENT_WEEK_DAILY=`date +%a`
 
case  "$CURRENT_WEEK_DAILY" in
       "Mon")
            BAK_LEVEL=1
            ;;
       "Tue")
            BAK_LEVEL=1
            ;;
       "Wed")
            BAK_LEVEL=1
            ;;
       "Thu")
            BAK_LEVEL=1
            ;;
       "Fri")
            BAK_LEVEL=1
            ;;
       "Sat")
            BAK_LEVEL=0
            ;;
       "Sun")
            BAK_LEVEL=1
            ;;
       "*")
            BAK_LEVEL=error
esac
 
export BAK_LEVEL=$BAK_LEVEL
 
echo "Today is : $CURRENT_WEEK_DAILY  incremental level= $BAK_LEVEL">>$RMAN_LOG_FILE
 
 
RUN_SHELL="
 
BAK_LEVEL=$BAK_LEVEL
export BAK_LEVEL
 
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
 
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
 
$RMAN nocatalog TARGET sys/oracle msglog $RMAN_LOG_FILE append <<EOF
run
{
  allocate channel c1 type disk;
  allocate channel c2 type disk;
  backup incremental level= $BAK_LEVEL skip inaccessible filesperset 5 Database format='"$RMAN_BACKUP_DATA_DEST"/"$ORACLE_SID"_lev_"$BAK_LEVEL"_%U_%T' tag='"$ORACLE_SID"_lev_"$BAK_LEVEL"';
  sql 'alter system archive log current';
  backup archivelog all tag='arc_bak' format='"$RMAN_BACKUP_DATA_DEST"/arch_%U_%T' skip inaccessible  filesperset 5 not backed up 1 times delete input;
  backup current controlfile tag='ctlfile_bak' format='"$RMAN_BACKUP_DATA_DEST"/ctl_file_%U_%T';
  backup spfile tag='spfile_bak' format='"$RMAN_BACKUP_DATA_DEST"/spfile_%U_%T';
  release channel c2;
  release channel c1;
}
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
list backup summary;
EOF
"
# Initiate the command string
if [ "$CUSER" = "root" ]
then
    echo "Root Command String: $RUN_SHELL" >> $RMAN_LOG_FILE
    su - $ORACLE_USER -c "$RUN_SHELL" >> $RMAN_LOG_FILE
    STATUS=$?
else
    echo "User Command String: $RUN_SHELL" >> $RMAN_LOG_FILE
    /bin/sh -c "$RUN_SHELL" >> $RMAN_LOG_FILE
    STATUS=$?
fi
 
# ---------------------------------------------------------------------------
# Record whether or not the log is completed.
# ---------------------------------------------------------------------------
if [ "$STATUS" = "0" ]
then
    LOGMSG="Ended successfully."
else
    LOGMSG="Ended in error!"
fi
 
echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
 
exit $STATUS

####------------------------------------------------------------------------------####

目录
相关文章
|
2天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库:装上去,飞起来!
本文是一篇关于Oracle数据库安装和使用的博文摘要。作者以轻松幽默的笔调介绍了自己在实验中掌握的Oracle数据库基本操作,包括使用组件查看命令、配置数据库监听器等。作者也分享了在实验中遇到的一些有趣问题,如SQL语句缺少分号导致的意外错误。此外,作者还强调了登录sys用户和启动实例加载数据库的注意事项,并鼓励读者面对挑战时保持乐观,不断提升自己的能力。整体风格风趣严谨,引人入胜。
55 0
|
6天前
|
SQL 存储 关系型数据库
备份数据库
备份数据库
16 9
|
19天前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
|
19天前
|
SQL 存储 算法
【数据库SQL server】数据库系统概述与DBS结构
【数据库SQL server】数据库系统概述与DBS结构
48 0
【数据库SQL server】数据库系统概述与DBS结构
|
20天前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
24 0
|
20天前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
22 0
|
20天前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
54 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
20天前
|
SQL 存储 Oracle
JAVAEE框架数据库技术之11 oracle入门
JAVAEE框架数据库技术之11 oracle入门
109 0
JAVAEE框架数据库技术之11 oracle入门
|
Oracle 关系型数据库 数据库
oracle数据库控制文件的备份和恢复之三RMAN自动备份和恢复
使用RMAN自动备份的控制文件向数据库中恢复控制文件
286 0
|
Oracle 关系型数据库 数据库

热门文章

最新文章