2009年4月27日 星期一

Windows 下刪除 archived log files

Archived log files 是當資料庫災難發生時,確保資料完整性不可獲缺的要素之一。然而,也因為 archived log files 會伴隨著 redo log switch 持續產生的特性,變成磁碟空間管理上需特別注意的問題。

一般而言,當透過 rman 執行 full/incremental backup 時,就會一併將備份完成的全部或是某一特定時間前的 archived log files 刪除。這同時也是比較建議的作法。

倘若使用 cold backup 搭配 third party 備份軟體時,archived log files 或許就需採用手動(系統排程)的方式來刪除。在 Unix-based 平台下,只需透過 find 指令搭配 ctime 或 mtime 參數便可達成。但是同樣的動作在 Windows 下,使用 VB Script 亦可大幅簡化執行的步驟。以下便列出執行的步驟:

Step 1:將虛線區塊內的 VB Script 存檔為 arch_del.vbs
=================================================
Const WhatchFolder = "C:\temp"
Const MaxDays = 30
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(WhatchFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
If DateDiff("d",objFile.DateCreated,now) >= MaxDays Then
objFSO.DeleteFile(objFile.Path)
End If
Next
=================================================
WhatchFolder 代表存放 archived log files 的路徑。
MaxDays 代表保存天數,若大於此數值的檔案即刪除。

Step 2:
在 windows command 模式下執行 wscript arch_del.vbs ,測試 c:\temp 目錄下建立時間超過 30 天的檔案是否已被刪除。

Step 3:將該指令列入系統排程,每日便可自動刪除 archived log files。

沒有留言:

張貼留言