Centos7下 Oracle11G自动备份

时间:2023-02-01 16:21:38

1、创建备份目录:

[root@Centos ~]# mkdir -p /home/oracle/backup

2、设置目录权限:

[root@Centos ~]# chown -R oracle:oinstall /home/oracle/backup

3、登录 Oracle:

[root@Centos ~]# su - oracle        # 切换到 Oracle 用户下
上一次登录:三 12月 :: CST 2019pts/ 上
[oracle@Centos ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1. Production on 星期四 12月 :: Copyright (c) , , Oracle. All rights reserved. 连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1. - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>

4、指定 expdp 输出目录:

create directory expdata as '/home/oracle/backup';

5、授予 system 权限:

grant create any directory to system;

6、退出 sqlplus:

exit;

或者按 CTRL + d。

7、编写备份脚本:

[oracle@Centos ~]$ vim /home/oracle/oracle_back.sh

脚本内容如下:

#!/bin/bash
# oracle 全库备份脚本,只保留最近7天的备份 # export ORACLE_BASE=/u01/app/oracle
# export ORACLE_SID=centos
# export ORACLE_HOME=/u01/app/oracle/product/11.2./db_1
# export PATH=$PATH:$ORACLE_HOME/bin
# 以上环境变量如果在 .bash_profile 已配置过,则无需添加 DATA_DIR="/home/oracle/backup"
BAKUP_TIME=`date +%Y-%m-%d`
DAYS=
echo "Starting backup..."
echo "Bakup file path $DATA_DIR/$BAKUP_TIME.dmp"
expdp system/'oracle' directory=expdata dumpfile=$BAKUP_TIME.dmp full=y logfile=$BAKUP_TIME.log
echo "Successfully."
# 删除 天之前的备份脚本
find $DATA_DIR -type f -mtime +$DAYS -exec rm -f {} \;

8、设置定时任务:

[oracle@Centos ~]$ crontab -e

0 1 * * * /home/oracle/oracle_back.sh          # 每天凌晨一点执行

最后保存退出。可通过 crontab -l 查看任务是否设置成功。

参考链接:https://blog.csdn.net/Byppfeng/article/details/90376780