精华内容
下载资源
问答
  • oracle rman占用磁盘空间,利用Windows计划任务执行该脚本释放空间,脚本内相关路径需根据实际情况进行更改
  • 请参考:Oracle 开启归档模式 Linux 下删除归档脚本: mkdir -p /home/oracle/scripts/log vi /home/oracle/scripts/del_arch.sh #!/bin/bash source ~/.bash_profile DAY_TAG=`date +"%Y-%m-%d"` rman target / ...

    Oracle 开启归档模式后,会一直不停的产生归档日志,如果不定时删除,迟早会撑爆磁盘空间,所以就需要布置定时删除归档日志的脚本!

    至于为什么要开启归档模式,还有怎么开启归档模式!请参考:Oracle 开启归档模式

    Linux 下删除归档脚本:

    mkdir -p /home/oracle/scripts/log
    vi /home/oracle/scripts/del_arch.sh
    #!/bin/bash
    source ~/.bash_profile
    DAY_TAG=`date +"%Y-%m-%d"`
    rman target / nocatalog msglog /home/oracle/scripts/log/del_arch_$DAY_TAG.log<<EOF
    crosscheck archivelog all;
    delete noprompt archivelog until time '(sysdate-7)';
    delete noprompt force archivelog until time 'SYSDATE-10';
    
    EOF
    
    ## 写入crontab
    crontab -e
    # 00 07 * * * /home/oracle/scripts/del_arch.sh
    

    Windows 下删除归档脚本:

    编辑 del_arch.bat 脚本:

    @echo off
    set ORACLE_SID=orcl
    set "filename=del_arch_task_log_%date:~0,4%%date:~5,2%%date:~8,2%.log"
    (
    echo.
    echo ====================cleaning  %date% %time%  =========================
    echo.
    rman target / cmdfile=G:\scripts\del_arch.sql
    echo.
    echo =====================  finish %date% %time%  =========================
    echo.
    )>>G:\scripts\%filename% 2>&1<nul
    

    编辑 del_arch.sql 脚本:

    run{
     crosscheck archivelog all;
     delete noprompt archivelog until time 'sysdate-1/2';
     delete noprompt force archivelog until time 'SYSDATE-1';
    }
    

    📢 注意:脚本中的目录位置,请根据实际情况进行修改!


    本次分享到此结束啦~

    如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

    ❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️

    展开全文
  • ORACLE Rman删除归档日志

    千次阅读 2017-08-31 09:46:39
    删除过期的归档日志: RMAN> list archivelog all; 手工删除归档日志文件 RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; 设置归档日志过期时间: RMAN>show all; CONFIGURE ...
    删除过期的归档日志:
    


    RMAN> list archivelog all;


    手工删除归档日志文件
    RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';




    设置归档日志过期时间:
    RMAN>show all;
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;

    CONFIGURE RETENTION POLICY TO REDUNDANCY 1;


    crosscheck archivelog all; 
    delete expired archivelog all; 


    一个备份前检测归档日志脚本:
    connect target /;
    crosscheck archivelog all;
    run {
        allocate channel ch1 device type disk ;
        report schema;
        crosscheck backup of database;
        crosscheck backup of archivelog all;
        crosscheck backup of controlfile;
        crosscheck backup of spfile;
        crosscheck archivelog all;
        delete noprompt force expired backup;
        delete noprompt force expired archivelog until time 'sysdate-0.5';
        delete noprompt force expired copy;
        delete noprompt force obsolete;
        report need backup;
        report unrecoverable;
        release channel ch1;
    }





    展开全文
  • 最近,遇到一个问题,ORACLE 11G RAC FOR LINUX 通过NBU调取rman备份脚本,问题是:备份脚本里明明写的 有备份时删除归档,但是,归档并不自动删除,导致归档空间频繁暴掉数据库夯住。 RMAN备份删除归档的命令...

          最近,遇到一个问题,ORACLE 11G RAC FOR LINUX 通过NBU调取rman备份脚本,问题是:备份脚本里明明写的

    有备份时删除归档,但是,归档并不自动删除,导致归档空间频繁暴掉数据库夯住。

          RMAN备份删除归档的命令如下:

           据管理数据库备份的同事说,NBU能正常备份,也不报错;这样像是rman.sh中删除归档的语句不执行。为了强制备份

    归档后删除归档,将上述语句修改为:backup filesperset 20 format 'al_%s_%p_%t' archivelog delete all input; 然后观

    察NBU调取该脚本备份删除归档的效果,发现能够自动清除:

     

     

     

    展开全文
  • Oracle RMAN 清除归档日志
                   

          在开发环境及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 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清除归档日志  

    robin@SZDB:~> export ORACLE_SID=GOBO1robin@SZDB:~> rman target /Recovery Manager: Release 10.2.0.3.0 - Production on Thu Jul 11 17:07:00 2013Copyright (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.arcrobin@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=820458049Crosschecked 83 objects                    RMAN> list expired archivelog all;List of Archived Log CopiesKey     Thrd Seq     S Low Time          Name------- ---- ------- - ----------------- ----2086    1    10      X 20130604 11:05:51 /u02/database/GOBO1/archive/arch_816906485_1_10.arc2087    1    11      X 20130604 22:06:17 /u02/database/GOBO1/archive/arch_816906485_1_11.arc2088    1    12      X 20130605 19:30:53 /u02/database/GOBO1/archive/arch_816906485_1_12.arcRMAN> delete archivelog until sequence 16;released channel: ORA_DISK_1allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=1075 devtype=DISKList of Archived Log CopiesKey     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.arcDo you really want to delete the above objects (enter YES or NO)? yes          ...............deleted archive logarchive log filename=/u02/database/GOBO1/archive/arch_816906485_1_16.arc recid=2092 stamp=817516861Deleted 9 objectsRMAN> delete archivelog all completed before 'sysdate-7';released channel: ORA_DISK_1allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=1075 devtype=DISKList of Archived Log CopiesKey     Thrd Seq     S Low Time          Name------- ---- ------- - ----------------- ----2093    1    17      A 20130608 00:01:00 /u02/database/GOBO1/archive/arch_816906485_1_17.arc2094    1    18      A 20130608 18:00:17 /u02/database/GOBO1/archive/arch_816906485_1_18.arc            ...........deleted archive logarchive log filename=/u02/database/GOBO1/archive/arch_816906485_1_72.arc recid=2148 stamp=819847035Deleted 56 objects            RMAN> list copy of database archivelog all;List of Archived Log CopiesKey     Thrd Seq     S Low Time          Name------- ---- ------- - ----------------- ----2149    1    73      A 20130703 23:17:13 /u02/database/GOBO1/archive/arch_816906485_1_73.arc2150    1    74      A 20130704 22:00:19 /u02/database/GOBO1/archive/arch_816906485_1_74.arc2151    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.arc2165    1    89      A 20130710 13:00:34 /u02/database/GOBO1/archive/arch_816906485_1_89.arc2166    1    90      A 20130710 22:02:44 /u02/database/GOBO1/archive/arch_816906485_1_90.arcRMAN> delete archivelog from time 'sysdate-1';released channel: ORA_DISK_1allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=1075 devtype=DISKList of Archived Log CopiesKey     Thrd Seq     S Low Time          Name------- ---- ------- - ----------------- ----2165    1    89      A 20130710 13:00:34 /u02/database/GOBO1/archive/arch_816906485_1_89.arc2166    1    90      A 20130710 22:02:44 /u02/database/GOBO1/archive/arch_816906485_1_90.arcDo you really want to delete the above objects (enter YES or NO)? yesdeleted archive logarchive log filename=/u02/database/GOBO1/archive/arch_816906485_1_89.arc recid=2165 stamp=820447373deleted archive logarchive log filename=/u02/database/GOBO1/archive/arch_816906485_1_90.arc recid=2166 stamp=820458049Deleted 2 objectsRMAN> delete archivelog all completed before 'sysdate - 1';released channel: ORA_DISK_1allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=1075 devtype=DISKList of Archived Log CopiesKey     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.arcDo 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=820414835Deleted 16 objectsRMAN> sql " alter system archive log current";sql statement:  alter system archive log currentRMAN> list copy of archivelog all;List of Archived Log CopiesKey     Thrd Seq     S Low Time          Name------- ---- ------- - ----------------- ----2167    1    91      A 20130711 01:00:48 /u02/database/GOBO1/archive/arch_816906485_1_91.arcRMAN> delete noprompt archivelog all completed before 'sysdate';released channel: ORA_DISK_1allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=1075 devtype=DISKList of Archived Log CopiesKey     Thrd Seq     S Low Time          Name------- ---- ------- - ----------------- ----2167    1    91      A 20130711 01:00:48 /u02/database/GOBO1/archive/arch_816906485_1_91.arcdeleted archive logarchive log filename=/u02/database/GOBO1/archive/arch_816906485_1_91.arc recid=2167 stamp=820517964Deleted 1 objects

    3、清除归档日志简单的shell脚本

    #对于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_profilefiif [ -z "${1}" ];then    echo "Usage: "    echo "      `basename $0` ORACLE_SID"    exit 1fiORACLE_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;EOFexit 

    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

    Oracle&nbsp;牛鹏社

     

    相关参考
        Oracle 冷备份

        Oracle 热备份

        Oracle 备份恢复概念

        Oracle 实例恢复

        Oracle 基于用户管理恢复的处理

        SYSTEM 表空间管理及备份恢复

        SYSAUX表空间管理及恢复

        Oracle 基于备份控制文件的恢复(unsing backup controlfile)

        RMAN 概述及其体系结构

        RMAN 配置、监控与管理

        RMAN 备份详解

        RMAN 还原与恢复

        RMAN catalog 的创建和使用

        基于catalog 创建RMAN存储脚本

        基于catalog 的RMAN 备份与恢复

        RMAN 备份路径困惑

        自定义 RMAN 显示的日期时间格式

        只读表空间的备份与恢复

        Oracle 基于用户管理的不完全恢复

        理解 using backup controlfile

        使用RMAN实现异机备份恢复(WIN平台)

        使用RMAN迁移文件系统数据库到ASM

        基于Linux下 Oracle 备份策略(RMAN)

        Linux 下RMAN备份shell脚本

        使用RMAN迁移数据库到异机

        RMAN 提示符下执行SQL语句

        Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • $ vi bk_db_arch.sh ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 ORACLE_SID=orcl NLS_LANG=AMERICAN_AMERICA.ZHS16GBK PATH=$PATH:/ORACLE_HOME/bin ORA_NLS33=$...
  • 本文介绍win平台oracle rman备份和删除dg备库归档日志脚本
  • #! /bin/bash exec >> delarch`date +%y%m%d%H`.log ...$ORACLE_HOME/bin/rman target / crosscheck archivelog all; delete noprompt expired archivelog all; delete noprompt archivelog until time 'sysdate-
  • Oracle RMAN 清除归档日志  在开发环境及UAT环境经常碰到需要清除归档日志的情形,对于这个问题方法有很多。可以直接使用rm方式清除归档日志,也可以使用find命令来查找符合条件的记录来清除归档日志,或者直接写...
  • oracle rman 定时备份脚本

    千次阅读 2015-09-15 16:26:26
    近期需要出个oracle定时备份的方案,可以恢复到最新状态,参考http://blog.sina.com.cn/s/blog_7756ebc30100tnqy.html,我又... param1(备份文件路径) param2(归档日志路径),就可以设置定时备份了,脚本会设置定时器,
  • ORACLE RMAN备份的脚本配置一: 备份;1:连接目标数据库:rman>connect target sys/sysray@db或者rman target=sys/sysray@db2:查询目标数据库的配置情况;RMAN> SHOW ALL;修改成如下配置:CONFIGURE RETENTION POLICY TO ...
  • #!...#oracle_rman.sh/script run by oracle week_daily=`date +%a` date=`date +%Y%m%d` bak_dir=/data/rman/$date log=${bak_dir}/$date.log case ${week_daily} in "Sun") level=0;; "Mon") ...
  • 通过Rman定期删除归档脚本

    千次阅读 2011-11-27 18:51:49
    一般生产系统都会有良好的备份机制,所以归档日志是可以删除的,下面就是通过脚本的方式将它们安全删除掉的方法: vi delet_archive.sh 1 2 3 4 5 6 7 8 9 10 . /home/oracle/.bash_p

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,524
精华内容 3,009
关键字:

oraclerman删除归档脚本