使用 oracle expdp 导出数据库,同时删除7天以前的备份,但保留每月1日,每周一的备份。 注意cron中需要额外的环境变量 例子: crontab -l PATH=/usr/lib64/mpi/gcc/openmpi/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/k
使用 oracle expdp 导出数据库,同时删除7天以前的备份,但保留每月1日,每周一的备份。
注意cron中需要额外的环境变量
例子:
>crontab -l
PATH=/usr/lib64/mpi/gcc/openmpi/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/opt/oracle/product/10.2/db_1/bin
ORACLE_HOME=/opt/oracle/product/10.2/db_1
ORACLE_SID=orcl
ORACLE_BASE=/opt/oracle
# min hour date mont week cmd
0 0 * * * /opt/oracle/backup-oracle.sh
Oracle
#!/bin/bash
#this will use expdp to export oracle database;
#oracle 导出备份工具,保留每月1日的备份文件,保留每周1的备份文件,删除7天前的 备份文件
#建议每日的0点开始运行
#
#install
#crontab -e
#ORACLE_BASE=/opt/oracle
#export ORACLE_SID=database
#export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
#export PATH=$PATH:$ORACLE_HOME/bin:$CATALINA_HOME/bin
#PATH=
## min hour date mont week user cmd
#0 0 * * * oracel /opt/oracle/backup-oracle.sh
#
#date -d "-30 day" +%Y-%m-%d
#cd /opt/SUNWappserver/nodeagents/$1/logs
#%F=%Y-%m-%d=2011-12-31
path=$(dirname $0)
echo $path
TDT=`date +%FT%T`
TD=`date +%F`
TD1=`date +%Y%m%d`
#if [ $# -gt 0 ]; then
# YD=$1
#fi
expdp usrename/password dumpfile=pump_dir:data${TDT}.expdp schemas=username nologfile=y job_name=just_data
# log file dir change oracle directory config
pushd /opt/oracle/oradata/expdp
MON=`date -d "monday" +%F`
MONTHLY=`date +%Y-%m-01`
YD=`date -d "-7day" +%FT`
if [ "$TD" == "$MON" -a -f "data${TD}.expdp" ];
then
cp data${TDT}.expdp data${TD}.expdp
fi
if [ "$TD" == "$MONTHLY" -a -f "data${TD}.expdp" ] ;
then
cp data${TDT}.expdp data${TD}.expdp
fi
#delete 7days ago file
for file in data*T*.expdp
do
echo test $file "\
if [ "$file" \< "data$YD" ] ;
then
echo will remove $file
rm $file
fi
done
popd