ORACLE常用定时备份脚本

[oracle@rac1 ~]$ crontab  -l

0 13 * * * /home/oracle/dumpfile/datapump_exp.sh

0 6 * * * /home/oracle/auto_clear_archivelog/auto_clear_archivelog.sh

0 */3 * * * /home/oracle/auto_clear_archivelog/ auto_purge_recyclebin.sh

30 2 * * * /home/oracle/rman_backup/scripts/backup.sh

50 7 * * * /home/oracle/rman_backup/scripts/backup_archivelog.sh



1、数据库全库导出脚本

[oracle@rac1 dumpfile]$ cat datapump_exp.sh

#!/bin/sh
export MYDIR=/home/oracle/dumpfile
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=prod1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export DAY_FORMAT=`date +'%Y%m%d%H%M'`
(
cd $MYDIR
echo "###################################################################################"
echo "`date` removing old files..." 2>&1;
find . -mtime +5 -name "prod_*.dmp" -exec rm -rf {} \;
find . -mtime +5 -name "prod_*.log" -exec rm -rf {} \; 
echo "`date` removed" 2>&1
echo "`date` exporting fully ..." 2>&1
expdp \'sys/oracle@prod1 as sysdba\' DIRECTORY=MYDIR DUMPFILE=prod_${DAY_FORMAT}_%U.dmp LOGFILE=budget_${DAY_FORMAT}.log FULL=Y PARALLEL=8 COMPRESSION=ALL CLUSTER=N JOB_NAME=prod_exp_${DAY_FORMAT} 1>/dev/null 2>&1 
echo "`date` export done" 2>&1
)>>$MYDIR/expdp.log


注意前提:

新建逻辑目录,并在操作系统层面oracle用户创建对应的文件夹

[oracle@rac1:/home/oracle]$sqlplus / as sysdba
SQL> create directory MYDIR AS '/home/oracle/dumpfile';
针对sys/oracle@prod1 as sysdba中的prod1
tnsping测试ok
我这里是rac环境,在tnsnames.ora配置了prod1



2、数据库备份脚本

[oracle@rac1:/home/oracle/rman_backup/scripts]$cat backup_sh

#!/bin/bash
RMAN_BACKUP_DIR=/home/oracle/rman_backup
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=prod1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin                                             
export MAXPIECESIZE=32G
export INCR_LEVEL=$((0))
export day=`date +%w`
export DAY_DATE=`date +'%Y%m%d'`
export DAY_FORMAT=`date +'%Y%m%d%H%M%S'`
export TAG_NAME=TAG_Incr${INCR_LEVEL}_${DAY_FORMAT}
echo "-----doing!!-----" >> $RMAN_BACKUP_DIR/rman_backup_log.log
rman log=$RMAN_BACKUP_DIR/rman_backup_log.log <> $RMAN_BACKUP_DIR/rman_backup_log.log
echo "-----done!!-----" >> $RMAN_BACKUP_DIR/rman_backup_log.log
cat $RMAN_BACKUP_DIR/rman_backup_log.log >> $RMAN_BACKUP_DIR/rman_backup_history.log
cd $RMAN_BACKUP_DIR
find . -mtime +7 -name "prod1_*" -exec rm -rf {} \;


3、归档日志备份脚本

[oracle@rac1:/home/oracle/auto_clear_archivelog]$cat auto_clear_archivelog.sh

#!/bin/sh
LOG_DIR=/home/oracle/auto_clear_archivelog
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=prod1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
echo "-----doing!!-----" >> $LOG_DIR/rman_delete_archivelog.log
rman log=$LOG_DIR/rman_delete_archivelog.log target / <> $LOG_DIR/rman_delete_archivelog.log
echo "-----done!!-----" >> $LOG_DIR/rman_delete_archivelog.log
cat $LOG_DIR/rman_delete_archivelog.log >> $LOG_DIR/delete_history.log


4、归档清理脚本

[oracle@rac1:/home/oracle/auto_clear_archivelog]$cat auto_clear_archivelog.sh

#!/bin/sh
LOG_DIR=/home/oracle/auto_clear_archivelog
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=prod1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
echo "-----doing!!-----" >> $LOG_DIR/rman_delete_archivelog.log
rman log=$LOG_DIR/rman_delete_archivelog.log target / <> $LOG_DIR/rman_delete_archivelog.log
echo "-----done!!-----" >> $LOG_DIR/rman_delete_archivelog.log
cat $LOG_DIR/rman_delete_archivelog.log >> $LOG_DIR/delete_history.log


5、 参考脚本,可根据需要更改

cat  backup.sh_bak

#!/bin/bash
RMAN_BACKUP_DIR=/home/oracle/rman_backup
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=prod1
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin                                              
export MAXPIECESIZE=32G
export INCR_LEVEL=$((0))
export day=`date +%w`
if [ $day -eq 0 ] ; then
INCR_LEVEL=$((0))
fi
if [ $day -eq 1 ] ; then
INCR_LEVEL=$((2))
fi
if [ $day -eq 2 ] ; then
INCR_LEVEL=$((2))
fi
if [ $day -eq 3 ] ; then
INCR_LEVEL=$((1))
fi
if [ $day -eq 4 ] ; then
INCR_LEVEL=$((2))
fi
if [ $day -eq 5 ] ; then
INCR_LEVEL=$((2))
fi
if [ $day -eq 6 ] ; then
INCR_LEVEL=$((1))
fi
export DAY_DATE=`date +'%Y%m%d'`
export DAY_FORMAT=`date +'%Y%m%d%H%M%S'`
export TAG_NAME=TAG_Incr${INCR_LEVEL}_${DAY_FORMAT}
echo "-----doing!!-----" >> $RMAN_BACKUP_DIR/rman_backup_log.log
rman log=$RMAN_BACKUP_DIR/rman_backup_log.log <> $RMAN_BACKUP_DIR/rman_backup_log.log
echo "-----done!!-----" >> $RMAN_BACKUP_DIR/rman_backup_log.log
cat $RMAN_BACKUP_DIR/rman_backup_log.log >> $RMAN_BACKUP_DIR/rman_backup_history.log
cd $RMAN_BACKUP_DIR
find . -mtime +7 -name "prod1_*" -exec rm -rf {} \;


6、清空oracle表空间回收站

cat auto_purge_recyclebin.sh

#!/bin/bash
source ~/.bash_profile
sqlplus -S /nolog > result.log<


请使用浏览器的分享功能分享到微信等