今天开发人员报公司测试环境昨天能正常连接数据库,现在不能连接报“ORA-00257: 归档程序错误。只有在解析完成后才以 AS SYSDBA 方式连接”错误提示。我接到问题后,排查分析如下:
一、怀疑空间不足
1、检查数据库服务器磁盘空间存储情况
通过查看判断,空间存储虽然不多,但在测试场景下是足够用的。此点可以排除在外,继续往下排查。
二、检查空间归档相关
1、检查空间redo log\recovery file\flash_recovery_area_usage使用情况
select * from v$log;
select * from v$recovery_file_dest;
select * from v$flash_recovery_area_usage;
从中发现ARCHIVED LOG、/u01/app/oracle/fast_recovery_area分别使用率达到90%
2、手工切换日志
alter system switch logfile;
运行手工切换命令,发现很长时间未有反馈。后来想到DB_RECOVERY_FILE_DEST_SIZE太少会导致日志文件不匹配。
3、排查DB_RECOVERY_FILE_DEST_SIZE大小
检查发现此参数当时只配了3G,文件存储空间还有35GB。
上述归档日志、恢复空间使用率过高,因此需要调整扩容该参数由原来3GB->15GB。
执行: alter system set DB_RECOVERY_FILE_DEST_SIZE=15g;
4、执行完成后检查
检查第1点操作,发现
归档日志使用率降低到22.43以下。
使用率和分配的空间存储大小恢复合理了。
5、验证登录是否正常
从登录显示已恢复正常了,归档日志解析恢复正常流转了。
小结:恢复区大小设置与业务高峰期产生的归档日志信息需要相匹配,设置过小容易导致空间不够成为瓶颈。