Oracle
歸檔日誌填滿快速恢復區 (FRA) 空間
我被雇用來填補我還沒有準備好填補的 DBA 職位,雖然培訓讓我到達那裡,但我正在接近一個潛在的問題。
我的 oracle 11g 數據庫的閃回恢復區 (FRA) 快要滿了(還剩 2.5%)。因為我們進行實時備份,所以它處於 ARCHIVELOG 模式(至少這是我被告知的原因)。我們已經通過企業管理器清除了所有不需要的備份,但存檔日誌仍然佔用了超過 50% 的已分配 FRA 空間。是否可以刪除一些較舊的存檔日誌以釋放空間?伺服器仍然保存幾個月前的日誌,而且我們真的不需要那麼遠的備份。
如果我可以刪除它們,最好的方法是什麼?
Oracle 會自動刪除過時的文件。通常,您不必手動刪除任何內容。
RMAN 維護的一個重要部分是刪除不再需要的備份。如果配置了快速恢復區,那麼數據庫會自動刪除該區域內不需要的文件
首先,確定您是否空間不足。例如使用以下查詢(包括範例輸出):
SELECT * FROM V$RECOVERY_FILE_DEST; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES -------------- ----------- ---------- ----------------- --------------- /mydisk/rcva 5368709120 109240320 256000 28
如果空間不足,則必須減少保留策略或增加 FRA 的大小。
我強烈建議為此編寫一個小型 RMAN 腳本。像這樣的東西應該工作:
run { allocate channel "dsk1" device type disk; allocate channel "dsk2" device type disk; crosscheck backup; crosscheck archivelog all; delete noprompt expired backup; delete noprompt expired archivelog all; report obsolete recovery window of 7 days; delete noprompt obsolete recovery window of 7 days; backup as compressed backupset archivelog all; delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk; }
解釋:
allocate channel <TAG> device type disk;
這些行是可選的,但如果您通過多個物理通道連接到儲存,則允許您分配多個通道
crosscheck backup; crosscheck archivelog all;
這些交叉檢查行將根據儲存內容檢查實際的 RMAN 清單(在控製文件中)。那些不再儲存的備份和/或存檔日誌將被標記為“已過期”
delete noprompt expired backup; delete noprompt expired archivelog all;
這些將刪除儲存中不匹配的所有庫存條目。
report obsolete recovery window of 7 days;
此行會將不再需要將數據庫還原到 7 天前的一致資產的任何備份文件標記為“已過時”
delete noprompt obsolete recovery window of 7 days;
此命令刪除所有標記為 ‘OBSOLETE’ 的文件
backup as compressed backupset archivelog all;
此命令將所有目前存檔備份為壓縮備份集。
delete noprompt archivelog until time 'sysdate-1' backed up 1 times to device type disk;
此命令刪除所有已備份的 1 天以前的檔案。
希望這對你有幫助!