此脚本经过生产检验,可使用!!!!
Oracle数据库备份恢复,有条件的使用专业的备份系统(NBU、Veritas等)。没有条件的采用以下方式将数据备份到本地服务器。
具体步骤如下:
1、数据库中指定备份数据expdp/impdp目录
Root user:
su - root
mkdir -p /u01/app/dump
cd /u01/app/
chmod 777 dump -R
chown oracle:oinstall dump -R
Oracle user:
su - oracle
sqlplus / as sysdba
SQL> create or replace directory dump as '/u01/app/dump'; #新建dump目录
SQL> Grant read,write on directory dump to system; #授权
SQL> alter system set deferred_segment_creation = FALSE; #延迟分配参数
2、设置自动备份脚本,并自动删除三天前的备份数据
su - oracle
mkdir /u01/script
cd /u01/script
vi db_backup.sh
#!/bin/bash
# 设置环境变量
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 #根据实际情况设置
export ORACLE_SID=ORCL #根据实际情况设置
export PATH=$ORACLE_HOME/bin:$PATH
# 配置备份目录和文件名
BACKUP_DIR=/u01/app/dump #根据1设置的dump目录
DATE=$(date +%Y%m%d)
BACKUP_FILE="expdp_${ORACLE_SID}_${DATE}.dmp"
BACKUP_LOG="expdp_${ORACLE_SID}_${DATE}.log"
# 使用expdp进行备份
expdp system/your_system_password schemas=USer directory=dump dumpfile=${BACKUP_FILE} logfile=${BACKUP_LOG}
# 删除3天前的备份
find ${BACKUP_DIR} -type f -mtime +3 -name "expdp_${ORACLE_SID}_*.dmp" -exec rm {} \;
find ${BACKUP_DIR} -type f -mtime +3 -name "expdp_${ORACLE_SID}_*.log" -exec rm {} \;
3、对脚本进行授权
chmod +x db_backup.sh
4、设置定时任务
crontab -e
5、定时任务,每天凌晨1点执行脚本
0 1 * * * /u01/script/db_backup.sh >> /u01/script/log/cron_job.log 2>&1