Linux下设置Oracle数据库定时备份

 

Linux(Oracle 12C)


  • 使用vim命令在oracle的home下新建oracle_bak.sh
[root@ceshi oracle]# pwd
/home/oracle
[root@ceshi oracle]# vim oracle_bak.sh
##给脚本授权
[root@ceshi oracle]# chmod 755 /home/oracle/oracle_bak.sh
  • 脚本脚本内容如下
#!/bin/bash
#设置oracle环境变量
export ORACLE_BASE=/u01/app #根据实际修改
export ORACLE_HOME=/u01/app/product/12.2/db #根据实际修改
export ORACLE_SID=ORCL #根据实际修改
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin #不用修改
export BAKUPTIME=`date +%Y%m%d%H%M` #不用修改

#设置删除30天之前的备份文件
export DELETE_DAYS=30

#指定directory路径
export BAK_DIR=/u01/app/oradata #根据实际修改为泵目录路径

#用户
export BAK_USER=testbak #根据实际修改为实际用户

#指定directory名字
export DIRECTORE_NAME=dir #根据实际修改为对应泵目录名称

# 执行存量备份
cd ${BAK_DIR} # 不用修改
#修改[/u01/app/product/12.2/db/]路径为自己实际的路径
#修改[testbak/test12345]为实际的用户名与密码
#其余不用动
/u01/app/product/12.2/db/bin/expdp testbak/test12345 directory=${DIRECTORE_NAME} schemas=${BAK_USER} dumpfile=${BAK_USER}_%U_${BAKUPTIME}.dmp logfile=${BAK_USER}_${BAKUPTIME}.log parallel=4 cluster=no

#压缩备份文件和日志文件
cd ${BAK_DIR} #不用修改
tar -zcvf ${BAK_USER}_${BAKUPTIME}.dmp.tar.gz ${BAK_USER}_*.dmp ${BAK_USER}_*.log #不用修改

#备份完成之后,删除当天备份文件和日志文件
find ${BAK_DIR}/* -type f -name "${BAK_USER}*.dmp" -exec rm -rf {} \; #删除备份文件 #不用修改
find ${BAK_DIR}/* -type f -name "${BAK_USER}*.log" -exec rm -rf {} \; #删除日志文件 #不用修改

#删除30天前的备份文件
find ${BAK_DIR}/* -type f -name "${BAK_USER}*.tar.gz" -mtime +${DELETE_DAYS} -exec rm -rf {} \; #不用修改


  •  进行定时任务的设置,注意使用root用户操作
[root@ceshi oracle]# crontab -e

 #添加定时任务(输入字母i进入编辑模式,输入下面代码
 #每天00:10分使用oracle用户执行/home/oracle/目录下的oracle_bak.sh文件)
 #输入完成后按esc退出编辑模式
 #输入[:wq!]退出并保存
 10 00 * * * su - oracle -c /home/oracle/oracle_bak.sh

#重启该服务使定时任务生效
[
root@ceshi oracle]# systemctl restart crond 
posted @ 2022-08-26 10:54  洋芋不是土豆  阅读(1269)  评论(0编辑  收藏  举报