[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
# 显示数据库参数`log_archive_dest`的当前设置值
show parameter log_archive_dest
archive log list;
数据库是否处于ARCHIVELOG模式或NOARCHIVELOG模式。
归档日志的当前位置和状态。
已经归档的日志文件的序列号。
下一个归档日志文件的预期序列号。
# 可以看到 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;