看了篇文章:
数据库运行在ARCHIVED模式下,所以oracle会把archived log files写到initial parameter文件中log_archive_dest_1参数所指定的文件夹下,但是随着时间的推移,archived log files会越来越多,迟早会把磁盘塞满,请问oracle是否有自动监控磁盘空间所利用比例的service 或者oracle会有哪个view可以查看到这个目的文件夹磁盘空间的使用情况,以便在被写满之前做出提示。我现在紧急的问题是:arc文件是放在了 oracle目录下 ,导致该磁盘昨天是97%,今天是99%了,请问我可以先把这些arc文件直接移走吗?现在是生产数据库,不敢随便乱动啊!
请教解决方法,紧急。

解决方案 »

  1.   

    使用crontab来删除
    或者使用rman来定期删除
      

  2.   

    两种方法:
    1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;
    2、可以手工来处理,步骤如下
        1)将/oracle下的相关ARCHIVELOG日志文件移到别的文件系统下(保留一段时间的ARCHIVELOG日志即可,其他的可移走,用系统命令mv移走)。然后打包、压缩,备份到介质上,此时可将这些移出的文件删除。注意:别在原来的/oracle打包了,否则空间占满了就有些麻烦了。
        2)以oracle用户登录,执行rman target /。如有多个实例此时执行rman target 用户名/密码@实例名,进入rman
        3)在rman中执行
        RMAN>list archivelog all;            /*列出所有的归档日志文件
        RMAN>crosscheck archivelog all;      /*与物理归档日志文件保持同步,之前移走了一部分文件,因此执行此命令后会在/oracle目录下找不到的归档日志标记为expired
        RMAN>list expired archivelog all;    /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired
        RMAN>delete expired archivelog all;  /*在oracle中删除所有过期的expired文件
        RMAN>list archivelog all;            /*再列出所有的归档日志文件,就可发现移走的日志文件被删掉了
        RMAN>exit                            /*退出
     
      

  3.   

    然后,用#df -v或#dr -k再查一个/oracle文件系统的使用率,应该空间就释放掉了。
      

  4.   

    eg:connect target  /
    list backup;
    report obsolete;
    delete obsolete;
    run {
    backup archivelog all delete input;
    backup database format '/backup/full%u_%s_%p' include current controlfile;}
      

  5.   

    another example:(I'm so sorry, I cannot input any chinese)in the testing system, we can drop archived logs and don't need to keep it.rman target sys/sys@dbname 
    delete archivelog until time 'sysdate-1'; //it removes the archivelog from you disk until yesterdayotherwise, you have to move these archived logs to other disk or back up the recovery area to the tape device. If you move these archived logs manually, then you execute the following commands:rman target sys/sys@dbname
    crosscheck archivelog all ;It will update the information in the control files of your database.
      

  6.   

    你的archivelog一直没有清理过吧,其实每份归档日至留几个备份甬余就可以,写几个rman脚本,其中一个每次备份使用delete input,删除需要天数以前的archive log。
      

  7.   

    七楼的方法正确。归档日志是用来恢复数据库的,最好不要随便删除。先用 RMAN 做数据库备份,有了备份,之前的归档日志就可以删除了。可以设置 RMAN 在完成备份后自动删除过期的归档日志,也可以手工删除。
      

  8.   

    谢谢大家,用rman搞定。非常感谢7楼的朋友。
      

  9.   

    能帮朋友们解决问题就是我最大的荣幸了,以后还要烦劳朋友们帮我解决些难题,呵呵。祝朋友们新年快乐,HAPPY 牛 Year!
      

  10.   

    往数据库里导入数据时日志产生得特别多。我测试过,20G的log_archive_dest空间不到1个小时就满了。要是手工rm的话还是比较麻烦的,至少得盯着数据库运行。能自动删除archivelog吗?