Linux下备份oracle数据库shell脚本

    技术2022-05-19  21

    #!/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-8export LANG

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

    if [ $DISK_SIZE -gt 85 ]; then         echo DISK_SIZE is $DISK_SIZE over 85        exitelse         echo DISK_SIZE=$DISK_SIZEfi

    export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

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

    ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1export ORACLE_HOME

    #oracle安装的服务名称

    ORACLE_SID=metardbexport ORACLE_SID

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

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

    #Define the exp userUSER=system

    #Define the exp user's passwordPASSWD=metarnet

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

    #Define the retention days of your backup fileDAYS=365

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

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

    if [ $DISK_SIZE -gt 85 ]; then        echo DISK_SIZE is $DISK_SIZE over 85|tee -a $LOG_FILE        exitelse        echo DISK_SIZE=$DISK_SIZE|tee -a $LOG_FILEfi

     

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

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

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

    #Begin backupecho "Backup is started" >>$LOG_FILEecho "......">>$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_FILEelse   echo "Notice! Backup hard disk is ended unsuccessful!">> $LOG_FILEfi

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

    #Delete 3 days ago fileOLDFILE=metardb_`date -d '3 days ago' +%Y%m%d_%w`_full.dmp.gzOLDLOG=metardb_`date -d '3 days ago' +%Y%m%d_%w`_full.logrm -rf /orabak/$OLDFILErm -rf /orabak/$OLDLOG

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


    最新回复(0)