ORA-19809: 超出了恢復檔案數的限制故障處理例項

genweihua發表於2015-10-18

SQL> startup
ORACLE instance started.

Total System Global Area  263049216 bytes
Fixed Size                  2212448 bytes
Variable Size             234884512 bytes
Database Buffers           20971520 bytes
Redo Buffers                4980736 bytes
Database mounted.
ORA-03113: 通訊通道的檔案結尾
程式 ID: 5801
會話 ID: 1 序列號: 5

[oracle@web trace]$ tail -f alert_orcl.log 
ORA-19809: 超出了恢復檔案數的限制
ORA-19804: 無法回收 44062720 位元組磁碟空間 (從 4070572032 限制中)
ARCH: Error 19809 Creating archive log file to '/opt/oracle/flash_recovery_area/ORCL/archivelog/2011_11_04/o1_mf_1_482_%u_.arc'
Errors in file /opt/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_6141.trc:
ORA-16038: 日誌 2 sequence# 482 無法歸檔
ORA-19809: 超出了恢復檔案數的限制
ORA-00312: 聯機日誌 2 執行緒 1: '/opt/oracle/oradata/orcl/redo02.log'
USER (ospid: 6141): terminating the instance due to error 16038
Fri Nov 04 15:28:21 2011
Instance terminated by USER, pid = 6141
Fri Nov 04 15:30:35 2011

透過這裡的錯誤資訊,可以看到是歸檔歸檔不了了,馬上檢視歸檔的路徑
SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列     23
下一個存檔日誌序列   25
當前日誌序列           25

用的是DB_RECOVERY_FILE_DEST的路徑了。估計又是以前遇到過的錯誤的。
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
----------- ---------- ----------------- ---------------
/opt/oracle/flash_recovery_area
 4070572032 4068022784                 0             100

這裡已經把所有的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
指定retention的策略,使得archivelog不至於這樣增加

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歸檔日誌空間的限制

在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

轉載地址:http://blog.csdn.net/mengxiang209/article/details/6936096

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22275400/viewspace-1814828/,如需轉載,請註明出處,否則將追究法律責任。

相關文章