对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库。因此,archive 归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些 归档日志。本文给出了清除归档日志的脚本。 1、清除归档日志shell脚本 - robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh
-
-
-
-
-
-
-
-
-
-
-
-
- filename=/etc/oratab
-
- cat $filename | while read LINE
- do
- case $LINE in
- \
- *)
- ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
- echo $ORACLE_SID
-
-
-
-
- dir=/u02/database/$ORACLE_SID/archive/
- echo $dir
-
- filelist=`ls -t $dir`
- echo $filelist
-
-
-
-
- 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
-
-
-
-
- dir=/u02/database/$ORACLE_SID/BNR/dump/
- echo $dir
-
- filelist=`ls -t $dir`
- echo $filelist
-
-
-
-
- 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
2、脚本说明 a、该脚本通过一个外部循环来读取oratab中定义的数据库的SID来寻找对应数据库的归档日志
路径以及datapump dump路径。 b、使用了一个for循环来清除归档日志,且保留最后的2个归档日志文件。 c、接下来的另一个for循环则用来清除当前SID下对应的dump(Oracle datapump)目录下导出的 dump文件。 d、同清除归档日志一样,设定了保留dump目录最近的5个文件。保留多少个最近的文件(dump的5, 或者归档日志2)可以修改。 e、如果不需要清除dump路径,可以将dump部分注释掉。 f、根据需要将其部署到crontab。 |