如何正確地刪除Archivelog:
超過(guò)10年行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營(yíng)模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,小程序制作,微信開(kāi)發(fā),APP應(yīng)用開(kāi)發(fā),同時(shí)也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營(yíng)銷和我們一樣獲得訂單和生意!
Archivelog并不能直接得從OS層直接物理刪除,因?yàn)閍rchivelog的相關(guān)信息是記錄在controlfile中的,當(dāng)物理刪除后不會(huì)改變controlfile的設(shè)置。并且在查詢相關(guān)的動(dòng)態(tài)視圖(例如v$archived_log)時(shí),該部分日志仍然標(biāo)注為存在。也就是說(shuō)Oracle并不認(rèn)為這些日志被刪除了,所以在刪除archivelog的時(shí)候,需要我們?cè)谄渌胤阶鲆恍┰O(shè)置。
一、使用RMAN清楚物理刪除后的記錄
可以使用RMAN來(lái)刪除archivelog,具體可以按以下步驟操作:
1、物理刪除archivelog
2、進(jìn)入RMAN
3、crosscheck archivelog all;
4、delete expried archivelog all;
這樣就在一些Oracle的記錄中查不到相應(yīng)的archivelog記錄了。
二、直接使用RMAN刪除archivelog
其實(shí)在RMAN中是可以使用命令直接將ARCHIVELOG刪除的,命令如下:
RMAN DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
表示刪除姿派7天以前的所有archivelog,但是這個(gè)命令的缺點(diǎn)是無(wú)法對(duì)archivelog進(jìn)行細(xì)致的劃分。
三、使用RMAN備份achivelog后刪除
這是一種最為穩(wěn)妥的方法了,使跡晌賀用RMAN備份archivelog,備份后全部刪除
backup format '/u01/arch_%T_%s_%U' archivelog all delete input;
或者
backup database plus archivelog;
注:我在庫(kù)上設(shè)置了Streams后,使用RMAN刪除archivelog會(huì)導(dǎo)致報(bào)錯(cuò)RMAN-08137: WARNING:
archive log not deleted as it is still needed. 不知道該如何解決,據(jù)說(shuō)是10.2的一個(gè)bug,如果真
是bug的話,那只能在OS層設(shè)置刪除,或用RMAN進(jìn)行強(qiáng)制刪除了。
10g之后的版本,Oracle在RMAN中內(nèi)置增加了一項(xiàng)歸檔文件的刪除策略,終于,DBA可以僅通過(guò)一項(xiàng)配置就
解決該問(wèn)題了。該策略對(duì)應(yīng)兩個(gè)值:
APPLIED ON STANDBY:設(shè)置為該值時(shí),當(dāng)通過(guò)附加的DELETE INPUT子句刪除Standby數(shù)據(jù)庫(kù)仍需要的謹(jǐn)野日志
時(shí),會(huì)提示RMAN-08137錯(cuò)誤。不過(guò)用戶仍然可以手動(dòng)地通過(guò)DELETE ARCHIVELOG方式刪除。
NONE:設(shè)置為該值時(shí),則不啟用歸檔文件的刪除策略。默認(rèn)情況下就是NONE。
例如,啟用APPLIED ON STANDBY:
RMAN CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
RMAN run
{
backup archivelog all delete input format 'ZHSVR044_%d_set=%s_piece=%p_date=%T.ARC.rmn';
}
都知道在controlfile中記錄著每一個(gè)archivelog的相關(guān)信息,當(dāng)然們?cè)贠S下把這些物理文件delete掉后,在我們的
controlfile中仍然記錄著這些archivelog的信息,在oracle的OEM管理器中有可視化的日志展現(xiàn)出,當(dāng)我們手工清除archive目錄下的文件后,這些記錄并沒(méi)有被我們從controlfile中清除掉,也就是oracle并不知道這些文件已經(jīng)不存在了!這時(shí)候我們要做手工的清除的話,下面我經(jīng)過(guò)實(shí)驗(yàn),可以嘗試這種方法:
1. 進(jìn)入rman
2. connect target /
3. crosscheck archivelog all;
4. delete expired archivelog all;
這時(shí)候我們?cè)偃EM中看就一定看不到,如果你的從來(lái)沒(méi)有做過(guò)這個(gè)動(dòng)作的話,我們可以比較從這個(gè)動(dòng)作前的controlfile后動(dòng)作后的controlfile的大小!
ORACLE正確刪除歸檔并回收空間的方法
ORACLE正確刪除歸檔并回收空間的方法
一個(gè)ORACLE歸檔日志經(jīng)常滿,表現(xiàn)為/oraarchive 這個(gè)文件空間占用100%大家一定抱怨ORACLE為何沒(méi)有歸檔維護(hù)工具,很多人直接刪除了事,錯(cuò)了,ORACLE有,而且很智能,可以正確的刪除歸檔和FLASHBACK,不過(guò)切記,ORACLE歸檔日志對(duì)于ORACLE的數(shù)據(jù)恢復(fù)和備份非常重要,不到萬(wàn)不得已不要?jiǎng)h除歸檔日志。
刪除歸檔日志的過(guò)程
以O(shè)RACLE用戶身份登錄到數(shù)據(jù)庫(kù)服務(wù)器主機(jī)或通過(guò)網(wǎng)絡(luò)連接
進(jìn)入ORACLE數(shù)據(jù)備份工具
rman target/
或rman target/@orcl
在命令窗口里面執(zhí)行
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
說(shuō)明
SYSDATA-7,表明當(dāng)前的系統(tǒng)時(shí)間7天前,before關(guān)鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會(huì)刪除閃回的數(shù)據(jù)。
同樣道理,也可以刪除從7天前到現(xiàn)在的全部日志,不過(guò)這個(gè)命令要考慮清楚,做完這個(gè)刪除,最好馬上進(jìn)行全備份數(shù)據(jù)庫(kù)
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
UNIX/LINUX下也可以通過(guò)FIND找到7天前的歸檔數(shù)據(jù),使用EXEC子操作刪除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
這樣做仍然會(huì)在RMAN里留下未管理的歸檔文件
仍需要在RMAN里執(zhí)行下面2條命令
crosscheck archivelog all;
delete expired archivelog all;
所以還不如上面的方法好用,不過(guò)用FIND的好處就是,可以在條件上,和EXEC子項(xiàng)上做很多操作,實(shí)現(xiàn)更復(fù)雜的功能
3.簡(jiǎn)要介紹一下report obsolete命令
使用report obsolete命令報(bào)告過(guò)期備份