我們都知道在controlfile中記錄着每一個archivelog文件的相關信息,當然們在OS下把這些物理文件delete掉後,在我們的controlfile中仍然記錄着這些archivelog文件的相關信息,在oracle的OEM管理器中有可視化的日誌展現出,當我們手工清除 archive目錄下的文件後,這些記錄並沒有被我們從controlfile中清除掉,也就是oracle並不知道這些文件已經不存在了,這時候我們要做手工的清除的話,下面我經過實驗,可以嘗試這種方法:
1. 進入rman
C:\User\Administrator>rman
2. connect target /
RMAN> connect target /
3.查看歸檔日誌的狀態
RMAN> list archivelog all;
4.手工刪除歸檔日誌文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
SYSDATA-7,表明當前的系統時間7天前
這樣做仍然會在RMAN裏留下未管理的歸檔文件,它的作用還是相當於直接用操作系統命令將歸檔日誌文件直接刪除,而ORACLE控制文件並不知道,因此仍需要在RMAN裏執行下面2條命令:
crosscheck archivelog all;
delete expired archivelog all;
5.退出rman
RMAN> exit
6.查看歸檔日誌佔有率
退出RMAN
輸入sqlplus連接oracle
然後SQL> select * From v$flash_recovery_area_usage; ---------這裏可以看到閃回恢復區裏的空間佔有率情況:
select * from v$recovery_file_dest; --查看歸檔日誌的存放地址;