Linux定时备份oracle数据库
Linux用shell脚本+crontab定时备份数据库
·
一、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
***********************************************************************************************
更多推荐
已为社区贡献1条内容
所有评论(0)