archiver error. Connect internal only, until freed.

2023-12-29 09:31:46
[64000][257] ORA-00257: archiver error. Connect internal only, until freed.

原因

归档日志写满了、闪回日志写满了(根本原因是服务器磁盘写满了)

在这里插入图片描述

# 切换到oracle服务
su - oracle

# 使用sysdba用户登录 解决方案:(https://blog.csdn.net/qq_37635373/article/details/93328211)
sqlplus /nolog


conn /as sysdba

在这里插入图片描述

查看 archive log 存放位置

# 显示数据库参数`log_archive_dest`的当前设置值
show parameter log_archive_dest

在这里插入图片描述

归档日志模式的状态信息
archive log list;

在这里插入图片描述

  • 数据库是否处于ARCHIVELOG模式或NOARCHIVELOG模式。

    • ARCHIVELOG模式:当数据库在此模式下运行时,所有的重做日志文件在被重用前都会被归档保存。这允许进行点对点的恢复。
    • NOARCHIVELOG模式:在此模式下,重做日志文件在空间需要时可以被覆盖,不进行归档。这意味着无法进行点对点的恢复,只能恢复到最后一次完整备份。
  • 归档日志的当前位置和状态。

  • 已经归档的日志文件的序列号。

  • 下一个归档日志文件的预期序列号。

查看 Flash Recovery Area 的情况
# 可以看到 PERCENT_SPACE_USED 的占用百分比是多少
select * from V$FLASH_RECOVERY_AREA_USAGE;

在这里插入图片描述

查看归档文件路径
show parameter recover;

在这里插入图片描述

找到归档文件路径,对文件进行删除,注意保留最近的几个文件

在这里插入图片描述

需要处理数据库备份及恢复工具

在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。(RMAN是Oracle提供的一个备份和恢复管理工具,可以帮助数据库管理员进行数据库的备份和恢复操作)

rman target sys/pass

在这里插入图片描述

# 命令会检查所有的归档日志文件,验证RMAN的记录与磁盘或媒体上实际存在的归档日志文件是否一致。如果RMAN记录中的文件在磁盘或媒体上不存在,那么这个文件在RMAN的记录中的状态就会被标记为`EXPIRED`。 只会更新RMAN的记录,不会实际删除任何文件
crosscheck archivelog all;

在这里插入图片描述

# 删除所有标记为`EXPIRED`状态的归档日志文件。
delete expired archivelog all;

# 删除所有直到昨天为止的归档日志文件,注意: 这个命令会实际删除磁盘上的归档日志文件,而不仅仅是删除RMAN的记录。所以在执行这个命令之前,你需要确保你不再需要这些归档日志文件,或者归档文件已经被备份
delete archivelog until time ‘sysdate-1

在这里插入图片描述

检查是否处理完成

select * from V$FLASH_RECOVERY_AREA_USAGE;

在这里插入图片描述

文章来源:https://blog.csdn.net/xiaomzhng/article/details/135282431
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。