一、Linux用shell脚本定时备份数据库

(不按脚本来可能会有坑)

二、创建shell脚本

创建oracle_backup.sh,放在/home/oracle/bin/下, 最好用oracle账户创建。

#!/bin/sh

#文件路径及名称(目录按照各自配置)
DATA_FOLDER=/data/oracleDB
BAK_FOLDER=/data/bak/oraclebak
LOG_FOLE=/data/oracleDB/log.txt

# 必须引入环境变量,不然定时任务无效【关键关键】
. ~/.bash_profile;

# 20211218V1710,备份的文件到时命名会带这个时间标识
DATE=$(date +%Y%m%dV%H%M)
echo "$DATE backup begin...">>$LOG_FOLE


# 开始备份
# *****************************************************************
# ******这一段是备份命令,有几个库就写几个*************************
FILE_mydb01="mydb01_$DATE.dmp"
expdp user01/password01@MYDATABASE schemas=user01 directory=DATAPUMP_DIR dumpfile=$FILE_mydb01 logfile=export_$FILE_mydb01.log;
echo "$FILE_mydb01 backup ok">>$LOG_FOLE

FILE_mydb02="mydb02_$DATE.dmp"
expdp user02/password02@MYDATABASE schemas=user02 directory=DATAPUMP_DIR dumpfile=$FILE_mydb02 logfile=export_$FILE_mydb02.log;
echo "$FILE_mydb02 backup ok">>$LOG_FOLE
# ********MYDATABASE是数据库实例**schemas是导出哪个用户的数据******
# *****************************************************************


echo "$DATE backup finished">>$LOG_FOLE
# 结束备份

# 删除备份目录
echo "remove data  from $BAK_FOLDER">>$LOG_FOLE
rm -rf $BAK_FOLDER/*

# 把备份的文件夹复制到备份目录
echo "copy files from $DATA_FOLDER to $BAK_FOLDER">>$LOG_FOLE
mv -f $DATA_FOLDER/* $BAK_FOLDER/

三、文件授权

chmod 777 oracle_backup.sh

四、设置linux crontab定时任务

以oracle用户身份运行:

crontab -e

加入以下内容,保存:

#这是每天17点10分运行一次
10 17 * * * sh /home/oracle/bin/oracle_backup.sh

重启crontab服务,避免任务没加入:

/etc/rc.d/init.d/crond   restart

五、大功告成,等待明天看效果。

最终会生成:

mydb01_20211218V1710.dmp(数据文件)

mydb01_20211218V1710.dmp.log(备份过程日志)

mydb02_20211218V1710.dmp(数据文件)

mydb02_20211218V1710.dmp.log(备份过程日志)

***********************************************************************************************************

author:蓝何忠
email:lanhezhong@163.com
***********************************************************************************************

Logo

更多推荐