«

Oracle全库备份脚本

指尖二进制 • 1 年前 • 695 次点击 • BASH


例如下面的Oracle备份脚本。备份全库、压缩、删除7天以前的数据。

#!/bin/bash
# author:zhang
#
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天前的备份(注意:{} \中间有空格)
还没收到回复