oracle定时备份数据库,以及删除7天前备份的数据。
1、创建存放备份目录:
mkdir /home/oracle/data_backup
mkdir /home/oracle/log_backup
2、编辑脚本oracle_backup.sh,内容如下:
#!/bin/sh
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/home/oracle/data_backup
export LOGS_DIR=/home/oracle/log_backup
export BAKUPTIME=`date +%Y%m%d%H%M%S`
echo "Starting bakup..."
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp"
exp shop/[email protected] file=$DATA_DIR/$BAKUPTIME.dmp log=$LOGS_DIR/$BAKUPTIME.log
echo "Delete the file bakup before 10 days..."
find $DATA_DIR -mtime +10 -name "*.dmp" -exec rm -rf {} \;
echo "Delete the file bakup successfully. "
echo "Bakup completed."
脚本中:
$DATA_DIR:数据库备份文件存放目录
-mtime 固定写法
+10:10天前
"*.dmp" 后缀为dmp的文件将全部被删除
2、添加到任务调度
crontab -u oracle -e
* 3 * * *
/home/bakup/bakup.sh
即每天凌晨3点进行备份
如需每天备份多次,可设置不同时间段备份:
例如:* 3,13,18 * *
* /home/bakup/bakup.sh,即每天3点、13点、18点进行备份。
说明:文件备份目录,用户oracle必须有更改权限,否则无法备份。
oracle定时备份与删除N天前备份文件