解決ORA-00257:archiver error.Connect internal only, until freed

pxbibm發表於2014-06-06
今日早晨在客戶反饋不能登陸系統了,檢視oracle日誌。發現如下錯誤ORA-00257: archiver error. Connect internal only, until freed。
該錯誤是由於歸檔日誌滿了,造成的。
檢視了下V$FLASH_RECOVERY_AREA_USAGE,看看歸檔目錄使用的情況。果然是歸檔滿了。
SQL> SELECT * FROM  V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE                   0                         0               0
ONLINELOG                     0                         0               0
ARCHIVELOG                  99.9                         0               255
BACKUPPIECE                   0                         0               0
IMAGECOPY                     0                         0               0
FLASHBACKLOG                  0                         0               0
注:可以看出,ARCHIVELOG日誌已經達到99.9%了。造成歸檔滿的原因是因為有一個使用者在做大量更新操作,由於更新操作產生大量重做日誌,
歸檔日誌切換頻繁。解決方法是要把大量歸檔日誌清除掉!
有兩種方式可以解決該問題。
一使用RMAN清除歸檔日誌。
二修改閃回恢復區的大小DB_RECOVERY_FILE_DEST_SIZE

第一種使用RMAN清除歸檔日誌。
C:\Documents and Settings\Administrator>rman
RMAN> connect target system/or@devdb
注:system為oracle使用者,myoracle為oracle使用者密碼,orcl為連線的名稱SID。
RMAN> crosscheck archivelog all;
RMAN> delete noprompt expired archivelog all;
注:刪除過期的歸檔
這樣就把歸檔檔案刪除了。再進入sqlplus 檢視ARCHIVELOG日誌使用率!
 
第二種方法就是增大閃回恢復區的大小。如下:
SQL>alter system set DB_RECOVERY_FILE_DEST_SIZE=8G;
在歸檔資料中要制定備份策略。以免造成該問題。
configure retention policy to recovery window of 15 days;
或者在備份時刪除日誌資訊。
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; //刪除七天前的歸檔   
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7'; //刪除七天到現在的歸檔   

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

2014.06.06 09:49
share you knowledge with the world.

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

相關文章