设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Linux/Unix shell 脚本清除归档日志文件

2013-4-15 14:23| 发布者: 红黑魂| 查看: 2806| 评论: 0|原作者: robinson_0612|来自: CSDN博客

摘要: 对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库。因此,archive归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些归档日志。本文给 ...

  对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库。因此,archive

归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些

归档日志。本文给出了清除归档日志的脚本。

 

1、清除归档日志shell脚本  

  1. robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh  
  2. #!/bin/bash  
  3. # ------------------------------------------------------------+  
  4. #   FileName: remove_arch_dump.sh                             |  
  5. #   Desc:                                                     |   
  6. #        Remove old archived log and data pump file           |  
  7. #   Usage:                                                    |  
  8. #        ./remove_arch_dump.sh                                |  
  9. #                                                             |  
  10. #   Authror : Robinson                                        |  
  11. #   Blog    : http://blog.csdn.net/robinson_0612              |  
  12. # ------------------------------------------------------------+  
  13.   
  14. filename=/etc/oratab  
  15.   
  16. cat $filename | while read LINE  
  17. do  
  18.     case $LINE in  
  19.         \#*)                ;;        #comment-line in oratab  
  20.         *)  
  21.         ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`  
  22.         echo $ORACLE_SID  
  23.     
  24.         # ---------------------------------  
  25.         # define archived log directory       
  26.         # ---------------------------------  
  27.         dir=/u02/database/$ORACLE_SID/archive/  
  28.         echo $dir  
  29.   
  30.         filelist=`ls -t $dir`  
  31.         echo $filelist  
  32.           
  33.         # ----------------------------------------------------------  
  34.         # start to remove archived log and keep last 2 archived log  
  35.         # ----------------------------------------------------------  
  36.         count=0  
  37.         for filename in $filelist  
  38.         do  
  39.                 echo $filename  
  40.                 count=$(($count+1))  
  41.                 if [ $count -gt 2 ]; then  
  42.                         echo $count  
  43.                         rm -vrf $dir$filename  
  44.                 fi  
  45.         done  
  46.         ls -tr $dir  
  47.           
  48.         # --------------------------------  
  49.         # define data pump dump directory  
  50.         # --------------------------------  
  51.         dir=/u02/database/$ORACLE_SID/BNR/dump/  
  52.         echo $dir  
  53.   
  54.         filelist=`ls -t $dir`  
  55.         echo $filelist  
  56.           
  57.         # ---------------------------------------------------------  
  58.         # start to remove data pump file and keep last 5 dump file   
  59.         # ---------------------------------------------------------  
  60.         count=0  
  61.         for filename in $filelist  
  62.         do  
  63.                 echo $filename  
  64.                 count=$(($count+1))  
  65.                 if [ $count -gt 5 ]; then  
  66.                         echo $count  
  67.                         rm -vrf $dir$filename  
  68.                 fi  
  69.         done  
  70.         ls -tr $dir  
  71.   
  72.      ;;  
  73.     esac  
  74. done  
  75. 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。


酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部