1. 程式人生 > >ORACLE 正確刪除歸檔日誌的方法

ORACLE 正確刪除歸檔日誌的方法

我們都知道在controlfile中記錄著每一個archivelog檔案的相關資訊,當然們在OS下把這些物理檔案delete掉後,在我們的controlfile中仍然記錄著這些archivelog檔案的相關資訊,在oracle的OEM管理器中有視覺化的日誌展現出,當我們手工清除 archive目錄下的檔案後,這些記錄並沒有被我們從controlfile中清除掉,也就是oracle並不知道這些檔案已經不存在了,這時候我們要做手工的清除的話,下面我經過實驗,可以嘗試這種方法:

1.    進入rman 

[[email protected] ~]$ /u01/app/oracle/product/10.2.0/db/bin/rman
 

2.    connect target /

RMAN> connect target /
 

3.    crosscheck archivelog all;
crosscheck archivelog all:驗證的是DB的歸檔日誌即log_archive_dest引數指定位置的檔案,當手工刪除了歸檔日誌以後,Rman備份會檢測到日誌缺失,從而無法進一步繼續執行Rman備份,所以此時需要手工執行crosscheck過程,檢視所有的歸檔日誌檔案是否都是正常的然後再來執行Rman備份。
 

4.    delete expired archivelog all;
這時候我們再去OEM中就看不到這些日誌檔案了,如果你的從來沒有做過這個動作的話,我們可以比較這個動作前的controlfile和動作後的controlfile的檔案大小


ORACLE正確刪除歸檔並回收空間的方法:

       一個ORACLE歸檔日誌經常滿,表現為/archivelog這個檔案空間佔用100%大家總是抱怨ORACLE為何沒有歸檔維護工具,很多人直接刪除了事,錯了,ORACLE有,而且很智慧,可以正確的刪除歸檔和 FLASHBACK,不過切記,ORACLE歸檔日誌對於ORACLE的資料恢復和備份非常重要,不到萬不得已不要刪除歸檔日誌。
 

刪除歸檔日誌的過程:

以ORACLE使用者身份登入到資料庫伺服器主機或通過網路連線


進入ORACLE資料備份工具:
/u01/app/oracle/product/10.2.0/db/bin/rman target/
或/u01/app/oracle/product/10.2.0/db/bin/rman target/@DTHXRAC1
 

在命令窗口裡面執行:
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
說明:
SYSDATA-7,表明當前的系統時間7天前,before關鍵字表示在7天前的歸檔日誌,如果使用了閃回功能,也會刪除閃回的資料。
 

同樣道理,也可以刪除從7天前到現在的全部日誌,不過這個命令要考慮清楚,做完這個刪除,最好馬上進行資料庫全備份
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
UNIX/LINUX下也可以通過FIND找到7天前的歸檔資料,使用EXEC子操作刪除
find /archivelog -xdev -mtime +7 -name "*.dbf" -exec rm -f {}  \;
 

這樣做仍然會在RMAN裡留下未管理的歸檔檔案,它的作用還是相當於直接用作業系統命令將歸檔日誌檔案直接刪除,而ORACLE控制檔案並不知道,因此仍需要在RMAN裡執行下面2條命令:
crosscheck archivelog all;
delete expired archivelog all;
所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項上做很多操作,實現更復雜的功能。
 

簡要介紹一下report obsolete命令:


使用report obsolete命令報告過期備份

RMAN> report obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of obsolete backups and copies
Type                 Key    Completion Time    Filename/Handle
--------------------   ------   ------------------    --------------------
Backup Set           125    01-NOV-04
Backup Piece         125    01-NOV-04          /data1/oracle/orabak/full_1_541045804
Backup Set           131    04-NOV-04
Backup Piece         131    04-NOV-04          /data1/oracle/orabak/full_AVATAR2_20041104_131
....
Backup Set           173    06-DEC-04
Backup Piece         173    06-DEC-04          /data1/oracle/orabak/full_AVATAR2_20041206_173
Backup Set           179    11-DEC-04
Backup Piece         179    11-DEC-04          /data1/oracle/orabak/arch544588206.arc
.....
 
Backup Piece         189    17-DEC-04          /data1/oracle/orabak/arch545106606.arc
Backup Set           190    17-DEC-04
Backup Piece         190    17-DEC-04          /data1/oracle/orabak/arch545106665.arc
Backup Set           191    20-DEC-04
Backup Piece         191    20-DEC-04          /data1/oracle/orabak/arch_AVATAR2_20041220_194
Archive Log          2973   20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2985.dbf
Archive Log          2971   20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2984.dbf
.....
Archive Log          2705   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2717.dbf
Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf
Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf
Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf
 

使用delete obsolete命令刪除過期備份:


RMAN> delete obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
 
Deleting the following obsolete backups and copies:
Type                 Key    Completion Time    Filename/Handle
 
--------------------  ------     ------------------    --------------------
Backup Set           125    01-NOV-04
Backup Piece         125    01-NOV-04          /data1/oracle/orabak/full_1_541045804
....
Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf
Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf
Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf
Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241
.....
deleted archive log
archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268
deleted archive log
archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659
Deleted 286 objects
 

RMAN> crosscheck archivelog all;
allocated channel: ORA_DISK_1
 
channel ORA_DISK_1: sid=9 devtype=DISK
validation succeeded for archived log
archive log filename=/archivelog1/1_615_737652750.dbf recid=928 stamp=750848535
validation succeeded for archived log
archive log filename=/archivelog1/1_616_737652750.dbf recid=930 stamp=750851615
Crosschecked 2 objects