Welcome 微信登录

首页 / 数据库 / MySQL / Linux/Unix shell 脚本清除归档日志文件

对于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/oratabcat $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
exit2、脚本说明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。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12设置Oralce自动内存管理Ubuntu Server 12.10 MySQL的主从复制笔记相关资讯      Linux Shell脚本 
  • Linux Shell脚本入门学习系列  (04月12日)
  • 查看Linux Server网络流量的Shell  (10/15/2015 20:38:19)
  • Linux Shell脚本编程入门  (08/09/2015 13:30:18)
  • Linux下利用shell脚本随机生成密码  (10/21/2015 07:01:55)
  • Linux Shell脚本 多线程  (10/10/2015 13:11:29)
  • Linux shell脚本实现冒泡排序  (08/09/2015 13:29:22)
本文评论 查看全部评论 (0)
表情: 姓名: 字数