精华内容
下载资源
问答
  • Oracle归档日志删除

    2014-01-21 08:24:49
    Ora我们都都知道在controlfile中记录着每一个archivelog的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的 controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化...cle归档日志删除
  • oracle归档日志删除

    2013-03-28 22:20:31
    怎样查看oracle的归档日志大小及其删除归档日志的方法
  • 归档日志删除策略适用于所有归档位置(使用快速闪回区FRA/不使用FRA)。本文主要描述归档日志删除策略并给出了具体的演示。 1、关于归档日志删除策略 也就是哪些归档日志符合删除策略能够被删除,如前所述,归档位置...

    Oracle 11g中对于归档日志的删除,除了遵循RMAN保留策略外,也可以通过RMAN来配置归档日志的删除策略,也就是归档日志何时可以被删除。归档日志删除策略适用于所有归档位置(使用快速闪回区FRA/不使用FRA)。本文主要描述归档日志删除策略并给出了具体的演示。

     
    1、关于归档日志删除策略
          也就是哪些归档日志符合删除策略能够被删除,如前所述,归档位置适用于所有归档位置(使用快速闪回区FRA/不使用FRA)
          当启用该策略后,如归档日志存在于FRA中,则Oracle会尽可能根据保留他们,一旦FRA空间告急,则Oracle会根据归档日志删除策略自动删除
          对于不在FRA中的归档日志,需要手动使用delete obsolete或delete archivelog方式来删除日志
          无论归档日志存在于FRA内或外,都可以通过BACKUP ... DELETE INPUT or DELETE ARCHIVELOG方式来删除
          该策略不适用于使用LogMiner方式从主数据库传送到逻辑standby生成的外部归档日志文件,因为这些日志文件不能够在逻辑standy上备份或恢复
      

    2、配置归档日志删除策略
         使用下面的方式来配置归档日志删除策略
             configure archivelog deletion policy to backed up 2 times to sbt;
             configure archivelog deletion policy to backed up 1 times to device type disk;
             configure archivelog deletion policy to applied on standby;
             configure archivelog deletion policy to shipped on standby;
             configure archivelog deletion policy clear;
        对于Oracle 10g没有该特性,但有一个类似的用于配置归档日志被备份次数,如下;
             configure archivelog backup copies for device type disk to ${archiveretention};
      
      
    3、禁用归档日志删除策略
          缺省情况下,该策略被设置为none。也就是说根据RMAN备份保留策略,对于FRA中的归档日志,被备份过一次(到磁盘或磁带)即符合条件被删除
         如果Oracle不再需要当前的归档日志用于保证数据库时点恢复或数据库闪回,则RMAN备份保留策略认为当前日志为obsolete
         在SYSDATE-'DB_FLASHBACK_RETENTION_TARGET'之后创建的归档日志是需要被保留的


    4、启用归档日志删除策略
         一旦启用该策略,则指定的归档日志被备份数量达到设定值后,这些归档日志能够被删除
         BACKUP ARCHIVELOG 会在未超出指定备份数的情况下(比如设置为2)备份归档日志到指定位置,如超出2次,则RMAN会跳过这些备份过2次的归档日志
         对于上述的情形,可以为BACKUP ARCHIVELOG适用force选项来强制备份归档日志
         如果启用该策略且配置为APPLIED ON STANDBY子句,则所有强制standby位置被apply后,这些归档日志会被RMAN删除
         如果启用该策略且配置为SHIPPED ON STANDBY子句,则所有强制standby位置被成功传送后,这些归档日志会被RMAN删除
    ————————————————
    版权声明:本文为CSDN博主「这个就不用说了吧」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/fsfsdfsdw/article/details/84194044

    展开全文
  • 归档日志删除脚本.txt

    2020-06-01 17:44:38
    归档日志删除脚本,仅供参考学习,适用于oracle数据库版本,个人经验总结, 个人已经尝试过,暂时没有发现问题,可以根据每个人的需求进行修改保留时间
  • oracle归档日志处理方法

    oracle归档日志处理方法

    归档日志如果不定期删除,会越来越多,有很大部分在备份或者过期后都是无用的,只会浪费大量磁盘空间,所以需要定期删除。因为archivelog的相关信息是记录在controlfile中的,并且可以从相关的动态视图(例如v$archived_log)查询,archivelog文件从OS层直接物理删除后,该部分日志仍然标注为存在,也就是说Oracle并不认为这些日志被删除了,所以在删除archivelog的时候,需要做一些设置。

    一、OS层定期删除

    1、物理删除archivelog
    2、进入RMAN

    [oraarp@bjb ~]$ rman target /
    Recovery Manager: Release 10.2.0.1.0 - Production on Thu Feb 14 16:31:19 2019
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    connected to target database: ARPDB (DBID=3035516155)
    

    3、检查所有归档日志

    RMAN> crosscheck archivelog all;
    
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=606 devtype=DISK
    validation failed for archived log
    archive log filename=/arp/oraarp/archivelog/1_7638_704132477.dbf recid=4735 stamp=998460520
    validation failed for archived log
    archive log filename=/arp/oraarp/archivelog/1_7639_704132477.dbf recid=4736 stamp=998478034
    validation succeeded for archived log
    archive log filename=/arp/oraarp/archivelog/1_7640_704132477.dbf recid=4737 stamp=998517613
    validation succeeded for archived log
    
    ·······
    

    3、列出失效的归档日志

    RMAN> list expired archivelog all;
    
    List of Archived Log Copies
    Key     Thrd Seq     S Low Time  Name
    ------- ---- ------- - --------- ----
    4735    1    7638    X 24-JAN-19 /arp/oraarp/archivelog/1_7638_704132477.dbf
    4736    1    7639    X 25-JAN-19 /arp/oraarp/archivelog/1_7639_704132477.dbf
    

    4、删除失效的归档日志

    RMAN> delete expired archivelog all;
    
    released channel: ORA_DISK_1
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=606 devtype=DISK
    
    List of Archived Log Copies
    Key     Thrd Seq     S Low Time  Name
    ------- ---- ------- - --------- ----
    4735    1    7638    X 24-JAN-19 /arp/oraarp/archivelog/1_7638_704132477.dbf
    4736    1    7639    X 25-JAN-19 /arp/oraarp/archivelog/1_7639_704132477.dbf
    
    Do you really want to delete the above objects (enter YES or NO)? yes
    deleted archive log
    archive log filename=/arp/oraarp/archivelog/1_7638_704132477.dbf recid=4735 stamp=998460520
    deleted archive log
    archive log filename=/arp/oraarp/archivelog/1_7639_704132477.dbf recid=4736 stamp=998478034
    Deleted 2 EXPIRED objects
    
    RMAN> 
    

    OS删除命令,以及rman命令,可以都放在shell脚本中,定期执行。以下是rman命令脚本

    #!/bin/bash
    DATE=`date +%Y%m%d%H`
    source /home/oracle/.bash_profile
    $ORACLE_HOME/bin/rman log=/u01/app/rman_${DATE}.log <<EOF
    connect target/
    run{
    crosscheck archivelog all;
    delete noprompt expired archivelog all; 
    }
    exit;
    EOF
    exit
    

    二、RMAN直接删除

    RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; //删除七天前的归档
    RMAN>DELETE ARCHIVELOG FROM TIME 'SYSDATE-7'; //删除七天到现在的归档(慎用)
    

    三、RMAN备份后,直接删除归档

    RMAN>backup format '/u01/arch_%T_%s_%U' archivelog all delete input;
    
    展开全文
  • 关于Oracle归档日志删除(前提是数据库处于归档模式 SQL>archive log list;--Automatic archival 为 Enabled),目前遇到过两种情况,一是先手动删除了归档文件(服务器直接删除),二是通过Rman删除,一方案可能会...

    关于Oracle归档日志删除(前提是数据库处于归档模式 SQL>archive log list;--Automatic archival 为 Enabled),目前遇到过两种情况,一是先手动删除了归档文件(服务器直接删除),二是通过Rman删除,一方案可能会存在数据库信息冗余,二方案可能会造成实际归档文件数量大于数据库中记录的文件数量,解决方案:

     

    一:手动删除归档文件(服务器直接删除)造成的问题解决

    场景:服务器中直接删除归档文件,造成 v$archived_log 视图中记录的日志文件会多余实际归档文件数量,

    1、首先查看归档日志目录下文件数量  ls -l | wc -l 

    2、执行SQL>select count(*) from v$archived_log;--检查数据库中记录的归档文件数量(正常情况下sql数量应该大于第一步查询的文件数量,因为已经删除了服务器归档文件)

    3、进入Rman,

    rman target /

    执行 crosscheck archivelog all; --检查控制文件和实际物理文件的差别。(此时显示的文件数量应小于上面SQL的数量,原理同第二步)

    然后执行 delete expired archivelog all;  --删除控制文件中不存在的失效的归档日志

    然后可以再次检查归档路径下文件数量与crosscheck数量是否相等,

    A、若相等,则归档文件都是可以关联到的,

    然后检查 SQL与归档文件数量是否相等,

    1.1、若相等,则表名归档文件与控制文件记录的归档信息一一对应,可以结束退出。

    1.2、若不等,即SQL查询数量大于归档文件数量,则表名数据库中记录的归档信息多余实际归档文件数量,

    执行 SQL>select dest_id,sequence#,name,blocks from v$archived_log ; 会发现有很多NAME字段为空的数据

    这种数据是通过非正常途径删除归档文件造成,可无需理会,若想让查询的数量与归档文件保持一致可采用以下方案

    a)、rman>delete archivelog all;--删除所有归档文件

    b)、rman>execute sys.dbms_backup_restore.resetCfileSection(11);--清空控制文件记录的归档信息,11代表归档

    (SQL>select rownum-1, type from v$controlfile_record_section;--可通过此SQL查询到上面的11)

    此时再次查询SQL>select count(*) from v$archived_log;会发现数量为0

    c)、然后执行:rman>catalog start with '/oradata/archive/'; --将归档日志写入到控制文件

    此时再次执行上面的查询SQL会发现归档信息已写入控制文件,数量与归档文件数量一致

    B、若不等,及归档文件数量大于控制文件中的归档记录信息,

     

    1:此时如果归档文件不多,可以采用手工找出多余的归档文件进行删除

    2:如果归档文件较多,可以通过linux的系统命令find在归档日志中找出多余crosscheck的文件并进行删除

    3然后进入rman执行:rman>catalog start with '/oradata/archive/'; --将归档日志写入到控制文件

    然后执行rman>delete noprompt archivelog until time 'sysdate-7'; --删除七天前的归档日志

    保留天数根据实际需求填写

    这里不要采用rman>delete noprompt archivelog until time 'sysdate-7';--删除七天前的归档日志

    由于catalog start with 会将归档记录信息中的归档日志完成时间改为执行命令的时间。

    若不等:

    1)、归档文件数量结果小于crosscheck数量,则说明实际文件数量小于记录信息,此时可以采用删除归档在数据库中的记录信息,然后将归档文件重新导入到数据库中记录

    具体操作 

    首先执行:SQL>select dest_id,sequence#,name,blocks from v$archived_log;--查看归档信息

    然后使用RMAN执行:delete archivelog all;

    再次执行:SQL>select dest_id,sequence#,name,blocks from v$archived_log;--会发现有name为空的数据

    然后执行:execute sys.dbms_backup_restore.resetCfileSection(11);--11代表归档

     

    再次执行:SQL>select dest_id,sequence#,name,blocks from v$archived_log;--结果为空

    然后执行:catalog start with '/oradata/archive/'; --将归档日志写入到控制文件(A)

    再次执行:SQL>select count(*) from v$archived_log;--数量与文件数量相同

    到此完成

    2)、归档文件数量结果大于crosscheck数量,则说明实际文件数量大于记录信息,若磁盘存储空间足够可以不用管, 

    若想让归档文件与归档记录信息保持一致,可以采用以下几个方案:

    一:此时如果归档文件不多,可以采用手工找出多余的归档文件进行删除

    二:如果归档文件较多,可以通过linux的系统命令find在归档日志中找出多余crosscheck的文件并进行删除

    三:采用(1)步骤

    注:采用catalog start with 后再使用RMAN删除命令时需要注意1)、delete archivelog all completed before 'SYSDATE-7';--命令意思删除7天前所有的归档日志。保留一周时间

    该命令可能会失效,无法删除七天前的归档文件,因为该命令是根据归档文件的完成时间进行删除归档文件,

    执行过catalog start with后,控制文件中记录的归档文件的完成时间会更改为执行命令的时间,可以采用2)方式删除
    2)、delete noprompt archivelog until time 'sysdate-7';--删除七天前的归档日志

    该命令是按照归档日志的创建时间进行删除

    二、通过RMAN删除

    1、进入rman

    rman target /

    首先执行 

    delete archivelog all completed before 'SYSDATE-7';--删除7天前所有的归档日志。(按照归档日志完成时间删除)

    delete noprompt archivelog until time 'sysdate-7';--删除7天前所有的归档日志。(按照归档日志创建时间删除)

    然后执行 crosscheck archivelog all;--检查控制文件与实际归档文件

    然后执行 delete expired archivelog all;  --删除控制文件中不存在的失效的归档日志

    此时归档日志清理完成

    检查 归档日志路径下的归档文件数量、与crosscheck、SQL>select count(*) from v$archived_log; 三者数量是否一致,

    若一致则表示没有冗余信息,若不一致,可采用一方案解决

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • oracle日志文件相信大家都已经有一定的了解了,下面主要为您介绍oracle日志文件类型及归档日志模式,如果您感兴趣的话,不妨一看。Oralce两种日志文件类型:联机日志文件这是Oracle用来循环记录数据库改变的操作系统...

    oracle日志文件相信大家都已经有一定的了解了,下面主要为您介绍oracle日志文件类型及归档日志模式,如果您感兴趣的话,不妨一看。

    Oralce两种日志文件类型:

    联机日志文件
    这是Oracle用来循环记录数据库改变的操作系统文件

    归档日志文件
    这是指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份

    Oracle有两种归档日志模式,Oracle数据库可以采用其中任何一种模式:

    NOARCHIVELOG
    不对日志文件进行归档。这种模式可以大大减少数据库备份的开销,但可能回导致数据的不可恢复

    ARCHIVELOG
    在这种模式下,当Oracle转向一个新的日志文件时,将以前的日志文件进行归档。为了防止出现历史“缺口”的情况,一个给定的日志文件在它成功归档之前是不能重新使用的。归档的日志文件,加上联机日志文件,为数据库的所有改变提供了完整的历史信息。

    在Oracle利用日志文件和归档日志文件来恢复数据库时,内部序列号可以起一个向导的作用。

    【编辑推荐】

    oracle日志文件重建的方法

    Oracle移动重做日志文件

    oracle用户的概念

    Linux环境下添加Oracle用户信息

    Oracle超级用户的权限管理

    展开全文
  • Linux 增加归档日志删除脚本

    千次阅读 2017-08-24 15:18:48
    一、基于Linux服务器端的 归档日志删除脚本 生产库部署环境: 1、创建detele_archivelog.sh脚本 选择存放脚本的路径 [oracle@localhost ~]$ cd /home/oracle/ --打开/home/oracle [oracle@localhost ~]$ ...
  • RMAN> delete archivelog until time 'sysdate -1';

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,403
精华内容 20,561
关键字:

归档日志删除