天天看點

如何正确删除Oracle 歸檔日志檔案

當Oracle中的歸檔日志空間滿時,則需要把它清空,否則将會影響資料庫正常運作,

将無法正常登入ORACLE,需要删除一部分歸檔日志才能正常登入ORACLE。

一、首先删除歸檔日志實體檔案,歸檔日志一般都是位于archive目錄下,在Oracle 10g中AIX系統下檔案格式為“1_17884_XXX.dbf”,建議操作前先對資料庫進行備份,删除時至少保留最近幾天的日志用于資料庫恢複。

二、把歸檔日志的實體檔案删除後,我們就可以正常登入ORACLE了,但是還沒完全把歸檔日志删除幹淨,ORACLE的controlfile中仍然記錄着這些archivelog的資訊,在oracle的OEM管理器中有可視化的日志展現出,當我們手工清除archive目錄下的檔案後,這些記錄并沒有被我們從controlfile中清除掉,接下去我們要做的就是這個工作。

1.指定資料庫執行個體

登入資料庫

2.連接配接資料庫

>RMAN TARGET / --由于沒有使用catalog 隻能nocatalog方式登入

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; 

5、再次進行手工全庫備份

backup database

同時備份控制檔案、參數檔案、歸檔日志

6、在使用report obsolete指令報告過期備份

7、再使用delete obsolete指令删除過期備份,若不能删除,可以再加一個參數 force強制删除

本文轉自xiaocao1314051CTO部落格,原文連結:http://blog.51cto.com/xiaocao13140/1970940 ,如需轉載請自行聯系原作者