Oracle刪除歸檔日志使我們經常會用到的操作,下面就為您詳細介紹Oracle刪除歸檔日志的實現方法,希望對您能夠有所幫助。
當Oracle 歸檔日志滿了後,將無法正常登入Oracle,需要刪除一部分歸檔日志才能正常登入Oracle。
一、首先刪除歸檔日志物理文件,歸檔日志一般都是位於archive目錄下,AIX系統下文件格式為“1_17884_667758186.dbf”,建議操作前先對數據庫進行備份,刪除時至少保留最近幾天的日志用於數據庫恢復。
二、把歸檔日志的物理文件刪除後,我們就可以正常登入Oracle了,但是還沒完全把歸檔日志刪除干淨,Oracle的controlfile中仍然記錄著這些archivelog的信息,在Oracle的OEM管理器中有可視化的日志展現出,當我們手工清除archive目錄下的文件後,這些記錄並沒有被我們從controlfile中清除掉,接下去我們要做的就是這個工作。
我們利用RMAN進行刪除操作,Oracle刪除歸檔日志操作步驟如下:(WIN客戶端系統為例)
1.指定數據庫實例
C:\Documents and Settings\Administrator>SET Oracle_SID =orcl
2.連接數據庫
C:\Documents and Settings\Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看歸檔日志的狀態
RMAN> list archivelog all;
4.手工刪除歸檔日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
說明:
SYSDATA-7,表明當前的系統時間7天前,before關鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會刪除閃回的數據。
同樣道理,也可以刪除從7天前到現在的全部日志,不過這個命令要考慮清楚,做完這個刪除,最好馬上進行全備份數據庫
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 刪除從7天前到現在的全部日志,慎用
UNIX/Linux下也可以通過FIND找到7天前的歸檔數據,使用EXEC子操作刪除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
這樣做仍然會在RMAN裡留下未管理的歸檔文件
仍需要在RMAN裡執行下面2條命令
crosscheck archivelog all;
delete expired archivelog all;
所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項上做很多操作,實現更復雜的功能。