Linux下备份oracle数据库shell脚本

#!/bin/bash

#获取linux服务器上/dev/sda7的磁盘空间大小

DISK_SIZE=`df -k|grep /dev/sda7 |awk '{ print substr($5,1,2) }'`
export DISK_SIZE

LANG=zh_CN.UTF-8
export LANG

#判断磁盘空间是否大于85% 如果大于85%就直接退出执行s

if [ $DISK_SIZE -gt 85 ]; then
        echo DISK_SIZE is $DISK_SIZE over 85
        exit
else
        echo DISK_SIZE=$DISK_SIZE
fi


export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

#oralce安装的路径
ORACLE_BASE=/opt/app/oracle
export ORACLE_BASE

ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
export ORACLE_HOME

#oracle安装的服务名称

ORACLE_SID=metardb
export ORACLE_SID

#BAK_PATH is a path that store your exp file
BAK_PATH="/orabak"

#LOG_FILE is a file that recorde the results of export
LOG_FILE="$BAK_PATH"/`date +%Y%m%d`_brief.log

#Define the exp user
USER=system

#Define the exp user's password
PASSWD=metarnet

#Determine the current user name
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`

#Define the retention days of your backup file
DAYS=365


#******************************************************************
#It is unnecessary to edit the the below text in normal condition.*
#******************************************************************


echo "The start time is:  "`date` >> $LOG_FILE
echo >> $LOG_FILE

if [ $DISK_SIZE -gt 85 ]; then
        echo DISK_SIZE is $DISK_SIZE over 85|tee -a $LOG_FILE
        exit
else
        echo DISK_SIZE=$DISK_SIZE|tee -a $LOG_FILE
fi

 


#Define the backup file name
BAK_FILE=metardb_`date +%Y%m%d_%w`_full.dmp

#Define the backup log file name
BAK_LOG=metardb_`date +%Y%m%d_%w`_full.log

#Define your backup command
CMD_STR="
setenv ORACLE_HOME $ORACLE_HOME
exp $USER/$PASSWD@$ORACLE_SID  file=$BAK_PATH/$BAK_FILE  log=$BAK_PATH/$BAK_LOG full=y
"

#Begin backup
echo "Backup is started" >>$LOG_FILE
echo "......">>$LOG_FILE

if [ "$CUSER" = "root" ]
then
    su - oracle -c "$CMD_STR" >> $LOG_FILE
    RSTAT=$?
else
    /usr/bin/csh -c "$CMD_STR" >> $LOG_FILE
    RSTAT=$?
fi

if [ "$RSTAT" = "0" ]
then
   echo "Backup to Hard disk  is ended successful!" >> $LOG_FILE
else
   echo "Notice! Backup hard disk is ended unsuccessful!">> $LOG_FILE
fi

#compress
#yestoday=`date +%D | awk -F/ '{s=$2-2}{printf"20%02d%02d%02d/n", $3,$1,s}'`
cd $BAK_PATH
#CMP_FILE="yujing_"$yestoday"_full.dmp"
echo "Compress "$BAK_FILE >>$LOG_FILE
gzip  $BAK_FILE

#Delete 3 days ago file
OLDFILE=metardb_`date -d '3 days ago' +%Y%m%d_%w`_full.dmp.gz
OLDLOG=metardb_`date -d '3 days ago' +%Y%m%d_%w`_full.log
rm -rf /orabak/$OLDFILE
rm -rf /orabak/$OLDLOG

echo >>$LOG_FILE
echo "Backup to Hard disk End time is:  "`date`>>$LOG_FILE

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值