记录一次归档日志爆满事件
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:\Users\Administrator>set ORACLE_SID=orcl C:\Users\Administrator>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'; #删除七天之前的归档日志