[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<