ORA-19815,ORA-19809 :limit exceeded for recovery files

    数据库重新启动的时候,收到了ORA-19815的错误。从错误的提示来看,是由于闪回区的空间被填满导致无法成功启动。这种情形我们通常考虑的是清除归档日志,那就直接在OS层面rm了,真的是这样吗?客官,如果你有相同的情形,接下往下看......

 

1、故障现象
idle> startup
ORACLE instance started.

Total System Global Area  238530560 bytes
Fixed Size                  1335724 bytes
Variable Size             155192916 bytes
Database Buffers           75497472 bytes
Redo Buffers                6504448 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 3562
Session ID: 125 Serial number: 5

Fri Sep 13 16:28:15 2013
ARC3 started with pid=27, OS id=4231
Errors in file /u02/database/usbo/diag/rdbms/usbo/usbo/trace/usbo_ora_4205.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 4294967296 bytes is 100.00% used, and has 0 remaining bytes available.
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.
************************************************************************
Errors in file /u02/database/usbo/diag/rdbms/usbo/usbo/trace/usbo_ora_4205.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 41592320 bytes disk space from 4294967296 limit
ARCH: Error 19809 Creating archive log file to '/u02/database/usbo/fr_area/USBO/archivelog/2013_09_13/o1_mf_1_12_%u_.arc'
Errors in file /u02/database/usbo/diag/rdbms/usbo/usbo/trace/usbo_ora_4205.trc:
ORA-16038: log 3 sequence# 12 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 3 thread 1: '/u02/database/usbo/oradata/redo03.log'
USER (ospid: 4205): terminating the instance due to error 16038
System state dump is made for local instance
System State dumped to trace file /u02/database/usbo/diag/rdbms/usbo/usbo/trace/usbo_diag_4162.trc
Fri Sep 13 16:28:16 2013
Trace dumping is performing id=[cdmp_20130913162815]
Instance terminated by USER, pid = 4205

运行环境:
[oracle@linux1 ~]$ cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m

[oracle@linux1 ~]$ sqlplus -V

SQL*Plus: Release 11.2.0.1.0 Production

 

2、故障分析
#从上面的错误消息大致可以判断闪回区空间不够用了"100.00% used"
#下面我们来看看错误的解决方案是是什么
[oracle@linux1 usbo]$ oerr ora 19815
19815, 00000, "WARNING: %s of %s bytes is %s%% used, and has %s remaining bytes available."
// *Cause: DB_RECOVERY_FILE_DEST is running out of disk space.
// *Action: One of the following:
//          1. Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
//          2. Backup files to tertiary device using RMAN.
//          3. Consider changing RMAN retention policy.
//          4. Consider changing RMAN archived log deletion policy.
//          5. Delete files from recovery area using RMAN.

[oracle@linux1 usbo]$ oerr ora 19809
19809, 00000, "limit exceeded for recovery files"
//*Cause: The limit for recovery files specified by the
//        DB_RECOVERY_FILE_DEST_SIZE was exceeded.
// *Action: There are five possible solutions:
//          1) Take frequent backup of recovery area using RMAN.
//          2) Consider changing RMAN retention policy.
//          3) Consider changing RMAN archived log deletion policy.
//          4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
//          5) Delete files from recovery area using RMAN.

#上面两个ORA错误的解决方案基本上相同,修改RMAN保留策略,使用RMAN删除归档日志及归档文件等,也可以通过增加调整闪回区的大小

 

3、故障解决
#我们来看看当前数据库的归档日志的大小
[oracle@linux1 archivelog]$ du -sh *
202M    2013_09_09
39M     2013_09_10
4.0K    2013_09_11
4.0K    2013_09_12
[oracle@linux1 archivelog]$ cd /u02/database/usbo

#下面查看当前数据库对应闪回区的大小,仅仅242M
[oracle@linux1 usbo]$ du -sh *
1.1G    adump
150M    diag
242M     fr_area
4.7G    oradata

#下面我们尝试直接在OS层面删除归档日志
[oracle@linux1 usbo]$ cd /u02/database/usbo/fr_area/USBO/archivelog
[oracle@linux1 archivelog]$ rm -rf *

#删除完毕后再次启动依旧收到上面的错误提示,所以我们必须根据Oracle给出的解决方案来实施
#也就是说Oracle根本认为其闪回区的空间根本没有得到释放

[oracle@linux1 ~]$ sqlplus / as sysdba

idle> startup nomount;

idle> show parameter db_reco

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u02/database/usbo/fr_area
db_recovery_file_dest_size           big integer 4G

idle> alter system set db_recovery_file_dest_size=5g;

idle> alter database mount;

idle> alter database open;

#   Author : Leshami
#   Blog   : http://blog.csdn.net/leshami

idle> SET LINES 100
idle> COL name FORMAT a60
idle> SELECT name, FLOOR (space_limit / 1024 / 1024) "Size MB", CEIL (space_used / idle> 024 / 1024) "Used MB"
  2      FROM v$recovery_file_dest
  3  ORDER BY name
  4  /

NAME                                                            Size MB    Used MB
------------------------------------------------------------ ---------- ----------
/u02/database/usbo/fr_area                                         5120       4197

#从上面的查询可知,Oracle认为闪回区已经达到了4197MB,尽管OS层面已经删除了文件,但Oracle并不知道,因此从RMAN来着手

[oracle@linux1 ~]$ rman target /
connected to target database: USBO (DBID=3454448158)

RMAN> crosscheck archivelog all;

RMAN> delete noprompt archivelog all;

#如果你的archive log 不能够删除,可以考虑Oracle给出的解决方案,比如删除冗余的数据备份,修改保留策略等等
#再次在SQL*Plus查询,其使用空间已经只有2MB
#关于归档日志的清除,可以参考: Oracle RMAN 清除归档日志idle > SELECT name, FLOOR (space_limit / 1024 / 1024) "Size MB", CEIL (space_used / 1024 / 1024) "Used MB"
  2      FROM v$recovery_file_dest
  3  ORDER BY name
  4  /

NAME                                                            Size MB    Used MB
------------------------------------------------------------ ---------- ----------
/u02/database/usbo/fr_area                                         5120          2

 

   

更多参考

有关Oracle RAC请参考
     使用crs_setperm修改RAC资源的所有者及权限     使用crs_profile管理RAC资源配置文件     RAC 数据库的启动与关闭     再说 Oracle RAC services     Services in Oracle Database 10g     Migrate datbase from single instance to Oracle RAC     Oracle RAC 连接到指定实例     Oracle RAC 负载均衡测试(结合服务器端与客户端)     Oracle RAC 服务器端连接负载均衡(Load Balance)     Oracle RAC 客户端连接负载均衡(Load Balance)     ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
     ORACLE RAC 监听配置 (listener.ora tnsnames.ora)     配置 RAC 负载均衡与故障转移     CRS-1006 , CRS-0215 故障一例 
     基于Linux (RHEL 5.5) 安装Oracle 10g RAC
     使用 runcluvfy 校验Oracle RAC安装环境

有关Oracle 网络配置相关基础以及概念性的问题请参考:
     配置非默认端口的动态服务注册
     配置sqlnet.ora限制IP访问Oracle     Oracle 监听器日志配置与管理
     设置 Oracle 监听器密码(LISTENER)     配置ORACLE 客户端连接到数据库

有关基于用户管理的备份和备份恢复的概念请参考
     Oracle 冷备份     Oracle 热备份     Oracle 备份恢复概念     Oracle 实例恢复     Oracle 基于用户管理恢复的处理     SYSTEM 表空间管理及备份恢复     SYSAUX表空间管理及恢复     Oracle 基于备份控制文件的恢复(unsing backup controlfile)

有关RMAN的备份恢复与管理请参考
     RMAN 概述及其体系结构     RMAN 配置、监控与管理     RMAN 备份详解     RMAN 还原与恢复     RMAN catalog 的创建和使用     基于catalog 创建RMAN存储脚本     基于catalog 的RMAN 备份与恢复     RMAN 备份路径困惑     使用RMAN实现异机备份恢复(WIN平台)     使用RMAN迁移文件系统数据库到ASM     linux 下RMAN备份shell脚本     使用RMAN迁移数据库到异机

有关ORACLE体系结构请参考
     Oracle 表空间与数据文件     Oracle 密码文件     Oracle 参数文件     Oracle 联机重做日志文件(ONLINE LOG FILE)     Oracle 控制文件(CONTROLFILE)     Oracle 归档日志     Oracle 回滚(ROLLBACK)和撤销(UNDO)     Oracle 数据库实例启动关闭过程     Oracle 10g SGA 的自动化管理     Oracle 实例和Oracle数据库(Oracle体系结构) 

时间: 2024-10-31 13:47:35

ORA-19815,ORA-19809 :limit exceeded for recovery files的相关文章

测试-OJ上题目总是Output Limit Exceeded, 有原题, 有我的代码,求大神赐教。

问题描述 OJ上题目总是Output Limit Exceeded, 有原题, 有我的代码,求大神赐教. OJ上题目总是Output Limit Exceeded(基础新手题), 有原题, 有我的代码,求大神赐教. 谢谢 题目: Description 某多项式(polynomial)的描述如下: 1 - 1/2 + 1/3 - 1/4 1/5 - 1/6 + ... 现在请你求出该多项式的前n项的和. Input 输入数据由2行组成,首先是一个正整数T,表示测试用例的个数. 第二行包含T个正整

oracle双机热备,hibernate的配置以及listener.ora和tnsname.ora的配置

问题描述 oracle双机热备一台IP:172.16.0.1,虚拟ip:10.10.10.10.另一台IP:172.16.0.2,虚拟IP:10.10.10.11.请问:listener.ora和tsnnames.ora应该如何配置,以及hibernate如何配置.高手请赐教.调好立刻给分. 解决方案 解决方案二:关注....

java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性能也不好,gc时间消耗的较多.解决这种问题两种方法是,增加参数,- XX:-UseGCOverheadLimit,关闭这个特性,同时增加heap大小,-Xmx1024m.坑填了,but why? OOM大家都知道,就是JVM内存溢出了,那GC overhead limit exceed呢? GC o

RAC环境listener.ora和tnsnames.ora配置总结

RAC环境下面如果LISTENER.ORA和TNSNAMES.ORA没有配置好的话最常见的会出现 ora-12545 异常: 为了达到更好的使用目的,这里做一下总结: 首先,参考书 Oracle? Database Net Services Administrator's Guide Oracle? Database Net Services Reference 在6节 Local Naming Parameters (tnsnames.ora) 有一句话比较重要 Do not set the 

c语言-关于C语言OJ的一道题:Time Limit Exceeded

问题描述 关于C语言OJ的一道题:Time Limit Exceeded hihoCoder上的一道关于KMP算法的一道题,题目描述如下: #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:"小Hi和小Ho,你们能不能够判断一段文字(原串)里面是

解决File size limit exceeded 错误的方法_php技巧

昨日遇到一个问题,使用Yii框架编写php脚本,将db中100多万的数据导出,运行,成功. 但是在 运行到第 49万条时,脚本终止,提示错误"File size limit exceeded",遂google之,原来是某个文件大小超过系统限制.笔者第一反应,日志文件写满了???赶忙查看 log,居然只有几十K !!! 那么这个 "大文件"在哪里呢? 开始分析,不可能是Yii框架的问题,此乃linux操作系统异常问题与框架无光,也不是 日志文件大小,仔细查看了所有设置

[Mon Feb 10 15:21:06 2014] [notice] child pid 7101 exit signal File size limit exceeded (25)

今天遇到的问题: LAMP的LOG里报如下错误. 然后IE和FIREFOX里显示连接被重置或是无法访问. 但自己建一个正常的PHP测试探针倒可以. 原来是PHP错误日志太多,无法写入LOG导致. [root@localhost logs]# tail error_log [Mon Feb 10 15:21:06 2014] [notice] child pid 7101 exit signal File size limit exceeded (25) [Mon Feb 10 15:21:06

Hive优化Hive Multi Insert 引起的GC overhead limit exceeded笔记

当你有这么个需求从某张hive表里做各类统计,完了之后落到各个分类的统计表里存储.自然而然我们会想到使用hive的Multi Insert 语句来实现.因为使用Multi Insert 语句可以避免多次扫描同一份原始表数据.本文记录一次使用Multi Insert 语句出现的GC overhead limit exceeded问题. 问题描述 我有这么个需求从某个域名相关的表里统计各个维度的数据落到相应的表里面.下面是我的SQL实例代码: + expand source 上述语句会产生6个Job

Oracle环境变量、监听listener.ora、tnsnames.ora、sqlnet.ora配置

Oracle环境变量.监听listener.ora.tnsnames.ora.sqlnet.ora配置 点击(此处)折叠或打开 NLS_DATE_FORMAT=YYYY-MM-DD HH24:mi:ss NLS_LANG=AMERICAN_CHINA.ZHS16GBK ORACLE10G=D:\Program files\app\oracle\product\10.2.0\db_1 ORACLE11G=D:\Program files\app\oracle\product\11.2.0.1\db