代码语言:javascript复制
#!/bin/bash
# author:院长
#
export PATH
export TMP=/tmp #tmp的路径、临时路径
export TMPDIR=$TMP #
export ORACLE_BASE=/u01/app/oracle #oracle软件的基准路径在哪
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_home1 #
export ORACLE_SID=bpas2 #把数据库产品的id加进来,每次登陆时就不用设置变量了
export PATH=$ORACLE_HOME/bin:$PATH #path变量
export DISPLAY=192.168.1.1:0.0 #
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。
# oracle用户的系统环境变量路径:/home/oracle/.bash_profile
#获取系统当前日期时间
date=`date %Y_%m_%d`
#设置删除7天之前的备份文件
day=7
#备份此用户下面的数据
ouser=ami
#用此用户来执行备份,必须要有备份操作的权限
user=ami
#执行备份的用户密码
passwd=ami
#逻辑目录
directory=MY_DUMP
#备份文件路径,需要提前创建好
bakdir=/home/oracle/backup
#备份执行时候生成的dmp文件名称
bakdata=$ouser"_"$date.dmp
#备份执行时候生成的日志文件名称
baklog=$ouser"_"$date.log
#进入这个目录
cd $bakdir
expdp $user/$passwd directory=$directory dumpfile=$bakdata logfile=$baklog schemas=ami
#压缩备份文件和日志文件
zip ${date}.zip $bakdata $baklog
find $bakdir -type f -name "*.log" -exec rm {} ; #删除备份文件
find $bakdir -type f -name "*.dmp" -exec rm {} ; #删除日志文件
find $bakdir -type f -name "*.zip" -mtime $days -exec rm -rf {} ; #删除7天前的备份(注意:{} 中间有空格)