Oracle在windows服务器下异常断电或者长时间运行情况下,容易发生ORA-00257: 归档程序错误
“ORA-00257: 归档程序错误。在释放之前仅限于内部连接”错误由于由于归档日志占满了空间,此空间大小限制由参数:db_recovery_file_dest_size来指定,而归档目录由参数:db_recovery_file_dest指定。
1、在dos命令下切换到sqlplus命令
sqlplus / as sysdba;
2、查看归档日志占比
select * from v$flash_recovery_area_usage;
3、对于此问题解决很简单:一是增加空间大小,二是删除归档日志。
1)增加空间大小:
alter system set db_recovery_file_dest_size=50G scope=both;
修改完成后查看是否修改成功show parameter db_recover;
删除归档日志
在dos窗口切换rman命令:$ rman target /
切换到rman命令后检查归档日志是否失效:crosscheck archivelog all;
删除失效归档日志,即删除物理文件已丢失但记录在rman中的归档日志:delete expired archivelog all;
删除所有归档日志(慎用):delete archivelog all;
root@18b9d420d2d4# rman target sys/xxxx
# 检查控制文件和实际物理文件的差别
RMAN> crosscheck archivelog all;
# 删除过期文件(过期文件指的是存储在rman资料库中的记录,但实际上记录对应的归档日志已经被清除了)
RMAN> delete expired archivelog all;
# 删除7天前的归档日志
RMAN> delete archivelog until time 'sysdate-7'