Calendar Server 包含刪除記錄資料庫 (ics50deletelog.db),可以儲存已刪除的事件和待辦事項 (工作)。
在以前的發行版本中,Calendar Server 不維護已刪除事件和工作的資料庫。使用者不得不儲存事件或待辦事項 (工作) 的唯一識別碼 (uid) 或週期性識別碼 (rid) 來確定哪些元件已被刪除。這一限制直接影響到使用 WCAP 指令開發用戶端使用者介面 (UI) 的各個安裝。為解決此限制,已建立刪除記錄資料庫。
本章說明以下內容:
Calendar Server 自動在 csdb 目錄中建立刪除記錄資料庫 (ics50deletelog.db) 及其他 Calendar Server 資料庫檔案。Calendar Server 會將事件和待辦事項寫入刪除記錄資料庫,如下所示:
非週期性事件和待辦事項
刪除某個非週期性事件或待辦事項時,Calendar Server 會將其從事件資料庫 (ics50events.db) 或待辦事項資料庫 (ics50todos.db) 中移除,然後將其寫入刪除記錄資料庫 (ics50deletelog.db) 中。
週期性事件和待辦事項
刪除某個週期性事件或工作的個別實例時,Calendar Server 會將該事件或工作的每個已刪除實例寫入刪除記錄資料庫 (ics50deletelog.db) 中。
刪除某個週期性事件或待辦事項的所有實例時,Calendar Server 會將主要元件從事件或待辦事項資料庫中刪除,然後將其寫入刪除記錄資料庫中。刪除記錄資料庫中的主要元件包含 rrules、rdates、exrules 以及 exdates 週期性參數。
若要從刪除記錄資料庫傳回項目,請以展開模式或壓縮模式使用 fetch_deletedcomponents WCAP 指令:
展開模式 (recurring = 0)
如果 recurring 參數為 0,則 fetch_deletedcomponents 傳回符合條件的週期性事件之所有實例,但不傳回週期性事件的主要元件。
壓縮模式 (recurring = 1)
如果 recurring 參數為 1,則 fetch_deletedcomponents 傳回非週期性事件以及所有週期性事件的主要元件,但不傳回個別週期性事件。
如果刪除週期性事件鏈中的所有實例,則主要元件傳回 dtstart、dtend、rrules、rdates、exrules、exdates 和 uid 參數。
此外,fetch_deletedcomponents 不傳回與仍處於使用中的已刪除週期性實例相關的主要元件。若要傳回使用中的主要元件,請使用 fetchcomponents_by_lasmod WCAP 指令。fetch_deletedcomponents 指令應與 fetchcomponents_by_lasmod 指令配合使用。
如需有關 WCAP 指令的更多資訊,請參閱「Sun Java System Calendar Server 6 2005Q4 Developer’s Guide」。
Calendar Server 提供自動清除刪除記錄資料庫和手動清除刪除記錄資料庫。
如果願意,您可以讓 Calendar Server 自動清除刪除記錄資料庫中的項目。
下表說明 ics.conf 檔案中控制自動清除的參數。
表 18–1 用於自動清除刪除記錄資料庫的配置參數
參數 |
說明 |
---|---|
啟用 ("yes") 或停用 ("no") 自動清除刪除記錄資料庫 (ics50deletelog.db) 項目。 預設為 "no"。 |
|
指定自動清除刪除記錄資料庫 (ics50deletelog.db) 中項目的間隔時間 (以秒為單位)。 預設為 60 秒。 |
|
指定一個時間 (以秒為單位),清除刪除記錄資料庫 (ics50deletelog.db) 中早於此時間的項目。 預設為 86400 秒 (1 天)。 |
例如,若要使 Calendar Server 每隔五分鐘 (600 秒) 自動清除一次刪除記錄資料庫中超過兩天 (172800 秒) 的項目,請如下設定自動清除刪除記錄資料庫中的參數:
service.admin.purge.deletelog="yes" caldb.berkeleydb.purge.deletelog.interval=600 caldb.berkeleydb.purge.deletelog.beforetime=172800
設定這些參數後,重新啟動 Calendar Server 以使新值生效。
若要手動清除刪除記錄資料庫 (ics50deletelog.db ) 中的項目,請使用 cspurge 公用程式:
cspurge -e endtime -s starttime
其中 endtime 和 starttime 指定開始和結束時間,且為祖魯時間 (也就是 GMT 或 UTC)。
若要執行 cspurge,您必須以執行 Calendar Server 的使用者與群組身份 (預設值為 icsuser 和 icsgroup) 或以 root 身份登入。
例如,清除從 2003 年 7 月 1 日到 2003 年 7 月 31 日的項目:
cspurge -e 20030731T235959Z -s 20030701T120000Z
如需更多資訊,請參閱cspurge。
下表列出了支援刪除記錄資料庫 (ics50deletelog.db) 的 Calendar Server 公用程式:
表 18–2 支援刪除記錄資料庫的公用程式
公用程式 |
說明 |
---|---|
cspurge |
允許手動清除刪除記錄資料庫中的項目。 |
csbackup 和 csrestore |
支援刪除記錄資料庫的備份與復原。 |
csstats |
報告刪除記錄資料庫統計資料。 |
csdb |
支援對刪除記錄資料庫的重建、回復以及檢查作業。 |
cscomponents |
列出 (唯讀) 刪除記錄資料庫中的項目數。 |
如需更多資訊 (包括這些公用程式的語法),請參閱附錄 DCalendar Server 指令行公用程式參照。