当ORACLE归档日志满后如何正确删除归档日志

当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE。

一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。

二、把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。

我们利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例)

1.指定数据库实例

C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl

2.连接数据库

C:/Documents and Settings/Administrator>RMAN TARGET SYS/[email protected]

3.查看归档日志的状态

RMAN> list archivelog all;

4.手工删除归档日志文件

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-7‘;

说明:
 SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。 
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库 
DELETE ARCHIVELOG from TIME ‘SYSDATE-7‘; 删除从7天前到现在的全部日志,慎用
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除 
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ; 
这样做仍然会在RMAN里留下未管理的归档文件 
仍需要在RMAN里执行下面2条命令 
crosscheck archivelog all; 
delete expired archivelog all; 
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能

5.退出rman

RMAN> exit

附带说明:RMAN 是Oracle数据库软件自带的备份恢复工具,一种是类似于DOS,通过键盘操作的 命令行方式。

通过RMAN连接本地数据库非常简单,以 W indows 平台为例,进入到命令提示符界面:

C:/Documents and Settings/junsansi> SET ORACLE_SID =jssbook

C:/Documents and Settings/junsansi> RMAN TARGET /

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:17 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: JSSBOOK (DBID=1415261003)

    RMAN>

  如上所示,使用RMAN连接本地数据库之前必须首先设置操作系统环境变量:ORACLE_SID,并指定该值等于目标数据库的实例名。如果本地库只有一个实例并已经设置了ORACLE_SID环境变量,则不需要再指定ORACLE_SID。RMAN会自动连接到默认实例。

  当然,你也可以先启动RMAN,然后再通过CONNECT命令来连接目标数据库,如下所示:

C:/Documents and Settings/junsansi> RMAN

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:36 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

RMAN> connect target /

    connected to target database: JSSBOOK (DBID=1415261003)

  本地连接允许使用操作系统验证,因此上述示例都不需要输入用户名和密码,不过如果本地没有启用操作系统身份验证的话,就必须指定具有相应权限的用户名和密码。

  需要注意,Linux/UNIX 环境下设置操作系统环境变量应使用 export 命令,另外ORACLE_SID必须为大写。例如:

[[email protected]  ~ ]$  export  ORACLE_SID=test08

[[email protected]  ~ ]$  rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on Tue Mar 17 16:08:32 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: TEST08 (DBID=3812548755)

    RMAN>

连接远程数据库

  如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名(Net Service Name),本地的tnsname.ora文件中必须已经建立了该网络服务名的正确配置。连接示例如下:

C:/Documents and Settings/junsansi> RMAN TARGET SYS/[email protected]

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 16:12:32 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: TESTDB (DBID=2220262593)

    RMAN>
时间: 2024-10-12 11:58:09

当ORACLE归档日志满后如何正确删除归档日志的相关文章

oracle 归档日志满 的 解决方法

报错:ORA-00257: archiver error. Connect internal only, until freed 原因:归档日志满 处理方法: 1.sys用户登录数据库 sqlplus /nolog connect /as sysdba 2.查看flash_recovery使用情况 select * from V$FLASH_RECOVERY_AREA_USAGE; 3.查看存档路径 SQL> show parameter recover; NAME               

Oracle归档日志满导致数据库性能异常慢

这个问题遇到的时候,我没有查看告警日志,一直以为是数据库的锁阻塞影响了性能.知道查看日志才发现时归档日志已满.才导致这种问题的产生: Errors in file /DBBK/oracle/diag/rdbms/orcl/orcl/trace/orcl_arc0_28918.trc: ORA-19809: limit exceeded for recovery files ORA-19804: cannot reclaim 34764800 bytes disk space from 40705

Oracle 11g正确删除归档日志方法

1.用oracle用户登陆rman RMAN>rman target / 2.列出并确认归档日志路径 RMAN>list archivelog all; 3.删除7天以前的归档日志 RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; 说明: SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志. 同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全

归档日志满解决方法

①-------增加归档日志空间的大小sqlplus / as sysdba shutdown abort ----关闭进程 startup mount ---- 装载数据库 select * from v$recovery_file_dest; ---查询归档日志 alter system set db_recovery_file_dest_size=10737418240; --设置归档日志空间为10G Exit ---到这里空间大小已经设置完成 ②--------删除归档日志rmantar

Oracle监听挂掉以及归档库日志满清理方法

oracle数据监听挂了重启方法: --监听 lsnrctl start --启动后稍有延时才能生效 lsnrctl status lsnrctl stop --强杀监听 ps -ef|grep lsnrctl ps -ef|grep tnslsnr|grep -v "grep" kill -9 前面那个数字 Oracle 数据库归档日志满,删除日志: 登陆rman target sys/password命令进入RMAN命令行后执行 RMAN> crosscheckarchive

oracle 删除归档日志的正确方式

在使用plsql使用游标的%rowcount时,导致了一个死循环,手动终止后数据库无法连接,服务重启后依然不行.windows日志管理器报归档日志相关的错误,最终手动启动到mount状态,禁用归档日志后,数据库正常.由于是本机的实验数据库,所以希望把归档日志删掉: 以下摘自这里ORACLE正确删除归档并回收空间的方法 一个ORACLE归档日志经常满,表现为/oraarchive 这个文件空间占用100%大家一定抱怨ORACLE为何没有归档维护工具,很多人直接删除了事,错了,ORACLE有,而且很

Oracle正确删除archivelog文件(转)

from:http://www.itpub.net/thread-1636118-6-1.html Oracle在开启了归档模式后,会在指定的archive目录下产生很多的archivelog文件,而且默认是不会定期清除的,时间长久了,该文件夹会占用很大的空间. 问题:如何定期正确删除archivelog文件呢? 很多人直接在archive目录下删除文件,这样其实不能达到在Oracle CLF文件中删除文件记录的效果. 正确方法: 1.用RMAN连接目标DB: RMAN target sys/*

Centos 7下安装Oracle 12c 以及装后优化(附软件包)

Oracle 12c 数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一.比如SilverStream就是基于数据库的一种中间件.ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能:作为一个关系数据库,它是一个完备关系的产品:作为分布式数据库它实现了分布式处理功能.但它的所有知识,只要在一种机型上

记一次Oracle Clusterware成功安装后的故障处理

记一次Oracle Clusterware安装成功后的故障处理 1. 环境 [[email protected] rac1]$ cat /etc/issue Red Hat Enterprise Linux Server release 5.8 (Tikanga) Kernel \r on an \m 2. 问题描述在安装RAC的过程中, 成功安装好grid (clusterware) 后关闭了各节点. 在下次开启各节点后, 检查crs资源状态, 出现如下错误: [[email protecte