Oracle 服务器 ORA-257(归档程序错误)的处理过程
某用户的双节点Oracle服务器集群,用户在连接Oracle服务器时报如下错误:

查询资料发现,该错误出现的原因通常是存放归档日志的空间不足或者FRA(快速恢复区)空间耗尽。
1、查看数据库状态
sql
SELECT inst_id, instance_name, status, database_status FROM gv$instance;
数据库状态没有异常。
2、查询归档状态
sql
-- 检查归档进程状态
SELECT process, status, thread#, sequence#, block#, client_process
FROM v$managed_standby
WHERE process LIKE 'ARC%';
-- 查看当前日志切换状态
SELECT thread#, group#, sequence#, bytes/1024/1024 MB,
members, archived, status, first_time
FROM v$log
ORDER BY thread#, group#;
-- 检查所有归档目标状态
COLUMN dest_name FORMAT A20
COLUMN destination FORMAT A50
COLUMN error FORMAT A50
SELECT dest_id, dest_name, status, destination, error, fail_date
FROM v$archive_dest
WHERE status != 'INACTIVE';
3、清理归档日志
使用rman执行如下命令:
sql
-- 删除30天以前的归档日志
delete archivelog all completed before 'sysdate-30';
-- 同步控制文件信息
crosscheck archivelog all;
delete expired archivelog all;
4、查看FRA空间使用情况,结果如下:

查看FRA空间的大小,结果如下:

增加FRA空间的大小,命令如下:

重新查看FRA空间使用情况,结果如下:

5、处理完毕后,使用如下命令切换日志(多执行几次)
sql
ALTER SYSTEM SWITCH LOGFILE;
用户重新登录系统,不再报错,故障排除。