ORA-19809: 超出了恢复文件数的限制故障处理实例
SQL> startup Total System Global Area 263049216 bytes [oracle@web trace]$ tail -f alert_orcl.log 通过这里的错误信息,可以看到是归档归档不了了,马上查看归档的路径 用的是DB_RECOVERY_FILE_DEST的路径了。估计又是以前遇到过的错误的。 ORA-19804: cannot reclaim string bytes disk space from string limit 基本上的原因是,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 这里已经把所有的db_recovery_file_dest的容量都占完了。 解决方法:删除多余的归档文件。然后设置较大的db_recovery_file_dest_size。 删除多余的归档文件 打开RMAN rman target / RMAN>crosscheck archivelog all; -- 运行这个命令可以把无效的expired的archivelog标出来。 RMAN>delete expired archivelog all; -- 直接全部删除过期的归档日志。 RMAN>delete noprompt archivelog until time "sysdate -3"; -- 也可以直接用一个指定的日期来删除。 重新打开数据库: SQL> alter database open; Database altered. action RMAN>configure retention policy to recovery window of 7 days; RMAN>configure retention policy to redundancy 3; SQL>alter system db_recovery_file_dest_size=4G scope=both; 把archivelog_dest指定到没有限制的地方 SQL>alter system log_archive_dest='/home/oracle';
在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |