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)

     

     

  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/alliswell2king/p/11757225.html
Copyright © 2011-2022 走看看