ORA-00257归档日志写满的解决方法

这个错误是归档满了,首先查看一下归档使用情况。



select * from v$recovery_file_dest;


  ora-00257_重启




select * from v$flash_recovery_area_usage;


ora-00257_重启_02

加起来99.7%了

这时只能删除日志了



rman target sys/pwd@orcl
crosscheck archivelog all;--检查日志情况
delete archivelog until time 'sysdate'; --删除所有日志
delete expired archivelog all;--删除过期日志


然后远程机器死机了重启报错

ora-00257_数据库_03

查看追踪文件3469

/home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/里的orcl_ora_3649.trc

ora-00257_重启_04

ok,这里我们就开始删除日志吧。

这里是用rman连接,尴尬的事又出现了。


ORA-12543: TNS:destination host unreachable

重启虚拟机地址变了,改一下ok了。

 



sqlplus / as sysdba  
shutdown abort ----关闭进程
startup mount ---- 装载数据库
select * from v$recovery_file_dest; ---查询归档日志
db_recovery_file_dest_size=10737418240; --设置归档日志空间为10G
Exit ---到这里空间大小已经设置完成
或者
mantarget / -----进入rman工具窗口
RMAN>crosscheck archivelog all; --运行这个命令可以把无效的expired的archivelog标出来。
RMAN>delete noprompt archivelog until time "sysdate -3"; -- -即删除3天前的归档日志
delete archivelog until time 'sysdate'; --删除所有日志
delete expired archivelog all;--删除过期日志


 删除完毕后启动数据库成功。

之后按转载博主的方法设置自动清理归档日志:

https://www.jb51.net/article/48129.htm

省事点直接备份完清理之前所有日志



delete noprompt archivelog until time 'sysdate -1';
$echo $ORACLE_BASE
select * from V$database;--oracle的sid
$echo $ORACLE_HOME


将配置参数放到脚本中,清除之前备份就放到0级备份脚本中。

end;