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

时间: 2024-10-05 06:17:25

ora-16038:日志无法归档 ora-00312 ORA-19809: limit exceeded for recovery files ora-19804的相关文章

nginx日志定期归档脚本

#!/bin/bash #nginx下域名access日志切割归档脚本 YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) #==================================================Definition array==================================================== catalogue=(         www_logs         service_l

Shell + crontab 实现日志压缩归档

Shell + crontab 实现日志压缩归档 crontab 1 # archive the ats log file, keep 7 days. 2 */5 * * * * root /bin/sh /path/archive_atslog.sh >/dev/null 2>&1 shell 1 #!/bin/bash 2 # Author : standby 3 # Date : 2017-04-17 4 # Description : Archive the live log,

使用LogMiner分析oracle的redo日志和归档

Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 在线/归档日志文件中的具体内容,特别是该工具可以分析出所有对于数据库操作的DML和DDL语句.该工具特别适用于调试.审计或者回退某个特定的事务. LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图(Oracle8i内置包的一部分)组成,它作为Oracle数据库的一部分来发布是8i产品提供的一个完全免费的工具.但该工具和其他Oracle内建工具相比使

重做日志与归档日志区别

重做日志redo log file是LGWR进程从Oracle实例中的redo log buffer写入的,是循环利用的.就是说一个redo log file(group) 写满后,才写下一个.归档日志archive log是当数据库运行在归档模式下时,一个redo log file(group)写满后,由ARCn进程将重做日志的内容备份到归档日志文件下,然后这个redo log file(group)才能被下一次使用. 不管数据库是否是归档模式,重做日志是肯定要写的.而只有数据库在归档模式下,

脚本监控网络状态,输出日志并归档

脚本监控网络状态&日志归档整理 最近为检测VPN环境网络状态是否稳定,没有使用监控zabbix等监控工具,为方便快捷,使用脚本实现网络监控,并输出日志归档整理,方便后续排查. 在次记录一下,以备后用: #!/bin/bash #mail:[email protected] IP=baidu.com                #IP&域名 dir="/tools/netdir/" if [ -d ${dir} ];then     mkdir -p ${dir} fi

脚本监控网络状态,输出日志并归档(V2)

脚本监控网络状态&日志归档整理(V2) 最近为检测VPN环境网络状态是否稳定,没有使用监控zabbix等监控工具,为方便快捷,使用脚本实现网络监控,并输出日志归档整理,方便后续排查. 在上次基础上,新增了微信告警,并有收敛效果,只有在初次异常时告警,恢复后发送恢复通知,也可以根据具体需求设置短信与邮件告警. #!/bin/bash IP=10.234.100.100 dir="/netdir/" if [ ! -d ${dir} ];then     mkdir -p ${di

第十二章:重做日志和归档

[大纲]? 重做日志文件. 归档日志文件的结构? 重做日志文件. 归档日志文件工作过程? 管理重做日志文件. 归档日志 一.在线重做日志文件 1.重做日志概述 在数据库的使用过程中,可能会出现断电.死机等意外情况,在出现意外时如何保证数据的有效性.一致性和完整性?Oracle 作为大型关系数据库管理系统,必须要通过合理的机制确保在任何情况下都不会出现数据丢失,通过合理的配置重做日志可以实现并完成这项任务.利用重做日志文件,在数据库发生故障时,可以重新处理亊务.每个亊务在处理的同时也会写入重做日志

log4j2按日期按级别的日志文件归档(每天一个文件)

参考地址:http://mycuteblog.com/log4j2-xml-configuration-example/ <?xml version="1.0" encoding="UTF-8"?> <!--设置log4j2的自身log级别为warn --> <configuration status="warn"> <properties> <Property name="log_

ora-01033,ORA-16038

ORA-01033: ORACLE initialization or shutdown in progress 1.进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID:2.运行sqlplus "/as sysdba" SQL>shutdown immediate 停止服务 SQL>startup 启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号 SQL>shutdown immediate 再次停止服务 SQL>st