Oracle在10g中引入了閃回區(flash recovery area)的概念,用以簡化和完善備份,但是閃回區同樣需要精心規劃和設定,否則一樣會遇到問題,從Oracle10gR2開始,Oracle還提供了一個新的視圖V$FLASH_RECOVERY_AREA_USAGE,用以監控閃回區空間的耗用情況。本文簡要介紹Oracle閃回區的警報和空間維護機制。
每次RMAN在閃回區(flash recovery area)建立檔案時,會同時更新可刪除檔案清單。當閃回區存在空間壓力時,Oracle會自動從閃回區中刪除廢棄檔案,當沒有更多空間可以釋放時,Oracle會給出空間壓力警報。
當空間使用達到100%,資料庫將會因為無法歸檔等原因掛起。
閃回區的大小由:db_recovery_file_dest_size 參數指定。
路徑由: db_recovery_file_dest 參賽指定。
SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /msflsh db_recovery_file_dest_size big integer 65G |
這兩個參數都是動態參數。
當閃回區空間使用達到85%時,Oracle會發出警告:
*** SERVICE NAME:(SYS$BACKGROUND) 2005-12-03 13:20:16.864 *** SESSION ID:(156.1) 2005-12-03 13:20:16.864 ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 85.00% used, and has 8050696704 remaining bytes available. |
當空間使用達到97%的時候,Oracle會發出Critical的警報:
ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 97.02% used, and has 1602355712 remaining bytes available. |
當空間使用達到100%的時候,資料庫無法歸檔就會掛起了:
ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available. |
接下來就是這樣的錯誤了:
ORA-19809: limit exceeded for recovery files ORA-19804: cannot reclaim 9563136 bytes disk space from 53687091200 limit *** 2005-12-04 13:59:14.011 52278 kcrr.c ARC1: Error 19809 Creating archive log file to '/msflsh/MMSDB/archivelog/2005_12_04/o1_mf_1_17108_%u_.arc' *** 2005-12-04 13:59:14.011 50725 kcrr.c kcrrfail: dest:10 err:19809 force:0 blast:1 *** 2005-12-04 13:59:14.012 52278 kcrr.c ARC1: All standby destinations failed; successful archival assumed *** 2005-12-04 13:59:14.026 16432 kcrr.c ORA-16038: log 1 sequence# 17108 cannot be archived |
注意這裡的一個詞:reclaim,Oracle用了回收在這裡,意思就是已經沒有空間可以回收以滿足歸檔的空間需求了。
當Oracle在reclaim空間時,你可能看到如下類似資訊:
Sat Oct 1 21:20:54 2005 Deleted Oracle managed file +ORADG/danaly/backupset/2006_09_07/ncsnf0_tag20060907t192619_0.274 Deleted Oracle managed file +ORADG/danaly/archivelog/2006_09_08/thread_1_seq_35.276.600588049 Sun Oct 2 05:46:40 2005 Thread 1 advanced to log sequence 80 Current log# 2 seq# 80 mem# 0: +ORADG/danaly/onlinelog/group_2.260.600173851 Current log# 2 seq# 80 mem# 1: +ORADG/danaly/onlinelog/group_2.261.600173853 Sun Oct 2 05:46:41 2005 Deleted Oracle managed file +ORADG/danaly/archivelog/2006_09_08/thread_1_seq_36.277.600600509 Deleted Deleted Oracle managed file +ORADG/danaly/archivelog/2006_09_09/thread_1_seq_38.279.600674413 |