对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库。因此,archive归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些归档日志。本文给出了清除归档日志的脚本。
1、清除归档日志shell脚本
- robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh
- #!/bin/bash
- # ------------------------------------------------------------+
- # FileName: remove_arch_dump.sh |
- # Desc: |
- # Remove old archived log and data pump file |
- # Usage: |
- # ./remove_arch_dump.sh |
- # |
- # Authror : Robinson |
- # Blog : http://blog.csdn.net/robinson_0612 |
- # ------------------------------------------------------------+
- filename=/etc/oratab
- cat $filename | while read LINE
- do
- case $LINE in
- \#*) ;; #comment-line in oratab
- *)
- ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
- echo $ORACLE_SID
- # ---------------------------------
- # define archived log directory
- # ---------------------------------
- dir=/u02/database/$ORACLE_SID/archive/
- echo $dir
- filelist=`ls -t $dir`
- echo $filelist
- # ----------------------------------------------------------
- # start to remove archived log and keep last 2 archived log
- # ----------------------------------------------------------
- count=0
- for filename in $filelist
- do
- echo $filename
- count=$(($count+1))
- if [ $count -gt 2 ]; then
- echo $count
- rm -vrf $dir$filename
- fi
- done
- ls -tr $dir
- # --------------------------------
- # define data pump dump directory
- # --------------------------------
- dir=/u02/database/$ORACLE_SID/BNR/dump/
- echo $dir
- filelist=`ls -t $dir`
- echo $filelist
- # ---------------------------------------------------------
- # start to remove data pump file and keep last 5 dump file
- # ---------------------------------------------------------
- count=0
- for filename in $filelist
- do
- echo $filename
- count=$(($count+1))
- if [ $count -gt 5 ]; then
- echo $count
- rm -vrf $dir$filename
- fi
- done
- ls -tr $dir
- ;;
- esac
- done
- exit