今天在BI開發過程中,有人反映無法登入,然後試了一下,發現的確在登入PL/SQL Developer時提示歸檔器失敗。隨即檢查alert_orcl.log,發現錯誤資訊為:ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 100.00%,使用語句查詢
SELECT substr(name, 1, 30) name, space_limit AS quota,space_used AS used,space_reclaimable AS reclaimable,number_of_files AS files FROM v$recovery_file_dest ;
使用率100%,所以認定是db_recovery_file_dest目錄滿了所致。使用show parameter db_recovery_file_dest命令查詢到磁碟目錄,將不用的archive匯出,騰出磁碟空間。
再使用命令,將日誌組清空:
alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 2;
alter database clear unarchived logfile group 3;
重啟執行個體,檢查串連,成功。
另外:可以使用rman來解決此問題,具體請參閱eygle的blog http://www.eygle.com/archives/2005/03/oracle10gecieif.html
後記:
第二天一早,又發現不可用,這次的錯誤資訊是
Errors in file e:/oracle/product/10.2.0/admin/orcl/bdump/orcl_arc1_7296.trc:
ORA-16038: log 1 sequence# 674 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG'
資料庫再一次掛起。
使用rman刪除舊的到期的日誌
c:/>rman
rman>connect target sys/oracle
rman>crosscheck archivelog all;
rman>delete noprompt expired copy;
..........
rman>
執行後,檢查空間使用方式
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 8.48 0 4
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 50.69 50.36 153
已選擇6行。
SQL>alter database open
可以看到空間使用率恢複正常。
還可以通過擴大flash區大小來暫時緩解,但這種方法應屬於指標不治本。
alter system set db_recovery_file_dest_size=4G scope=both;