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

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

目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
132 68
|
2月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库中给表添加字段并设置备注的脚本编写
通过上述步骤,你可以在MySQL数据库中给表成功添加新字段并为其设置备注。这样的操作对于保持数据库结构的清晰和最新非常重要,同时也帮助团队成员理解数据模型的变化和字段的具体含义。在实际操作中,记得调整脚本以适应具体的数据库和表名称,以及字段的详细规范。
84 8
|
4月前
|
SQL 数据可视化 关系型数据库
成功解决7版本的数据库导入 8版本数据库脚本报错问题
您提供的链接是一篇关于如何解决在MySQL数据库中导入脚本时出现版本兼容性问题的博客文章。文章中提到,如果在MySQL 5.7之前的版本中使用utf8mb4_0900_ai_ci排序规则,会遇到"Unknown collation"错误。解决办法包括升级MySQL版本到8.0或更高,或者更改排序规则为utf8mb4_general_ci或utf8mb4_unicode_ci,并提供了修改SQL脚本的示例。 如果您需要更详细的信息或有其他问题,请告诉我。
|
4月前
|
关系型数据库 MySQL Shell
MySQL数据库一键安装脚本,适合任何版本
MySQL数据库一键安装脚本,适合任何版本
159 2
|
4月前
|
机器学习/深度学习 Oracle 关系型数据库
Oracle 19c单机一键安装脚本分享
Oracle 19c单机一键安装脚本分享
237 2
|
5月前
|
Oracle 安全 关系型数据库
|
5月前
|
存储 Oracle 关系型数据库
|
5月前
|
Oracle 关系型数据库 数据库
|
4月前
|
Oracle 关系型数据库 数据库
Oracle数据库备份脚本分享-Python
Oracle数据库备份脚本分享-Python
118 0

推荐镜像

更多