Oracle归档日志满错误(ORA-00257)
半仙 自动化运维
ORA-00257是DBA日常运维中常见的问题,会导致数据库无法写入数据,虽然不会造成数据损坏,但对业务可用性造成直接影响,部分业务将无法使用。
现象:
业务端:业务无法访问,或者业务处理后提交不成功。
后台日志: ORA-00257: archiver error. Connect internal only, until freed。
临时处理办法:
1、使用Oracle用户登录服务器,首先确认存储空间使用率。
```
[oracle@rac1 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 51G 32G 18G 65% /
tmpfs 1.8G 910M 858M 52% /dev/shm
/dev/sda1 190M 67M 110M 38% /boot
[oracle@rac1 ~]$
如果使用ASM则需要进入ASM查看
2、进入归档日志目录,删除部分日志文件(从时间最长的删起,不要全部删除,要保留最近日志)
3、进入RMAN清理
[oracle@rac1 ~]$ rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
注:删除过期的归档
这样就把归档文件删除了。再进入sqlplus 查看ARCHIVELOG日志使用率!
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
后期避免类似故障:
1、确保归档日志保存位置的空间足够大;
2、增加闪回区最大限制:
SQL>alter system set DB_RECOVERY_FILE_DEST=20g;
个人建议,最好跟所在分区大小一致;
3、通过RMAN或者备份系统定期备份并自动清理本地归档日志;
4、通过自动化监控,设置报警阈值,达到阈值立即手动清理(避免业务突然变化,日志快速增长造成数据库故障)