1、root用户下创建备份路径:

mkdir /opt/backup
chown oralce:oinstall /opt/backup

2、oracle用户创建备份脚本路径:

mkdir /opt/app/oracle/bin
cd /opt/app/oracle/bin

3、创建备份脚本
3.1 第一种方式

vi backup.sh
#!/bin/sh
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin:.
export ORACLE_SID=zd
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#export NLS_LANG=american_america.UTF8

CURDATE=$(date '+%Y%m%d%H%M%S')

backup_directory=/opt/backup/
data_file_prefix=zd
BACKUP_FILE=$backup_directory/zd$CURDATE.dmp

delete_prev_month_data_file()
{
    premonth=$(date -d"5 days ago" '+%Y%m%d')
    rm -rf $backup_directory/$data_file_prefix$premonth* || true
}

#exp zd/za2009-pwd@ORCL FILE=$BACKUP_FILE tablespaces='zd'
exp zdwebsite/just@zdwz FILE=$BACKUP_FILE owner='zdweb'
delete_prev_month_data_file
exit 0

3.2 第二种方式

vi backup_rfile.sh
#!/bin/sh
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin:.
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

CURDATE=$(date '+%Y%m%d%H%M%S')

backup_directory=/opt/backup/rfile
data_file_prefix=rfile
BACKUP_FILE=$backup_directory/rfile$CURDATE.dmp

delete_prev_month_data_file()
{
    premonth=$(date -d"5 days ago" '+%Y%m%d')
    rm -rf $backup_directory/$data_file_prefix$premonth* || true
}

cd $backup_directory  #记得要切换目录,因用下以变量方式备份执行的脚本在脚本所在目录下生成备份文件
rfile=`exp rfile/133 FILE=rfile$CURDATE.dmp owner='rfile'`
$rfile
delete_prev_month_data_file
exit 0

4、定时任务

crontab -e
0 5 * * * /opt/app/oracle/bin/backup.sh
0 1 * * * /opt/backup/bin/backup_rfile.sh

5、crontab说明:
第一个*表示分钟 每小时的第几分钟执行 0-59

第二个*表示小时 每天的第几个小时执行 0-23

第三个*表示日期 每月的第几天执行 1-31

第四个*表示月历 每年的第几个月执行 1-12

第五个*表示星期 每周的第几天执行 0-6