记录一次归档日志爆满事件

1.连接oracle数据库提示错误

ORA-00257:archiver error. Connect internal only,until freed

一看这个提示,就知道归档日志又满了,空间不够。昨天刚清理了归档日志,为啥今天又满了,就很奇怪。

看了下日志,才知道有人在删除了大量的日志数据,导致归档暴增。

现在sqplus进不去,咋办呢。别慌

2.首先,找到归档日志存放路径

show parameter archive;

查看log_archive_desc_1后面的value是否有值,如没有,请设置一个路作为归档日志存放路径。切记不要讲归档日志存放在闪回区

3.找到物理路径后,在有备份的情况删除归档日志,如没有备份请先行备份,以免数据丢失

rm -rf 2018_09_08

归档日志是每一个日期生成一个文件夹来存放日志。只要删除一天的文件即可,删除后就可以通过sqlplus连接到数据库了。这时候在通过rman去删除归档日志,因为你只删除了物理上的文件,控制文件并不知道这个文件已经没有,需要通过rman去维护控制文件

,连接到rman,如有多个实例,请先指定实例名

C:UsersAdministrator>set ORACLE_SID=orcl

C:UsersAdministrator>rman target /

恢复管理器: Release 11.2.0.1.0 - Production on 星期一 9月 10 11:02:22 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到目标数据库: ORCL (DBID=1466047434)

RMAN>crosscheck archivelog all; #检测无效的归档日志
RMAN>delete expired archivelog all(delete archivelog completed before 'sysdate-7'; #删除七天前的归档日志,默认七天,可以根据自己的需求进行删除

4.删除后再次连接sqlplus就OK了。

补充,在oracle无法加载实例的情况下如何进入rman清理归档日志

>sqlplus /nolog                           #不登录数据库
>conn / as sysdba                         #以DBA账户连接到Oracle
>startup mount;                           #启动数据库到mount状态
>rman tar get /                           #连接到rman
>crosscheck archivelog all;                  #检查失效归档日志
>delete expired archivelog all;                 #删除失效归档日志
>delete archiavelog completed before 'sysdate-7';         #删除七天之前的归档日志
原文地址:https://www.cnblogs.com/Roobbin/p/9617962.html