linux下如何备份数据库内容,以及每日定时执行

首先我们要写数据库备份的脚本

#!/bin/sh

#如果不清楚 ORACLE_HOME 则 先进入 su - oracle   然后 echo   ORACLE_HOME
export ORACLE_BASE=/home/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export ORACLE_SID=orclgbk  #需要备份的数据库

export ORACLE_TERM=xterm

export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export LANG=C

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

#以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。
export NOWDATE=`date "+%Y%m%d%H%M%S"` #获取当前时间
export FilePath=/home/oracle/backup/dms #文件备份的路径
export DELTIME=`date -d "7 days ago" +%Y%m%d` #获取七天之前的日期
export SpecFilePath=/home/oracle/app/oracle/admin/orclgbk/dpdump #备份的路径

echo "========备份开始========="
echo "========备份路径=$FilePath==========="

# oracle用户的系统环境变量路径:/home/oracle/.bash_profile



bakdir=/home/oracle/backup  #备份文件路径,需要提前创建好


cd $bakdir #进入备份目录

#指定数据库实例

export ORACLE_SID=ORCLGBK
expdp user/password@ORC file=user_${NOWDATE}.dmpd  logfile=user.log schemas=user #备份user用户下的数据内容

cd ${SpecFilePath}

if [ -f user_${NOWDATE}.dmpd ]
    then
    #将文件移动到特定文件夹下
    mv user_${NOWDATE}.dmpd ${FilePath}/user_${NOWDATE}.dmpd
    cd ${FilePath}
    #在特定文件夹下进行压缩打包处理
    tar -cvf user_${NOWDATE}.dmpd.tar user_${NOWDATE}.dmpd
    gzip user_${NOWDATE}.dmpd.tar
    #打包处理完后删除原有数据库文件
    rm -rf user_${NOWDATE}.dmpd
fi

#清理一星期之前的数据库文件
rm  ${FilePath}/user_${DELTIME}* 

然后启动定时任务

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
  • /etc/crontab 这个文件负责调度各种管理和维护任务。
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
  • 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一

实例

实例1:每1分钟执行一次myCommand

* * * * * myCommand

实例2:每小时的第3和第15分钟执行

3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2 * * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 myCommand

实例6:每晚的21:30重启smb

30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb

45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb

0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb

* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb

* 23-7/1 * * * /etc/init.d/smb restart

猜你喜欢

转载自www.cnblogs.com/mxs1997/p/12290879.html