Oracle全库备份脚本

2021-02-19 11:18:27 浏览数 (1)

代码语言: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天前的备份(注意:{} 中间有空格)

0 人点赞