Oracle数据库自动备份脚本linux

1.脚本内容:

#!/bin/sh

echo "备份脚本开始启动..."  #打印备份进度

echo "设置系统环境变量..."

#系统环境变量

export ORACLE_SID=orcl

export ORACLE_HOME=/home/oracle/oracle

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/oracle/grid/bin

export LANG=en_US.UTF-8

export NLS_LANG="AMERICAN_AMERICA".AL32UTF8

#以上代码为Oracle数据库运行账号oracle的系统环境变量设置,必须添加,否则crontab任务计划不能执行。

#oracle 信息

dateTime=`date +%Y_%m_%d`  #当前系统时间

days=30 #删除30天前的备份数据

orsid='192.168.132.7:1521/orcl'

#oralce连接信息

# 备份此用户下面的数据

bakuser=shz

#用此用户来执行备份,必须要有备份操作的权限

bakpass=shz #执行备注的用户密码

bakdir=/home/oracle_back

#备份文件路径,已创建完毕

bakdata=$bakuser"_"$dateTime.dmp

#备份数据库名称

baklog=$bakuser"_"$dateTime.log

#备份执行时候生成的日志文件名称

ordatabak=$bakuser"_"$dateTime.tar.gz

#最后保存的Oracle数据库备份文件

mkdir -p $bakdir

cd $bakdir

echo "现在开始进行数据备份..."

#这个才是重点,真正备份数据库的命令,但是需要依赖前面设置的环境变量

exp $bakuser/$bakpass@$orsid grants=y owner=$bakuser file=$bakdir/$bakdata log=$bakdir/$baklog #执行备份

echo "数据备份结束..."

echo "现在开始进行压缩备份数据..."

tar -zcvf $ordatabak $bakdata $baklog

#压缩备份文件和日志文件

echo "压缩备份数据结束..."

echo "删除备份数据开始..."

find $bakdir/ -type f -name "*.log" -exec rm {} \;  #删除备份文件

find $bakdir/ -type f -name "*.dmp" -exec rm {} \;

#删除日志文件

find $bakdir/ -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #删除5天前的备份(注意:{} \中间有空格)

echo "删除备份数据结束..."

echo "备份执行完毕..."

2.设置定时执行

使用crond服务

service crond status  #查看crond服务是否开启

crontab -e  #编辑定时任务

* * * * * $执行用户 $脚本路径  # 分(0-59)  时(0-24) 天(1-31) 月(1-12) 星期(1-7)  执行用户可不写

你可能感兴趣的:(Oracle数据库自动备份脚本linux)