ora-16038:日志无法归档 ora-00312 ORA-19809: limit exceeded for recovery files ora-19804

简介:

ORA-03113:通信通道的文件结尾 进程ID4781 
查看alter.log 
发现提示联机日志文件有问题 
网上的方法看不是很懂,看到有很多错误 
ora-16038:日志无法归档 
ora-00312 
ORA-19809: limit exceeded for recovery files 
ora-19804:无法回收。。。磁盘空间 
原来Oracle11g在默认情况下,归档日志是保存在闪存恢复区的,并且闪存恢复区的大小默认是2g,空间满了之后就没有办法再归档了。

启动数据库到mount状态,statup mount 更改recovery files空间大小,然后rman,删除过期的备份,指定备份策略,定期删除备份。

SQL> show parameter db_recovery_file_dest 
NAME                                TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
db_recovery_file_dest                string      d:\app\qiao\flash_recovery 
                                                  _area 
db_recovery_file_dest_size          big integer 2G 
  
解决办法,有3种: 
1.加大闪存恢复区。 
ALTER SYSTEM SET db_recovery_file_dest_size=50g scope=both;

2.归档路径设置到其它地方。 
alter system set log_archive_dest = 其他路径

3.删除或转移归档日志。 
打开RMAN 
rman target / 
RMAN>crosscheck archivelog all;  -- 运行这个命令可以把无效的expired的archivelog标出来。 
RMAN>delete expired archivelog all;  -- 直接全部删除过期的归档日志。 
RMAN>delete noprompt archivelog until time "sysdate -3";  --删除系统当前日期3天前的归档,不经过提示、直接删除。或(DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7')

指定retention的策略(RMAN 的备份保留策略),使得archivelog不至于这样增加 
命令格式: 
configure retention policy clear ---------------备份保留策略使用默认值 
configure retention policy to none------------不采用任何备份保留策略 
configure retention policy to recover window of integer days------------基于时间的备份保留策略,保留几天前的备份文件 
configure retention policy to redundancy integer-------基于冗余备份的备份保留策略,对备份文件保留几个冗余备份 
REPORT OBSOLETE命令查看当前处于废弃状态的备份文件 
DELETE OBSOLET 命令可立刻删除备份保留策略 不需要的文件(废弃文件)。

RMAN>configure retention policy to recovery window of 7 days;  保留七天内的所有备份。 
RMAN>configure retention policy to redundancy 3;                为每个数据文件保留3个冗余备份。 
SQL>alter system db_recovery_file_dest_size=4G scope=both;

当然我们可以写一个简单的shell脚本,对归档日志进行管理

#!/bin/bash 
#confirm oracle runing environment 
. /home/oracle/.bash_profile 
ps -ef |grep dbw0_$ORACLE_SID | grep -v grep >> /dev/null 
if [ $? -eq 0 ];then 
    rman target / log=/orabackup/delarch`date +%Y%m%d`.log  <<EOF 
    crosscheck archivelog all; 
    delete noprompt  expired archivelog all; 
    backup as compressed backupset archivelog all format '/orabackup/cron-archlog_%U_%d_%T_%s_%p' delete input; 
exit; 
EOF 
fi

本文转自杨海龙的博客博客51CTO博客,原文链接http://blog.51cto.com/7218743/1610391如需转载请自行联系原作者


IT达仁

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 运维 应用服务中间件
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
[运维日志] Web 服务器日志依日期归档(Powershell 实现,附源代码)
74 0
|
3月前
|
Go
Golang日志切割归档
Golang日志切割归档
30 0
|
9月前
|
监控 关系型数据库 Shell
[翻译]PG15新特性-加速WAL日志归档
[翻译]PG15新特性-加速WAL日志归档
101 0
|
11月前
|
存储 运维 Java
[powershell运维] Web 服务器日志依日期归档
本文记录了一个以 Jboss 服务器日志归档的 powershell 示范项目。该项目只需要略加修改,即可用于所有类似需要归档日志的场景。
106 0
|
Oracle 关系型数据库 Linux
DM8重做日志文件和归档管理
重做日志文件,用来保存redo日志,redo日志默认2个,循环使用,不断覆盖,联机日志由系统自动切换,不能手动切换,联机日志过小,会制造日志频繁切换,过大则浪费磁盘空间。
DM8重做日志文件和归档管理
|
SQL 分布式计算 监控
SLS投递到OSS不仅仅是归档!借助DLA元信息发现功能一键激活日志数据的分析价值
为了降低存储成本,不少客户会选择SLS数据搭配OSS进行冷热分离,把全量数据投递到OSS,近实时数据查询使用SLS。但是这些投递到OSS的数据难以分析,目前基于DLA的元信息发现功能一键激活日志数据的分析价值,然后搭配DLA的Serverless Presto和Spark进行数据处理和分析。
SLS投递到OSS不仅仅是归档!借助DLA元信息发现功能一键激活日志数据的分析价值
|
监控 Shell Linux