Sun Java logo     上一個      目錄      索引      下一個     

Sun logo
Sun Java System Calendar Server 管理指南 

第 14 章
管理 Calendar Server 資料庫

本章說明如何管理 Sun Java™ System Calendar Server 資料庫,包括以下小節:

如需有關備份及復原行事曆資料庫的資訊,請參閱第 15 章 「備份與復原 Calendar Server 資料」


Calendar Server 資料庫檔案

依預設,會在以下目錄中建立與維護 Calendar Server 資料庫檔案 (以及 cld_cacheldap_cache 目錄):

cal_svr_base/var/opt/SUNWics5/csdb

如果願意,您可以透過執行 Calendar Server 配置程式 (csconfigurator.sh) 來指定其他目錄。如需有關此配置程式的資訊,請參閱第 3 章 「配置 Calendar Server」

表格 14-1 說明行事曆資料庫檔案:

表格 14-1 Calendar Server 資料庫檔案

檔案

說明

ics50calprops.db

所有行事曆的行事曆特性。包括行事曆 ID (calid)、行事曆名稱、存取控制清單 (ACL) 及所有者。

ics50events.db

所有行事曆的事件。

ics50todos.db

所有行事曆的待辦事項 (工作)。

ics50alarms.db

所有事件和待辦事項 (工作) 的警示。

ics50gse.db

群組排程引擎 (GSE) 之排程請求的佇列。

ics50journals.db

行事曆的日誌。在目前發行版本中未實現日誌。

ics50caldb.conf

資料庫版本識別碼。

ics50recurring.db

週期性事件。

ics50deletelog.db

刪除的事件和待辦事項 (工作)。另請參閱第 16 章 「管理刪除日誌資料庫」

csdb 公用程式透過行成以下三個邏輯資料庫來管理 Calendar Server 資料庫檔案:


使用 csdb 來管理行事曆資料庫

本小節說明如何使用 csdb 公用程式執行以下功能:

若要執行 csdb 公用程式,您必須以具有系統 (執行 Calendar Server 的系統) 管理權限的使用者身份登入。如需更多資訊,請參閱附錄 D 「Calendar Server 指令行公用程式參照」

指定目標資料庫

csdb 公用程式的 -t 選項可讓您指定目標資料庫:

如果您不包含 -t 選項,除 checkrebuild 指令僅在行事曆資料庫中作業之外,csdb 將在所有三個資料庫中作業。

檢視行事曆資料庫狀態

若要檢視行事曆資料庫的狀態,請使用 csdb 公用程式 list 指令。Calendar Server 可以執行,也可以停止。

請使用 -t 選項指定目標資料庫 (caldbsessdbstatdb);否則,csdb 將在所有三個資料庫中作業。

例如,若要檢視所有資料庫的資料庫狀態和統計資料:

csdb list

若要在詳細模式下檢視有關目前目錄中行事曆資料庫的資訊:

csdb -v -t caldb list

回復損毀的資料庫

用於回復損毀的資料庫的公用程式視資料庫的類型而定:

刪除行事曆資料庫

若要刪除行事曆資料庫,請使用 csdb 公用程式 delete 指令。必須停止 Calendar Server。

使用 -t 選項指定目標資料庫 (caldbsessdbstatdb);否則,csdb 將刪除所有三個資料庫。

例如,若要刪除行事曆資料庫:

csdb -t caldb delete

csdb 公用程式會在刪除資料庫之前發出警告。


偵測資料庫損毀以及從中回復

可導致行事曆資料庫損毀的原因有以下多種:系統資源競爭、硬體故障、應用程式錯誤、資料庫故障,當然,還有人為的錯誤。本小節說明如何偵測行事曆資料庫損毀以及如何回復損毀的資料庫,包括:

將資料遺失減到最少

無論回復程序有多好,都最好提早偵測資料庫損毀,以將資料遺失減到最少。若要偵測可能的資料庫損毀,請遵循以下建議進行:

檢查與重建行事曆資料庫

csdb 公用程式指令包括以下指令,用來檢查行事曆資料庫並在必要時重建行事曆資料庫 (caldb):

請在發生任何可能導致資料庫問題的事件之後執行 check 指令 (及 rebuild 指令,如果必要)。例如,如果您的站點遇到電源故障,請執行 check 指令以決定是否發生了任何資料庫損毀。

csdb 公用程式還包括用來回復損毀階段作業或統計資料庫的 recover 指令。如果您的行事曆資料庫發生損毀,請使用 checkrebuild,而不要使用 recover


小心

執行這些指令之前,請使用 csbackup 公用程式 (或其他備份公用程式) 備份您的行事曆資料庫。


檢查行事曆資料庫是否損毀

check 指令掃描行事曆資料庫,並檢查行事曆特性 (calprop) 事件和待辦事項 (工作) 是否損毀。如果 check 指令找到無法解決的不一致情況,它會在輸出中報告該情況。

您應該定期地執行 check 指令,以檢查您的行事曆資料庫有沒有不一致性。例如,考量在每次資料庫備份之後執行 check。然而,如果您已經知道損毀了行事曆資料庫,則無需執行 check 指令。請繼續進行並重建損毀的資料庫。

檢查行事曆資料庫是否損毀

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
  2. Calendar Server 可以執行,也可以停止;然而,如果可能,請停止 Calendar Server。
  3. 如果您尚未建立行事曆資料庫的複本,請建立複本。僅複製資料庫 (.db) 檔案。您無需複製任何共用 (__db.*) 檔案或日誌 (log.*) 檔案。
  4. 移至 cal_svr_base/opt/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
  5. cd /opt/SUNWics5/cal/sbin

  6. 在行事曆資料庫的複本中執行 check 指令:
  7. ./csdb check dbdir > /tmp/check.out 2>&1

    如果您未指定 dbdircheck 將使用目前目錄中的資料庫。

    check 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdoutstderr) 重新導向至一個檔案 (如範例所示)。

  8. check 已完成時,請複查輸出檔案。如果您的資料庫發生損毀,請執行 rebuild 指令。

重建行事曆資料庫

rebuild 指令掃描行事曆資料庫,並檢查行事曆特性 (calprop) 事件和待辦事項 (工作) 是否損毀。如果 rebuild 指令找到不一致性,它會在 cal_svr_base/opt/SUNWics5/cal/sbin/rebuild_db 目錄中產生重建行事曆資料庫 (.db 檔案)。

不帶有 -g 選項的 rebuild 指令重建除群組排程引擎 (GSE) 資料庫之外的所有資料庫。如果還要重建 GSE 資料庫,請包含 -g 選項。

若要決定 GSE 資料庫是否有任何項目,請執行 csschedule -v list 指令,然後使 GSE 在您執行 rebuild 指令之前完成那些項目的處理。

重建行事曆資料庫

  1. 以具有安裝 Calendar Server 的系統之管理權限的使用者身份登入。
  2. 停止 Calendar Server。
  3. 如果您尚未建立行事曆資料庫的複本,請建立複本。複製資料庫 (.db) 檔案和日誌 (log.*) 檔案。您無需複製任何共用 (__db.*) 檔案。
  4. 移至 cal_svr_base/opt/SUNWics5/cal/sbin 目錄。例如,在 Solaris 作業系統上,輸入:
  5. cd /opt/SUNWics5/cal/sbin

    注意如果 sbin 目錄的磁碟空間不足,請在其他目錄中執行 rebuild 指令。

  6. 在行事曆資料庫的複本中執行 rebuild 指令:
  7. ./csdb rebuild /tmp/db /tmp/

    如果您未指定資料庫目錄,rebuild 將使用目前目錄中的資料庫。/tmp/ 參數指定重建資料庫的目標目錄。

    如果還要重建 GSE 資料庫,請包含 -g 選項。

    rebuild 指令可產生大量資訊,因此請考量將所有輸出 (包括 stdoutstderr) 重新導向至一個檔案。


    請始終使用最新的備份複本重建您的行事曆資料庫。

    然而,如果您的資料大量遺失,而您已經定期備份了資料庫並有多個複本可用,請從最新的複本到最舊的複本進行重建。(唯一的缺點是已刪除的行事曆元件將重新出現在重建資料庫中。)

    例如,如果您有三組備份行事曆資料庫檔案,分別在目錄 db_0601db_0615db_0629 中,請按以下序列執行 rebuild 指令:

    ./csdb rebuild db_0629
    ./csdb rebuild db_0615
    ./csdb rebuild db_0601

    然後 rebuild 指令會將重建資料庫寫入至 cal_svr_base/opt/SUNWics5/cal/sbin/rebuild_db 目錄。


  8. rebuild 已完成時,請複查 rebuild.out 檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應該是:
  9. Calendar database has been rebuilt

  10. 驗證在先前步驟中的重建成功之後,請從 rebuild_db 目錄將重建資料庫 (.db) 檔案複製到您的產品資料庫。
  11. 如果您有任何損毀資料庫的共用 (__db.*) 檔案或日誌 (log.*) 檔案,請將其移至其他目錄。
  12. 重新啟動 Calendar Server。

使用傾印和載入程序回復行事曆資料庫

如果 csdb rebuild 指令失敗,則下一個步驟為使用傾印和載入程序嘗試回復損毀的資料庫。傾印和載入程序使用 Berkeley 資料庫 db_dumpdb_load 公用程式,Calendar Server 在以下目錄中提供這些公用程式:

cal_svr_base/opt/SUNWics5/cal/tools/unsupported/bin

db_dump 公用程式使用與 db_load 公用程式相容的格式,來讀取資料庫檔案並將資料庫項目寫入至輸出檔案。

如需有關 db_dumpdb_load 公用程式的文件,請參閱 Sleepycat Software 網站:

http://www.sleepycat.com/docs/utility/index.html

您使用 db_dumpdb_load 公用程式回復資料庫成功與否取決於您資料庫的損毀程度。在成功地回復資料庫之前,您可能需要嘗試多個 db_dump 選項。然而,如果您的資料庫嚴重損毀,回復也許是不可能的,您可能需要復原至資料庫的最後一個完好備份。

行事曆資料庫版本

在執行傾印和載入程序之前,行事曆資料庫必須為 Berkeley DB 3.2.9 版,或更高版本。如果您的版本是舊版本,請首先執行 cs5migrate 公用程式以對您的行事曆資料庫進行升級。

如需 cs5migrate 的最新版本,請致電 Sun 技術支援人員。

執行傾印和載入程序

  1. 在 Solaris 作業系統上,以執行 Calendar Server 時所用的使用者與群組身份登入,例如 icsusericsgroup,或以超級使用者 (root) 身份登入。
  2. 如有必要,請停止 Calendar Server。
  3. 使用一個公用程式 (例如 csbackup、Sun StorEdge Enterprise Backup™ 軟體或 Legato Networker® 備份損毀的資料庫。如需更多資訊,請參閱第 15 章 「備份與復原 Calendar Server 資料」
  4. 使用 db_dump 公用程式傾印每個損毀的資料庫檔案。資料庫檔案包括 ics50calprops.dbics50journals.dbics50alarms.dbics50events.dbics50todos.dbics50gse.db
  5. 請依次使用以下選項執行 db_dump,直到已回復您的資料庫 (或直到您確定無法回復資料庫) 為止:

    • No 選項,用於次要資料庫損毀。
    • -r 選項,用於中度資料庫損毀。
    • -R 選項,用於嚴重資料庫損毀。-R 選項從損毀的資料庫中傾印的資料要比 -r 選項多,包括部分已刪除的記錄。
    • 例如,配合執行 db_dump 指令與 -r 選項:

      db_dump -r ics50events.db > ics50events.db.txt

  6. 使用 db_load 公用程式將輸出檔案載入至新的資料庫檔案。例如:
  7. db_load new.ics50events.db < ics50events.db.txt

    注意如果 db_load 報告的鍵值或資料項目為奇數,請從步驟 4 編輯 db_dump 輸出檔案,並移除奇數鍵值或資料項目。然後再次執行 db_load

  8. 對於其他損毀的資料庫檔案,重複步驟 4步驟 5
  9. 使用 csdb rebuild 指令重建回復的資料庫檔案,如重建行事曆資料庫中所說明。
  10. 重建已完成時,請複查輸出檔案中的輸出。如果重建成功,rebuild.out 檔案中的最後一行應該是:

    Calendar database has been rebuilt

如果 csdb rebuild 指令失敗,請返回至步驟 4,並使用下一個 db_dump 選項 (-r-R) 傾印您的資料庫。

如果 db_dump -R 選項未回復損毀的資料庫,請與 Sun Microsystems 技術支援代表或銷售客戶代表聯絡,以尋求援助。您可能需要復原至資料庫的最後一個完好備份。


最佳慣例:行事曆儲存管理與維護

每天執行以下預防程序:



上一個      目錄      索引      下一個     


Copyright 2004 Sun Microsystems, Inc. 。版權所有。