linux中执行定时任务对oracle备份(crontab命令)

查看oracle的相关信息

1、在oratab中查看SID的ORACLE_HOME目录

切换成oracle用户,命令:su - oracle

[oracle@localhost ~]$ cat /etc/oratab            含义:查看oracle_sid、oracle_home

 

2在bash_profile中查看ORACLE_BASE , ORACLE_HOME , ORACLE_SID

切换为oracle用户

[oracle@localhost ~]$ cat .bash_profile (第一次登录先查看ORACLE_BASE, ORACLE_HOME , ORACLE_SID)

 

3、直接通过echo命令查看(切换oracle用户,直接输入以下命令)

echo $ORACLE_BASE     

echo $ORACLE_HOME

echo $ORACLE_SID

echo $PATH

echo $NLS_LANG   查看字符集

执行定时任务对oracle表数据备份:

1、创建sh脚本

[oracle@localhost ~]$ vi bak.sh

2、添加脚本内容

  1. #!/bin/bash
    #:本脚本自动备份7天的数据库,每次备份完成后,删除7天之前的数据。
    #加载oracle的相关参数
    #如果oracle参数不明确,请使用命令查看
    # su - oracle
    # echo $ORACLE_HOME
    export ORACLE_BASE=/home/oracle/app
    export ORACLE_HOME=/home/oracle/app/oracle
    export ORACLE_SID=CSIC8
    export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
    
    #oracle字符集
    
    export NLS_LANG=AMERICAN_AMERICA.UTF8
    
    #获取当前时间,格式:20150210
    
    DATE=$(date +%Y%m%d)
    
    #获取7天之前的时间,格式:20150203
    
    DATE_RM=$(date -d "7 days ago" +%Y%m%d)
    
    #设置备份目录,
    
    export DIR=/home/oracle/oracledata/backup
    
    echo $DIR
    
    #创建日期目录
    
    mkdir $DIR/$DATE
    
    #开始备份,此处采用exp方式导出,根据实际情况可选用expdb数据方式导出
    
    echo 'Oracle backup...'
    
    exp CSIDBA/CSIDBA@CSIC8  file=$DIR/$DATE'/C8DBData_'$DATE'.dmp' log=$DIR/$DATE'/C8DBData_log_'$DATE'.log'
    
    # exp cs_prod/quickdone@CSIC8  file=$DIR/$DATE'/csprod_'$DATE'.dmp' log=$DIR/$DATE'/csprod_log_'$DATE'.log'
    
    echo 'Oracle backup successfully.'
    
    echo 'remove...'
    
    rm -rf $DIR/$DATE_RM
    
    echo 'remove successsfully.'

3、赋权:

[oracle@localhost ~]$ chmod 777 ./bak.sh

4、添加定时任务:

[oracle@localhost ~]$ crontab -e

#每天一点半执行一次(将下面这段代码复制进去)
30 1 * * * /home/backup/bak.sh

注:如果crontab命令报:no crontab for oracle

oracle用户下 输入 crontab -l 显示,no crontab for root  例如:

[root@localhost ~]# crontab -l
no crontab for root

同样在 root 用户下输入 crontab -e

按 Esc ,按:wq   回车

5、查看任务:

[oracle@localhost ~]$ crontab -l

关于linux在shell中获取系统时间:

获得当天的日期 date +%Y%m%d      输出: 20110728

可以使用date的 -d参数 获取今天之前或者往后的日期

获取明天的日期 date -d next-day +%Y%m%d

获取前几天的日期 date -d "7 days ago" +%Y%m%d

获取昨天的日期 date -d last-day +%Y%m%d

 

crontab 前面5个*参数的意义:

0~59 表示分 
1~23 表示小时 
1~31 表示日 
1~12 表示月份 
0~6 表示星期(其中0表示星期日)

例子:

#每天早上6点10分
10    6     *     *     *     date
#每两个小时
0     */2   *     *     *     date
#晚上11点到早上8点之间每两个小时,早上8点
0     23-7/2,8      *     *     *     date
#每个月的4号和每个礼拜一到礼拜三的早上11点
0     11    4     *     1-3  date
#1月1日早上4点
0     4     1     1       *  date

猜你喜欢

转载自www.cnblogs.com/liyanlin/p/12657964.html