`
longgangbai
  • 浏览: 7343699 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORA-19809: 超出了恢复文件数的限制故障处理实例

 
阅读更多
 今天对数据进行RMAN备份时候,保存,在网上查询信息如下:
估计又是以前遇到过的错误的。
Oracle官方的有关19809的信息
ORA-19809: limit exceeded for recovery files 
Cause: The limit for recovery files specified by the DB_RECOVERY_FILE_DEST_SIZE was exceeded. 
Action: The error is accompanied by 19804. See message 19804 for further details.

ORA-19804: cannot reclaim string bytes disk space from string limit 
Cause: Oracle cannot reclaim disk space of specified bytes from the DB_RECOVERY_FILE_DEST_SIZE limit. 
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 archivelog deletion policy.
4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE. 
5) Delete files from recovery area using RMAN.

这里是官方提供的信息和解决方案了,以前遇过这个错误,还记得是怎么搞定的吗

当然记得,经历是最好的学习方式。这样的错误恢复当然是记得怎么搞的的哟。

基本上的原因是,db_recovery_file_desc有size限制,默认是2G,如果用户没有设置过的话,应该就是这里的归档的文件超过了这个大小,而导致归档失败了,

先查看一下情况吧

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     23

下一个存档日志序列   25

当前日志序列           25

SQL> select * from v$recovery_file_dest;

NAME

----------------------------------------------------------------

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

----------- ---------- ----------------- ---------------

F:developeroracleproduct10.2.0 lash_recovery_area

2147483648 2547483848                 0               73

这里已经把所有的db_recovery_file_dest的容量都占完了。

解决方法,

删除多余的归档文件。

然后设置较大的db_recovery_file_dest_size

把log_archive_destx指定到别的地方,不要放到db_recovery_file_dest这里了

开始我们的恢复之旅吧,数据的恢复就像旅行一般,让我们在oracle的知识体系里旅游一样

删除多余的归档文件

打开RMAN

rman target /

RMAN>crosscheck archivelog all;

运行这个命令可以把无效的archivelog标准出来,这样,我们就知道哪些是expired的了

RMAN>delete expired archivelog all;

也可以直接用一个指定的日期来删除

RMAN>delete noprompt archivelog until time "sysdate -3";

我用的上面的方式 delete expired archivelog all; 低调低调

这样基本上就搞定了,数据库应该可以启动了,

试试看就知道

SQL>alter database open;

熟悉的启动的信息出来了。

不过这样完,就有点不是学习知识的态度了,因为你这个是一个治标不治本的方法,

随时客户还会因为这个问题,一个星期,一个月后找你,因为,这里的archivelog,可能又操过限制了

因为这里的archivelog还在不断的增长,既然是这样就还会出现这样的问题。

要解决他,

我们要针对着这个问题的本质动刀了。

action

指定retention的策略,使得archivelog不至于这样增加

RMAN>configure retention policy to recovery window of 7 days;

RMAN>configure retention policy to redundancy 3;

呵呵呵   客户没有使用RMAN来进行备份,下次有机会要介绍给客户,同时也多接这样一个业务,客户现在还没有因为数据崩溃而崩溃过,所以现在他还不知道这个价值,如果那天有这样一天,客户想起我给他介绍的RMAN,估计自己就会想起来找我的。 嘻嘻

指定大一些db_recovery_file_dest_size

SQL>alter system db_recovery_file_dest_size=4G scope=both;

这个方法同样,治标不治本,好比,现在现在水库泄洪,你扩大水库的size是一种方法,但是单纯靠这个方法,总有一天,还是overflow了。我们需要的应该是定期的就放一放水,增加容量,同时最好放到无限制的水库里

所以还有一个方法不要忘记了,就是把这个archivelog_dest指定到没有限制的地方

SQL>alter system log_archive_dest='F:oracleproduct10.2.0archivelog_area';

OK了

这次故障处理,没有惊心动魄,以前遇到没有整理,这次详细的整理了一下记了下来。

不过由于客户的故障不能宕机太久,所以在处理的时候,没有记录出错信息,现在的整理的过程中的错误信息和操作步骤中的一些信息,全是在自己机器中模拟出来的,如果和实例有差异,以你的机器的实际信息为主。

查看修改ORACLE10G归档日志空间的限制

在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area。对于这个路径,ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两个SQL语句去查看它的限制:
1. select * from v$recovery_file_dest;
2. show parameter db_recovery_file_dest(这个更友好直观一些)
当归档日志数量大于2G时,那么就会由于没有更多的空间去容纳更多的归档日志会报无法继续归档的错误。
如:“RA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit
ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf_1_220_0_.arc' ”这时我们可以修改它的默认限制,比如说将它增加到5G或更多,也可以将归档路径重新置到别的路径,就不会有这个限制了。 
更改限制语句如下:
alter system set db_recovery_file_dest_size=5368709102 (这里为5G 5x1024x1024x1024=5G)
alter system set db_recovery_file_dest_size=10737418240
 

 

分享到:
评论

相关推荐

    oracle报错大全(珍藏版)

    当实例参数DB_BLOCK_SIZE与数据文件的块大小不匹配时触发。这可能是由于配置错误或数据库重建过程中的问题。 #### ORA-00059: DB_FILES Parameter Value Invalid 当DB_FILES参数值无效时触发。这可能是由于参数设置...

    《转载》ora-00020超出最大进程数

    在Oracle数据库系统中,"ORA-00020 超出最大进程数"是一个常见的错误,通常出现在用户尝试创建新的会话或进程时,但数据库已经达到了其配置的最大进程限制。这个错误可能会影响到数据库的正常运行,阻止用户执行查询...

    Oracle错误信息

    #### ORA-01225:超出MAXINSTANCES的限制 当实例的数量超过了允许的最大值时出现此错误。这通常与数据库实例配置有关。 #### ORA-01226:文件A与另一个文件不一致 此错误提示两个文件之间存在不一致性,这可能是...

    Oracle错误代码

    #### ORA-00018: 超出最大会话数 表示数据库实例中并发的会话数量达到了最大限制。这可能是因为配置的`OPEN_SESSIONS`参数过小,需要增加以支持更多的并发用户。 #### ORA-00019: 超出最大会话许可数 与ORA-00018...

    Oracle所有错误

    #### ORA-00018:超出最大会话数 表示数据库当前的并发会话数量超过了配置的上限。增加`PROCESSES`参数的值可以解决此问题,但需谨慎操作,避免过度消耗系统资源。 #### ORA-00019:超出最大会话许可数 类似于ORA-...

    ORACLE错误一览表

    服务名称用于标识数据库实例,必须在初始化参数文件中正确设置。 ### ORA-00121:ȱDISPATCHERSָSHARED_SERVERS 此错误表示缺少必要的派生器(dispatcher)或共享服务器(shared server)配置。在高并发环境中,...

    oracle错误编码一览

    这可能是因为操作超出了系统的恢复能力,例如在没有足够空间进行回滚的情况下。解决此问题可能需要增加回滚段的大小,或者优化查询以减少所需的回滚资源。 ### ORA-00024: Object mode not supported 当尝试对不...

    NOARCHIVELOG模式下Oracle数据库恢复常见故障分析.pdf

    除了回滚段开销超出最大规模的问题外,还有其他常见故障,例如控制文件损坏、日志文件损坏、redo log文件损坏等。这些故障的解决方法都需要根据实际情况进行分析和处理。 三、结论 NOARCHIVELOG模式下Oracle数据库...

    oralce10启动报错!

    ”这一情况,通常涉及到数据库实例无法正常启动,这可能是由多种因素造成的,包括但不限于配置错误、系统资源限制、网络问题或数据库文件损坏等。 ### 常见原因分析 1. **监听器配置问题**:确保`listener.ora`和`...

    Oracle 11g问答题

    - 可以进行完全恢复,即使发生介质故障也能恢复数据。 - 支持数据备份策略,减少数据丢失的风险。 #### 40. DBA 处理介质失败的方法 - 使用RMAN进行备份和恢复操作。 - 检查错误日志,定位问题原因。 - 执行介质...

    oracle 10 Ora 10G 官方文档

    - Oracle 10g中的错误信息有助于诊断和解决数据库运行时遇到的问题,如ORA-00001(唯一性约束违反)、ORA-01422(精确提取超出范围)等。 - 了解这些错误代码和其背后的含义,对于DBA来说至关重要,能快速定位并...

    Oracle 面试宝典-undo.docx

    2. 实例恢复:在实例故障后,Oracle数据库通过redo日志来恢复未持久化的数据。对于未提交的事务,Oracle会根据Undo的记录进行逻辑回滚,将脏块恢复到未修改状态。 3. 提供一致性读:在并发环境中,查询可能遇到其他...

    oracle11g监听日志文件过大导致监听无法启动2

    当"Oracle11g监听日志文件过大导致监听无法启动"的问题出现时,通常意味着监听器的日志文件(listener.log)积累了大量的信息,超过了系统设定的限制或者超出可用磁盘空间,从而影响了监听器的正常运行。这个问题...

    Oracle日常维护手册

    - **扩展与最大扩展值**:确保对象的扩展策略不会超出表空间的最大限制。 - **数据库备份结果的检查**: - **无带库备份**:对于不使用磁带库的备份,验证备份文件的完整性和可恢复性。 - **带库备份**:对于...

    oracle 11g administrator’s reference

    - **故障恢复**:提供了一套自动化的故障恢复机制,减少数据库管理员的工作负担。 #### 3.2 内存管理优化 - **共享池管理**:通过优化共享池的使用方式,提高系统的响应速度。 - **缓冲区缓存调整**:智能调整缓冲...

    orscle 经验总结

    6. **故障排查**:学习如何处理Oracle数据库的常见问题,如锁定、死锁、ORA错误代码解析,以及如何使用RMAN进行故障恢复。 7. **安全性管理**:用户、角色、权限的管理,包括GRANT、REVOKE语句,以及密码策略的设定...

Global site tag (gtag.js) - Google Analytics