在开发环境及UAT环境经常碰到需要清除归档日志的情形,对于这个问题方法有很多。可以直接使用rm方式清除归档日志,也可以使用find命令来查找符合条件的记录来清除归档日志,或者直接写个shell脚本来搞定。这样在DEV或者UAT还可以,但是在Prod环境还是建议使用RMAN提供的命令来搞定比较妥当。因为rm,find方式删除了实际的归档日志也释放了空间,但对应的存储在控制文件中的归档信息并没有彻底清除。依旧占用着一些空间未能及时清除而需要控制文件通过age out方式来释放空间。本文描述了使用RMAN方式来清除归档日志,同时也可以将其部署到shell脚本中使用。

有关阅读本文需要的相关参考
      Oracle 归档日志
      Oracle 控制文件(CONTROLFILE)
      Oracle 联机重做日志文件(ONLINE LOG FILE)
      delete archivelog all 无法彻底删除归档日志?
      Linux/Unix shell 脚本中调用SQL,RMAN脚本
      Linux/Unix shell 脚本清除归档日志文件

1、清除归档日志的方式
a、手动删除
使用rm 或者find方式来删除,通过该方式删除之后,在RMAN下可以通过 crosscheck archivelog all 校验归档是否失效,如下面的操作:
rm -rf arch_816906485_1_10.arc
find /u02/database/GOBO1/archive/ -ctime +0 -delete
RMAN> crosscheck archivelog all

b、使用RMAN方式清除
      RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息。
      可以基于不同的条件来清除归档日志,如基于SCN,基于SEQUENCE,基于TIME等方式。
      对于上述的三种方式又可以配合from, until, between .. and .. 等等子句来限定范围,方式灵活多变。
      下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的:
crosscheck archivelog all;                             --->校验日志的可用性
list expired archivelog all;                           --->列出所有失效的归档日志

delete expired archivelog all;                         --->删除过期的归档

delete archivelog until sequence 16;                   --->删除log sequence为16及16之前的所有归档日志
delete archivelog all completed before 'sysdate-7';    --->删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志
delete archivelog all completed before 'sysdate - 1';  --->同上,1天以前的
delete archivelog from time 'sysdate-1';               --->注意这个命令,删除系统时间1天以内到现在的归档日志
delete noprompt archivelog all completed before 'sysdate';   --->该命令清除所有的归档日志
delete noprompt archivelog all;                              --->同上一命令
    
2、演练使用RMAN清除归档日志  
[python] view plaincopyprint?
robin@SZDB:~> export ORACLE_SID=GOBO1  
robin@SZDB:~> rman target /  
Recovery Manager: Release 10.2.0.3.0 - Production on Thu Jul 11 17:07:00 2013  
Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
connected to target database: GOBO1 (DBID=733951103)  
RMAN> host;  
robin@SZDB:~> cd /u02/database/GOBO1/archive/  
robin@SZDB:/u02/database/GOBO1/archive> ls        
arch_816906485_1_10.arc      arch_816906485_1_12.arc    
arch_816906485_1_11.arc      arch_816906485_1_13.arc    
        ............  
      
robin@SZDB:/u02/database/GOBO1/archive> rm -rf arch_816906485_1_10.arc arch_816906485_1_11.arc arch_816906485_1_12.arc  
robin@SZDB:/u02/database/GOBO1/archive> exit;  
exit                                           
host command complete                          
                                                   
RMAN> crosscheck archivelog all;                   
released channel: ORA_DISK_1                                                                         
allocated channel: ORA_DISK_1                                                                        
channel ORA_DISK_1: sid=1075 devtype=DISK                                                            
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_9.arc recid=2085 stamp=817211151   
validation failed for archived log                                                                   
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_10.arc recid=2086 stamp=817250793  
          ..............  
validation succeeded for archived log                                                                
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_90.arc recid=2166 stamp=820458049  
    Crosschecked 83 objects                      
      
RMAN> list expired archivelog all;  
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
------- ---- ------- - ----------------- ----  
2086    1    10      X 20130604 11:05:51 /u02/database/GOBO1/archive/arch_816906485_1_10.arc  
2087    1    11      X 20130604 22:06:17 /u02/database/GOBO1/archive/arch_816906485_1_11.arc  
2088    1    12      X 20130605 19:30:53 /u02/database/GOBO1/archive/arch_816906485_1_12.arc  
      
RMAN> delete archivelog until sequence 16;  
released channel: ORA_DISK_1  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: sid=1075 devtype=DISK  
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
------- ---- ------- - ----------------- ----  
2084    1    8       A 20130604 09:53:17 /u02/database/GOBO1/archive/arch_816906485_1_8.arc  
                            .................  
2092    1    16      A 20130607 22:03:23 /u02/database/GOBO1/archive/arch_816906485_1_16.arc  
      
Do you really want to delete the above objects (enter YES or NO)? yes  
              ...............  
deleted archive log  
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_16.arc recid=2092 stamp=817516861  
Deleted 9 objects  
      
RMAN> delete archivelog all completed before 'sysdate-7';  
released channel: ORA_DISK_1  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: sid=1075 devtype=DISK  
      
    List of Archived Log Copies  
    Key     Thrd Seq     S Low Time          Name  
    ------- ---- ------- - ----------------- ----  
    2093    1    17      A 20130608 00:01:00 /u02/database/GOBO1/archive/arch_816906485_1_17.arc  
    2094    1    18      A 20130608 18:00:17 /u02/database/GOBO1/archive/arch_816906485_1_18.arc  
                ...........  
    deleted archive log  
    archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_72.arc recid=2148 stamp=819847035  
    Deleted 56 objects              
      
RMAN> list copy of database archivelog all;  
      
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
    ------- ---- ------- - ----------------- ----  
2149    1    73      A 20130703 23:17:13 /u02/database/GOBO1/archive/arch_816906485_1_73.arc  
2150    1    74      A 20130704 22:00:19 /u02/database/GOBO1/archive/arch_816906485_1_74.arc  
2151    1    75      A 20130704 22:04:40 /u02/database/GOBO1/archive/arch_816906485_1_75.arc  
                           ...............  
2164    1    88      A 20130709 23:19:34 /u02/database/GOBO1/archive/arch_816906485_1_88.arc  
2165    1    89      A 20130710 13:00:34 /u02/database/GOBO1/archive/arch_816906485_1_89.arc  
2166    1    90      A 20130710 22:02:44 /u02/database/GOBO1/archive/arch_816906485_1_90.arc  
RMAN> delete archivelog from time 'sysdate-1';  
      
released channel: ORA_DISK_1  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: sid=1075 devtype=DISK  
      
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
------- ---- ------- - ----------------- ----  
2165    1    89      A 20130710 13:00:34 /u02/database/GOBO1/archive/arch_816906485_1_89.arc  
2166    1    90      A 20130710 22:02:44 /u02/database/GOBO1/archive/arch_816906485_1_90.arc  
      
Do you really want to delete the above objects (enter YES or NO)? yes  
deleted archive log  
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_89.arc recid=2165 stamp=820447373  
deleted archive log  
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_90.arc recid=2166 stamp=820458049  
Deleted 2 objects  
      
RMAN> delete archivelog all completed before 'sysdate - 1';  
released channel: ORA_DISK_1  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: sid=1075 devtype=DISK  
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
 ------- ---- ------- - ----------------- ----  
2149    1    73      A 20130703 23:17:13 /u02/database/GOBO1/archive/arch_816906485_1_73.arc  
                  .......................  
2164    1    88      A 20130709 23:19:34 /u02/database/GOBO1/archive/arch_816906485_1_88.arc  
      
Do you really want to delete the above objects (enter YES or NO)? yes  
         ................  
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_88.arc recid=2164 stamp=820414835  
    Deleted 16 objects  
      
RMAN> sql " alter system archive log current";  
sql statement:  alter system archive log current  
RMAN> list copy of archivelog all;  
      
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
------- ---- ------- - ----------------- ----  
2167    1    91      A 20130711 01:00:48 /u02/database/GOBO1/archive/arch_816906485_1_91.arc  
      
RMAN> delete noprompt archivelog all completed before 'sysdate';  
      
released channel: ORA_DISK_1  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: sid=1075 devtype=DISK  
      
List of Archived Log Copies  
Key     Thrd Seq     S Low Time          Name  
------- ---- ------- - ----------------- ----  
2167    1    91      A 20130711 01:00:48 /u02/database/GOBO1/archive/arch_816906485_1_91.arc  
deleted archive log  
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_91.arc recid=2167 stamp=820517964  
Deleted 1 objects

3、清除归档日志简单的shell脚本
[python] view plaincopyprint?

#对于RAC环境或者ASM需要清除archive,使用shell脚本调用RMAN是比较妥当的方式  
    #其次,如果你的archive位于闪回区,制定合理的保留策略,也可以让Oracle自动老化无用的归档日志  
    robin@SZDB:~/dba_scripts/custom/bin> more clean_arch.sh   
    # +-------------------------------------------------------+  
    # +    Clean archived log as specified time               |  
    # +    Author : Robinson                                  |  
    # +    Blog   : http://blog.csdn.net/robinson_0612        |  
    # +    Usage  :                                           |   
    # +         clean_arch.sh $ORACLE_SID                     |  
    # +-------------------------------------------------------+  
    #  
    #!/bin/bash   
    # --------------------  
    # Define variable  
    # --------------------  
      
    if [ -f ~/.bash_profile ]; then  
    . ~/.bash_profile  
    fi  
      
    if [ -z "${1}" ];then  
        echo "Usage: "  
        echo "      `basename $0` ORACLE_SID"  
        exit 1  
    fi  
      
    ORACLE_SID=$1;                 export ORACLE_SID   
    $ORACLE_HOME/bin/rman log=/users/robin/log/rman.log <<EOF     
    connect target /  
    run{  
    crosscheck archivelog all;  
    delete noprompt expired archivelog all;  
    delete noprompt archivelog all completed before 'sysdate - 1';  
    }  
    exit;  
    EOF  
    exit

4、小结
a、归档日志清除的方法最好是在RMAN方式下完成,这样子是最彻底的清除方式
b、对于生产环境应考虑在RMAN备份的时候清除归档日志,如backup archivelog all时使用delete input与delete all input清除归档日志
c、如果备份期间不清除归档日志则arch会很大,造成归档磁盘满而导致归档失败。建议还是删除或考虑存放到闪回区
d、如果清除大部分又想保留最近的,则使用delete noprompt archivelog all completed before 'sysdate - n'方式
e、详细的清除归档日志语法: http://docs.oracle.com/cd/B19306_01/backup.102/b14194/rcmsynta008.htm#RCMRF106

转载于:https://blog.51cto.com/17610376/1533033

Oracle RMAN 清除归档日志相关推荐

  1. oracle 还原归档,ORACLE RMAN 还原归档日志

    一.备份所有归档日志文件 RMAN> backup archivelog all delete input; 二: restore archivelog 的各种选项 1.恢复全部归档日志文件 R ...

  2. RMAN 配置归档日志删除策略

    Oracle 11g中对于归档日志的删除,除了遵循RMAN保留策略外,也可以通过RMAN来配置归档日志的删除策略,也就是归档日志何时可以被删除.归档日志删除策略适用于所有归档位置(使用快速闪回区FRA ...

  3. Oracle数据库开启归档日志和补充日志

    文章目录 Oracle数据库开启归档日志和补充日志 重做日志的概念 归档日志 ARCHIVELOG模式 启动归档日志 归档日志的清理 补充日志 Oracle数据库开启归档日志和补充日志 项目中要对Or ...

  4. oracle查询当前归档scn_【学习笔记】Oracle数据库 查看归档日志存放的位置

    [学习笔记]Oracle数据库 查看归档日志存放的位置 时间:2016-10-21 19:19   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 分享一篇关于查看Oracle ...

  5. ORACLE 删除归档日志连接rman查看归档日志占有率

    我们都知道在controlfile中记录着每一个archivelog文件的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的controlfile中仍然记录着这些archivelog文件 ...

  6. 一 如何检查oracle的归档日志及空间占用率,清除归档日志、Oracle归档日志使用情况查询、查看oracle数据库一周产生的归档日志

    一 如何解决"归档日志已满问题" 问题描述:所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文 ...

  7. 未解决ora-01034、ora-03113、oracle使用RMAN删除归档日志

    接此,https://blog.csdn.net/bcbobo21cn/article/details/116762059 oracle不能用:继续解决问题: 前次操作没有 set ORACLE_SI ...

  8. oracle删除无效归档日志,求助:rman无法按照策略删除过期的归档日志

    无法按照策略删除过期1天后的归档日志,请各位帮忙看看,如何解决? RMAN> delete obsolete; 使用目标数据库控制文件替代恢复目录 RMAN 保留策略将应用于该命令 将 RMAN ...

  9. rman打开oracle归档日志,Oracle RAC中使用RMAN管理归档日志

    RMAN归档配置的两种方案1.在Oracle asm和集群文件系统时的归档方案 对于Oracle RAC来说首选是使用Oracle asm作为reocvery区域.可选择的你也可以使用集群文件系统的归 ...

最新文章

  1. 计算机教室开放使用计划,计算机教室实施计划方案.pdf
  2. skycons.js 基于canvas的天气动态js插件
  3. Image Captioning概述
  4. WCF 入门(23,24)
  5. html5 制作神器,HTML5/Canvas 简单的泡沫生成器
  6. @cacheable 设置过期时间_缓存面试三连击——聊聊Redis过期策略?内存淘汰机制?再手写一个LRU 吧!...
  7. 创建设计模式 - Builder设计模式
  8. linux之解决libipopt.so.1: Cannot open shared object file
  9. 常用的NoSQL数据库
  10. 最近大火的「元宇宙」究竟是什么
  11. AntColony 磁力搜索BT引擎的核心
  12. 右键文件一直转圈卡死
  13. 著名的图像检索系统介绍[转]
  14. Lamp 服务器环境安装
  15. 计算机专业毕业生找工作可考虑的公司官方招聘网站(持续更新ing...)
  16. android 蘑菇街组件化,蘑菇街 App 的组件化之路
  17. css如何透过上层div点击下层的元素解决方法
  18. 好用的聚合支付第四方源码+新UI/且修BUG
  19. 超级电容的PWM电流镜方案的一些注意点
  20. 如何隐藏任务栏图标小结(zz)

热门文章

  1. 2011下半年案例分析题的解答思路_信息系统项目管理师考试
  2. cacti由cmd.php更换成spine后无法绘图
  3. 吴恩达机器学习笔记-应用机器学习的建议
  4. 解决MySQL自动断开连接的问题
  5. 入职培训笔记记录--day2续(1、运算符 2、数据的输入与输出 3、控制语句)
  6. md5加密用户登陆遇到的问题及解决办法
  7. 使用centos6.6部署Cobbler--自动安装centos系统
  8. 使用node.js进行API自动化回归测试
  9. 改善WPF应用程序性能的10大方法(转)
  10. 区块链入门之基础知识