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

登录Oracle报错 ORA-00257: archiver error. Connect internal only, until freed. 由于归档日志(archive log)已满引起的。

错误情形

系统用户登录:

sqlplus / as sysdba
-- 登录失败
ERROR:
ORA-09817: Write to audit file failed.
Linux-x86_64 Error: 28: No space left on device
Additional information: 12
ORA-01075: you are currently logged on
​

查询磁盘

df -h
/dev/sda6             121G  121G     0 100% /home
cd /home 
​

查询最大占用

# 查看文件或目录所占用的磁盘空间的大小
du -ah --max-depth=1  
# du命令查询 -a显示目录占用的磁盘空间大小 h人类能看懂的方式 --max-depth目录的深度为1
82G    ./oracle
​

处理过程

进入 oracle 或者 home 临时移走/删除某些文件腾出一点空间,进行后续的操作。

-- 看看archive log所在位置
show parameter log_archive_dest;
-- 结果VALUE为空时,可以用archive log list,检查一下归档目录和log sequence
archive log list;
-- 检查flash recovery area的使用情况
-- 可以看见archivelog已经很大了,达到96.62
select * from V$FLASH_RECOVERY_AREA_USAGE;
-- 计算flash recovery area已经占用的空间
select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
-- 找到recovery目录, show parameter recover
show parameter recover;
​

转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件。

注意:

在删除归档日志后,必须用 RMAN 维护控制文件,否则空间显示仍然不释放。

清理操作

-- RMAN维护
rman target sys/syspwd
-- 检查一些无用的archivelog
crosscheck archivelog all;
-- 删除过期的归档
delete expired archivelog all;
-- 也可以删除截止到前一天的所有archivelog(或指定180天前之类)
delete archivelog until time 'sysdate-1' ;
-- 成功输出
Deleted 999 objects
​

处理后检查

-- 检查flash recovery area的使用情况
select * from V$FLASH_RECOVERY_AREA_USAGE;
​

如果前面移走的文件,记得挪回来。

更多推荐

章节目录