[ORACLE]oracle归档日志目录满了,无法归档,数据库报错ora-00257问题解决过程
--删除过期的归档日志(delete expired删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是RMAN资料库中的记录)---删除截止到当前日期-7天前的所有archivelog。1.查看alert日志 ,默认目录在../Oracle/diag/rdbms/...下,有如下报错,提示闪回区超出系统设置的8G的容量。----检查归档文件的状态(检查控制文件
一、现象
程序访问数据库报错ORA-00257: Archiver error. Connect AS SYSDBA only until resolved
提示数据库归档的时候报错。
二、排查过程
1.查看alert日志 ,默认目录在../Oracle/diag/rdbms/...下,有如下报错,提示闪回区超出系统设置的8G的容量。
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 209715200 bytes disk space from 8657043456 bytes limit
ORA-19815: WARNING: db_recovery_file_dest_size of 8657043456 bytes is 100.00% used, and has 0 remaining bytes available.
由此可见归档日志应该是放在闪回区的,没有设置另外的目录存放。
2.定位闪回区的目录所在的位置
通过一下参数查找show parameter db_reco;

可以看到闪回区大小为8256M,目录/home/u01/app/oracle/fast_recovery_area
3.再看下闪回区的使用率SELECT * FROM V$RECOVERY_FILE_DEST;

接近满了。
4.再看下闪回区的占用比例
select * from v$flash_recovery_area_usage;
archived log占用最高

4.清理闪回区--归档日志
两种方式:
(1)删除磁盘文件-rman回收空间
cd /home/u01/app/oracle/fast_recovery_area
找到archivelog目录
rm -rf 文件夹,此步骤删除的文件实际在rman程序里并没有释放空间,需要登录rman
执行以下步骤:
crosscheck archivelog all;----检查归档文件的状态(检查控制文件和实际物理文件的差别)
delete expired archivelog all;---删除过期的归档日志(delete expired删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是RMAN资料库中的记录)
此时再查看闪回区的占用,已经减少了

(2)rman直接清理
delete archivelog until time 'sysdate-7'; ---删除截止到当前日期-7天前的所有archivelog
三、解决方案
1.增大闪回区大小或者修改归档日志路径
增大闪回区大小:
alter system set db_recovery_file_dest_size=80G scope=both(增大内存和spfile的配置,需要重启生效)
alter system set db_recovery_file_dest_size=80G (默认增大内存,需要后失效)
修改归档目录:
alter system set log_archive_dest_1='location=/data/arch' scope=both;
2.定期删除归档日志
根据rman备份策略删除归档日志
更多推荐
所有评论(0)