zoukankan      html  css  js  c++  java
  • ORACLE定时备份方案

    ORACLE定时备份方案

    采用ORACLE的EXP工具,实现ORACLE的备份;采用LINUX的服务crond实现定时功能。

    1 编辑SH,实现备份功能

    #vi oracle_backup.sh,输入以下内容

    #!/bin/sh

    ORACLE_BACKUP_HOME=/home/oracle/backup   #定义ORACLE备份根目录

    BACKUP_DATA=$ORACLE_BACKUP_HOME/day   #定义ORACLE备份数据文件根目录

    BACKUP_LOG=$BACKUP_DATA/log  #定义ORACLE备份日志文件根目录

    export  ORACLE_BACKUP_HOME  BACKUP_DATA BACKUP_LOG 

    DATA_FILE_NAME=data_backup          #定义ORACLE备份日志文件名字前缀

    LOG_FILE_NAME=log_backup             #定义ORACLE备份日志文件名字前缀

    export DATA_FILE_NAME LOG_FILE_NAME

    BACKUP_AMOUNT=4        #定义ORACLE备份文件保存数量

    export BACKUP_AMOUNT

     

    datafile_amount=$(find $BACKUP_DATA -type f -name $DATA_FILE_NAME'_'*.dmp|wc -l)   #查询ORACLE备份数据文件根目录下备份数据文件的数量

    logfile_amount=$(find $BACKUP_LOG -type f -name $LOG_FILE_NAME'_'*.log|wc -l)      #查询ORACLE备份日志文件根目录下备份日志文件的数量

    del_datafile_count=$(($datafile_amount-$BACKUP_AMOUNT+1));   #计算需要删除ORACLE备份数据文件的数量

    del_logfile_count=$(($datafile_amount-$BACKUP_AMOUNT+1));         #计算需要删除ORACLE备份日志文件的数量

     

    if(($datafile_amount>=$BACKUP_AMOUNT));then

           echo $BACKUP_DATA"路径下文件太多,正在清除备份数据文件"

           for((i=0;i<$del_datafile_count;i++))

           do

           ls -t $BACKUP_DATA/$DATA_FILE_NAME'_'*.dmp| awk 'END{if(NR>=$BACKUP_AMOUNT){system("rm -rf "$NF);system("echo  $BACKUP_DATA路径下,已删除文件"$NF)}}'#删除修改时间最早的一个数据文件

           done

    fi

     

    if(($logfile_amount>=$BACKUP_AMOUNT));then

           echo $BACKUP_LOG"路径下文件太多,正在清除备份日志文件"

           for((i=0;i<$del_logfile_count;i++))

           do

           ls -t $BACKUP_LOG/$LOG_FILE_NAME'_'*.log| awk 'END{if(NR>=$BACKUP_AMOUNT){system("rm -rf "$NF);system("echo  $BACKUP_LOG路径下,已删除文件"$NF)}}'#删除修改时间最早的一个日志文件

           done

    fi

     

    rq=`date +"%Y%m%d%s"`      #获取当前系统时间

    su - oracle -c "/oracle/product/10.2.0/db_1/bin/exp sgedptwo/sgdb321@SGEMDP file=$BACKUP_DATA/$DATA_FILE_NAME'_'$rq.dmp log=$BACKUP_LOG/$LOG_FILE_NAME'_'$rq.log" #备份ORACLE数据库并记录日志

    2 授予ORACLE用户使用备份目录权限

    # mkdir /home/oracle/backup

    # mkdir /home/oracle/backup/day

    # mkdir /home/oracle/backup/day/log

    #chown –R /home/oracle/backup

    3 使用crond定制定时任务

    #ps-ef|grep crond  #查看crond服务是否开启

    #service crond start|stop|restart   #crond服务启动|停止|重启命令

    #crontab –e,输入以下内容

    0 0 * * * /oracle/oracle_backup.sh   #每天00:00执行任务

    0 0 1 * * /oracle/oracle_backup.sh  #每月1号00:00执行任务

     

     

    注释:

    * * * * * command to be executed

    - - - - -

    | | | | |

    | | | | ----- Day of week (0 - 6) (Sunday=0 )

    | | | ------- Month (1 - 12)

    | | --------- Day of month (1 - 31)

    | ----------- Hour (0 - 23)

    ------------- Minute (0 - 59)

     

     

  • 相关阅读:
    python 文件路径拼接、判断、创建、输出
    热力图制作
    矩阵文件添加列标签
    cmd运行 ‘.py’ 文件
    hdu 2017 字符串统计
    hdu 2016 数据的交换输出
    hdu 2014 青年歌手大奖赛_评委会打分
    hdu 2013 蟠桃记
    hdu 2012 素数判定
    hdu 2011 多项式求和
  • 原文地址:https://www.cnblogs.com/alliswell2king/p/11757225.html
Copyright © 2011-2022 走看看